用Emacs管理博客园博客

大概一年前就找各种Emacs扩展,希望可以直接将博客发布到博客园。但很无奈,各种失败。自学着Elisp写了个扩展,如果有人需要(估计也没几个人),可以到这里下载。

本扩展提供一个用来管理博客的cnblogs-minor-mode副模式。可以用来发布org文件或者html文件。由于作者使用的是org-mode来写博客,所以直接发布html可能会有很多问题。

更新

博客园加上了FileData的type,以前的代码无法发图片了,更新下。github无法访问了,代码放在了gitcafe上。天朝,无耐!

已经实现的功能

  • 发布博文
  • 删除博文
  • 更新博文
  • 包含图片

    博文中包含的本地图片自动上传,并在发布时自动替换地址

  • 支持标签

    标签写在 KEYWORDS 后面,多个标签之间用","分开。

  • 支持分类

    分类写在 CATEGORIES 后面,多个分类之间用空格隔开,这个关键字org-mode的模板里面没有,自己加上去,以后会完善分类的输入方式,像org-mode输入tag那样输入,但这个太难了,寒假里再搞。

  • 摘要

    写在DESCRIPTION关键字后面。如果为空的话,按博客园的默认设置,会将正文的一部分作为摘要。

使用方法

配置

下载之后将其中的el文件放到一个目录中(如~/.emacs.d/misc/),然后将这个目录加入到load-path中:

(add-to-list 'load-path
             "~/.emacs.d/misc/")

然后再:

(require 'cnblogs)

使用

先设置博客M-x cnblogs-setup-blog,其中blog ID就是博客地址中的那个博客名称(如我的就是 Open_Source )。之后询问是否将网上的博客同步到本地,如果博客较多,可能需要很长时间。然后可以M-x cnblogs-import-file或者cnblogs-import-folder将本地的博客文件(即你的org源文件或者html源文件)导入,导入过程中遇到同名的博客会问是否将这个源文件与网络上的博客关联起来。

启动cnblogs副模式可以M-x cnblogs-minor-mode,也可以自动启动:

(add-hook 'org-mode-hook (lambda ()
                           (cnblogs-minor-mode)))

功能

快捷键 命令 功能 备注
C-c c c cnblogs-get-categories 将分类获取到本地 目前没什么实际用处
C-c c d cnblogs-delete-post 删除博文 常用
C-c c e cnblogs-edit-post 更新博文 常用
C-c c g cnblogs-get-post 获取指定ID的博文 估计用户不会用到
C-c c p cnblogs-new-post 发布博文 常用
C-c c r cnblogs-get-recent-posts 获取最近N篇博文 一般只在配置扩展时使用
C-c c s cnblogs-save-draft 将草稿保存到服务器 不知道有什么实际用途
C-c c u cnblogs-get-users-blogs 获取用户信息 对用户没什么用处

一个示例

注意分类和Tags的写法。 示例

更多细节

这里是一些细节问题,可能你会感兴趣。

账户配置

可以通过M-x customize来配置一些用户信息。也可以在.emacs中直接修改。其中 cnblogs-media-object-suffix-list 是博客园支持的媒体文件类型,基本上只支持图片,视频什么的好像不支持。而 cnblogs-src-file-extension-list 是本扩展支持的源文件类型,目前只支持html和org文件。变量cnblogs-file-root-path默认是家目录下的".Cnblogs/",可以修改成任意的目录,这里主要是存放一些扩展要用到的东西,对于用户来说基本上没用。另外, 密码是明文存放的

使用细节

扩展可以解析org文件的一些信息,比如文章题目,时间,分类, 并将Keywords后面的信息作为博文分类, 多个分类之间可以有一个或者多个空白符,也可以是中文格式的空白符。 目前不支持标签(tags)功能,以后可能会将keywords改为标签,再另定义分类关键字。 另外如果是中文环境,发布时间可能出问题,比如英文环境中时间格式是"2012-09-13 Thu",这个没问题,但在中文环境中是"2012-09-13 六",这就会出问题,可以手动修改它,也可以不修改,因为博客园的发布时间服务器端决定的,不是由用户决定的。

建议建个“未分类”分类,这样忘记分类的随笔都会归到这个分类中去,方便查看。

TODOs

编辑细节及功能 [28%]

TODO 自动补全分类

DONE 导入文件或者目录时自动补全功能

DONE 支持tags

TODO 支持w3m预览

TODO 修改账户名和密码的提供方式,使之更优美

TODO 关联twitter

TODO 关联slideshare

感谢天朝。

IDE [0%]

TODO cnblogs-manager 主模式

TODO 状态标识

TODO toolbar

一些技巧

  • up and home 设置为 /blogid 或者 ../../../ 就可以指向自己的博客根目录。

声明

由于我用的系统是Linux,对于Win的情况不太了解,如果是用的Cygwin下的Emacs还好,如果是Emacs for Win,可能会有问题。

你可能感兴趣的:(emacs)