HICK 者,乡巴佬也

Emacs 转换文件编码成 utf8

Posted in: Emacs&Elisp — Hick @ 2008/07/07 13:02:57 Comments (0)

之前都是笨笨的打开 ultraedit 来转换文件编码,刚才突然想起来 Emacs 应该有这个功能,搜索了一下,有人写 “C-x f utf-8 C-x C-s” 可以,但是实际上至少在 Emacs 22 中无效。跑到 Emacs Wiki 上搜索了下,找到正解了: C-x C-m f utf-8-unix RET 即可把当前文件转换为 utf-8 编码。
另外另存为指定编码的操作(会提示当前文件编码): “C-x C-m c RET C-x C-w RET”。

更多信息参考 http://www.emacswiki.org/cgi-bin/wiki/ChangingEncodings
http://www.emacswiki.org/cgi-bin/wiki/UnicodeEncoding

yasnippet-mode

Posted in: Emacs&Elisp — Hick @ 2008/07/06 12:40:24 Comments (0)

补记:看了下 Emacs Wiki 上 MsfAbbrev-mode 的介绍好象是同样的结构。

跟 snippet-mode 一样是模仿 TextMate 的自动完成功能的 emacs mode ,smart-snippet 和 yasnippet 的作者都是 http://pluskid.lifegoo.com 的 pluskid ,好象也是 ann@emacs@smth 。

snippet-mode 的信息可以在 http://www.emacswiki.org/cgi-bin/wiki/SnippetMode 看到并找到下载地址,源文件中有详细的使用说明。之前使用 snippet 做的 doc-mode 下的定义:

(add-hook 'doc-mode-hook
  '(lambda ()
     (setq-default abbrev-mode t)
     (snippet-with-abbrev-table
       'local-abbrev-table
       ("xh1" . "= $${文章标题} =\nHick <HickWu@qq.com>\n\n$.")
     )
     (snippet-with-abbrev-table
       'local-abbrev-table
       ("xh2" . "== $${一级标题} ==\n\n$.")
     )
     (snippet-with-abbrev-table
       'local-abbrev-table
       ("xh3" . "=== $${二级标题} ===\n\n$.")
     )
     (snippet-with-abbrev-table
       'local-abbrev-table
       ("xc" . "------------\n$$\n------------\n")
     )
))

在一个 buffer 中进入 doc-mode 以后,通过输出xh1后按 tab 即可展开相应 snippet 。

yasnippet 可以文件形式定义 snippet ,http://code.google.com/p/yasnippet/ 下到源代码以后,然后把压缩包中的 snippet 放到用户 HOME 目录以后这样设置 .emacs 文件:

(require 'yasnippet)
(yas/initialize)
(yas/load-directory "~/snippets/")

snippet 目录下的 text-mode 下定义各个模块的 snippet ,比如 html-mode 下有一个文件 div ,也就是该模式下 div 的 snippet 定义,进入 html-mode 以后按 div + TAB 即可扩展为 div 的 snippet 。具体定义语法比较简单,参见 http://pluskid.lifegoo.com/upload/project/yasnippet/doc/define_snippet.html 。下面是语法的示例和摘要:

#contributor : pluskid <pluskid@gmail.com>
#name : __...__
# --
= ${1:文章标题} =
`(format-time-string "%y/%m/%d")`

. 通过目录层级关系来共享 snippet 定义,text-mode 目录下的 time 的定义在所有子目录对应 mode 中都可以使用。

. 字符 # 开头的为一些 snippet 的辅助 meta 信息,name 定义 snippet 的简短描述,contributor 定义作者, — 为注释 ,condition 中可以定义简单的 elisp 代码

. 通过 yas/define-snippets 可以以 elisp 代码的方式直接定义 snippet

. 同一组键可以对应多个 snippet (内置 dropdown-list.el 实现选择提示)

. 通过反引号可以嵌入 elisp 代码

. TAB 和 S-TAB 的切换

. 对 snippet 输入内容可以定义 elisp 函数进行再处理, 比如首字母大写

刚才也初步试了下 windows 下模仿 TextMate 的另外两个软件 E-texteditor 和 intype ,除了 snippet 功能也没有特别出彩的,两个软件都不怎么稳定,前者没用几分钟就报错,后者中文支持不太好。

vim 下也有类似的 snippet 功能(去 vim 官方或者 google 搜索 snippet),没有试过,看了几个 demo 效果都不是十分满意。

tar: Error exit delayed from previous errors

Posted in: 生活流水 — Hick @ 2008/07/05 17:13:12 Comments (2)

非技术相关内容停止更新,转到 QQ空间

这个 blog 被注入一段莫名其妙的字符串有几个月了,一直比较忙,没时间照顾。主机上操作不便, tar 包的时候报错: tar: Error exit delayed from previous errors 。 看起来有些不知所云,由于多层错误程序退出? 搜索了下没有找到可用信息。发现有个子文件夹竟然没有读权限,chmod 以后,再次 tar 时 ok 了。

几个月不来这里照镜子,都有点不认识 hick 了 …

嘿嘿,可贵的是,激情一直在燃烧。