org-mode写cnblogs
Table of Contents
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的代码做了一些简单的修改。
修改内容:
- 原代码,在每次连接cnblogs前,在设置cnblogs的个人信息时,都会像苍蝇一样问我,是不是要把
cnblogs里的博文下载下来,下载的博文是以博文ID命名的html内容文件。个人感觉没有太大的意义 。 而每次都得输入: no. 再次声明: 我懒! 所以我把下载博文的代码给删除了。
- 每次要发布博文之前,都要手动设置自己的博客信息(blog id/ 登录名/密码)。 就像老婆让我睡觉
前一定要洗澡一样烦(不会被老婆看到吧~哈哈), 所以我修改了原代码,将个人信息的相关变量单独配置,
以后每次写完org文件,直接 C-c c p
就可以直接发布,而不用每次都要先输入一次个人信息。而如果
没有配置,修改以后的程序会提醒你输入。
- 因为 "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/") (require ‘cnblogs) (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了。