Archive for 四月, 2008

Quack-mode的一些设置

(setq quack-pltcollect-dirs '("/usr/lib/plt/collects" "/usr/share/plt"))

Debian下好像doc并没有放在/usr/lib/plt/collects中,所以需要设置一下quack-pltcollect-dirs。

(setq quack-local-keywords-for-remote-manuals-p nil)

这个选择可以让quack先搜索本地的keywords文档。

(setq quack-fontify-style 'emacs)

Quack自己定义了一套色彩方案,大概是仿照DrScheme的,但不是很喜欢,可以通过上面的选项设置默认使用Emacs的配色。

Comments

Emacs Tango color theme

color-theme里的那些配色都不怎么喜欢,所以之前用tango的配色方案改出一个,现在稍微修改了一下,感觉还不错。

截图:
emacs_tango.png

代码可以从这里下载。

Comments

VIM & Lisp & Screen配合使用

主要需要完成的功能就是在VIM中将代码(比如一个defun)通过screen传到另一窗口的程序(比如SBCL)中执行。

之前用过一个通过python-pexpect来包装sbcl,再通过pipe传入的脚本,也是比较方便的。但那里的包装代码看起来比较复杂,而这个用screen的方法比较简洁。

当然,这方法不是我想出来的。:P,我只是稍微修改了一下。参考了下面两篇文章:
Like Slime, for Vim
Scripting screen for fun and profit…

方法很简单,用screen建一个名为sbcl的窗口,然后将下面的代码放到~/.vim/ftplugin/lisp.vim中。(下面的代码同时也贴出了其他一些Lisp的设置和按键绑定)。之后\rr可以求值一个表达式,而\rx则是load当前buffer。

setl expandtab
setl shiftwidth=1
setl foldmethod=indent
setl foldnestmax=1
"setl lispwords=def,mac,fn,with,when,if

nmap  [[ [(
nmap  ]] ])
nmap  [{ 99[(
nmap  [} 99])
nmap  == 99[(=%

nmap    rr      :call VimLisp_eval_defun()
nmap    rx      :call VimLisp_send_sexp("(load \"" . expand("%:p") . "\")\n")

fun! VimLisp_send_sexp(sexp)
       let ss = escape(a:sexp, '\"')
       call system("screen -p sbcl -X stuff \"" . ss . "\n\"")
endfun

fun! VimLisp_eval_defun()
       let pos = getpos('.')
       silent! exec "normal! 99[(yab"
       call VimLisp_send_sexp(@")
       call setpos('.', pos)
endfun

当然,这是一个通用的方法,完全可以使用到其他一些语言的interpreter上。

Comments

推荐一个字体Droid Sans Mono

一直苦于找不到舒服的编程字体,暂时找到这个,用了几天,感觉还不错。

这里 看到的对这个字体的介绍,是google的Android项目中带的字体。在上面的链接上可以下到这个字体。只可惜没有粗体。

在Linux下的渲染效果还不错。

URxvt截图

Comments

Evince和dbus

很长一段时间都在用ArchLinux,但最近又重新拿起Lisp,学这玩意儿还是在Debian方便,所以又开始用它了。

发现在Debian中,有个evince-gtk包,真不错,不依赖于gnome,功能比epdfview要强大。最重要的是有记住最近打开文档位置的功能。但明明官方说明有这功能,但我这就是不好使。

查看错误报告,好像有几个Warning是和dbus有关的东西。google之,又好像于openbox有关,最后落到dbus-launch身上了。原来是我没有安装dbus-x11这个包。所以没有dbus-launch这个命令,进而Evince没那个功能了。将dbus-x11这包补上就可以了。

Comments