org-mode写cnblogs

Posted halberd-lee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了org-mode写cnblogs相关的知识,希望对你有一定的参考价值。

org-mode写cnblogs

org-mode写cnblogs

1 为什么用org-mode写博客

我最开始用Emacs, 是因为org-mode。这是一个专注于写,而让我忽略展示结果的一种写作方式。为 什么这么说?因为所有内容的格式都是可定制的。按照自己喜欢的格式编写一些格式化配置, 就可以 把org-mode写的内容输出到拥有特定格式的文件,比如html、pdf,这两种常用的文件类型。

除此外,org-mode还可以做计划(TODO list) 等等。这些对于日常的工作都是非常有帮助的。

我喜欢上了org-mode.

与此同时,我又写技术类博客,把自己总结的内容发布到网络上,以飨读者。而很多时候,为了在博客 上格式化自己的文档,又是一件让我兴奋到五体投地的事情。

我尝试把导出成html文件的内容直接copy进博客,发现有些内容无法copy,或者原本的格式已经面目全非。 然后就研究了下,怎么样能把org-mode的内容直接发布到博客,这样可以保持原有的简约格式。

说白了,最根本的原因就是: 我懒!我懒!我懒!重要的事情说三遍!我不想花太多的时间去对文字图片进行重复格式化

2 说明

org-mode 写博客园的方法,主要 是copy 了huwenbiao GITHUB 的代码, 而他的代码是在GITHUB:hexmode 的基础上 针对cnblogs进行了扩展开发。我按照自己的想法对Open__Source的代码做了一些简单的修改。

修改内容:

  1. 原代码,在每次连接cnblogs前,在设置cnblogs的个人信息时,都会像苍蝇一样问我,是不是要把

cnblogs里的博文下载下来,下载的博文是以博文ID命名的html内容文件。个人感觉没有太大的意义 。 而每次都得输入: no. 再次声明: 我懒! 所以我把下载博文的代码给删除了。

  1. 每次要发布博文之前,都要手动设置自己的博客信息(blog id/ 登录名/密码)。 就像老婆让我睡觉

前一定要洗澡一样烦(不会被老婆看到吧~哈哈), 所以我修改了原代码,将个人信息的相关变量单独配置, 以后每次写完org文件,直接 C-c c p 就可以直接发布,而不用每次都要先输入一次个人信息。而如果 没有配置,修改以后的程序会提醒你输入。

  1. 因为 "huwenbiao"已经很久没有更新代码,所以我从GITHUB:hexmode 上复制了最新的内容。

经过修改后,这个世界安静了。

3 配置方法

  • 下载文件 打开github:huwenbiao, 下载cnblogs.el和metaweblog.el 两个文件,至于另外一个文件xml-rpc.el 请到 GITHUB:hexmode 下载。
  • 如何加载 这些是针对小白的。大牛忽略。

将这三个文件放到你的.emacs.d/cnblogs 中. 然后在init.el中 添加如下代码:

;; for cnblogs.
(add-to-list ‘load-path "~/.emacs.d/cnblogs/")
(requirecnblogs)
(add-hook ‘org-mode-hook (lambda () (cnblogs-minor-mode)))
(setq org-export-show-temporary-export-buffer nil) ;; 据说不加这一行的话,发布博客后光标会跳转到其他的buffer

这样,以后打开org文件时就会自动加载相关的配置。其中的cnblogs-minor-mode 就是用于发布博客的一个mode.

  • 配置个人信息

    打开cnblogs.el 文件,找到 通过defcustom定义的以下三个变量 cnblogs-blog-id –> cnblogs 的blog id 比如网址:https://www.cnblogs.com/halberd-lee 的blog id 就是 halberd-lee cnblogs-user-name –> 登录cnblogs的用户名

cnblogs-user-passwd –> 登录 cnblogs的密码 三个变量后面的值都是Nil , 修改为自己的信息。

找到setq 定义的以上三个变量,并修改为如下内容: 将以上三个变量部分的代码改为如下:

(unless (stringp cnblogs-blog-id )
  (setq cnblogs-blog-id
        (read-string "Your blog ID:" nil nil)))
(unless (stringp cnblogs-user-name)
  (setq cnblogs-user-name
        (read-string "Your username:" nil nil)))
(unless (stringp cnblogs-user-passwd)
  (setq cnblogs-user-passwd
        (read-passwd "Your password:" nil )))
  • 将定义个人信息与发布命令整合至同一个快捷键

在cnblogs.el 中找到

(defun cnblogs-new-post ()
  (interactive)

在(interactive) 下方添加下面一行:

(cnblogs-setup-blog)

这样就将设置个人信息与发布新博客的命令整合到了一起。

再次声明,*我懒!我懒!我懒!* 能用就行了。我就不去改原来的cnblogs了。

Author: halberd.lee

Created: 2019-06-07 Fri 23:27

Validate

以上是关于org-mode写cnblogs的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Org-mode 内联源代码 src_lang 语法高亮?

org-mode 缓冲区 Latex 语法高亮

org-mode 小碎片

如何在 org-mode 中为标题投票?

org-mode

org-mode