第二基地

October 27, 2005

又对common lisp感兴趣了

Filed under: linux, program, lisp

前段时间看了点elisp,改了几个函数让它们符合我的习惯,也初步体会到了fp的魅力
不过elisp只针对于emacs,离开了emacs就不行了,于是想学学common lisp了
今天照着水木的帖子把clisp环境搭了起来,先apt-get install cmucl binfmt-support
然后建个bash脚本:
#!/bin/sh
[ $1 ] && lisp -quiet -eval "(compile-file "$1")(quit)"
chmod a+x ${1%.lisp}.x86f

用这个脚本就可以编译.lisp的源程序
还下了几本书,有空好好看看
感觉lisp语言是很有前途的,虽然现在用的人还不算很多
即使不考虑这些,多体验一种编程风格,倒也是可以自娱一下

October 26, 2005

模拟鼠标点击

Filed under: linux, fvwm

fvwmbuttons有一个很好的功能是可以把pager啊buttons啊之类的玩意儿收起来,或者再放出来。
以前照着王垠的说明弄过,但是用fvwm就应该发挥它的优势,老是拿鼠标biajibiaji地点岂不是很郁闷?但是那时候我又不知道怎么可以用键盘来控制被buttons作为panel的模块的收放,后来就去掉了,让它们一直放在桌面上好了。
不过今天又想把桌面变得再简洁点,于是想用键盘来实现上面说的功能。
google了几分钟,在fvwm faq上找到答案了:
FakeClick是用来实现键盘模拟鼠标点击事件的,为此可以定义一个函数
AddToFunc Press_FvwmButtons
+ I SetEnv pointer_x $[pointer.x]
+ I SetEnv pointer_y $[pointer.y]
+ I Next ($1, CirculateHit) WarpToWindow $2 $3
+ I FakeClick depth 1 press $0 release $0
+ I WindowId root WarpToWindow $[pointer_x]p $[pointer_y]p

这个函数先把当前鼠标指针的位置保存下来,然后移到指定的FvwmButtons,用FakeClick模拟点击事件后再把指针返回到原来的位置
现在举个例子,假如我有一个FvwmButtons叫MainPanel,它把一个FvwmPage作为一个panel,在MainPanel上点击鼠标就可以把FvwmPage展开或者收起,然后我可以这样调用Press_FvwmButtons函数:Press_FvwmButtons 1 MainPanel 50 50
其中1表示鼠标的左键,MainPanel就是FvwmButtons的名字,50和50是鼠标指针移动到FvwmButtons的位置比例
这样就可以实现模拟鼠标点击,如果再把Press_FvwmButtons绑定到一个快捷键上,就可以实现用键盘来控制panel的展开或收起

October 25, 2005

教训啊

Filed under: linux, system

这次rm了/var/lib下的东西,应该吸取教训了:
.bashrc:
alias rm=’rm -i’
这样每次删除都会问一下,虽然是麻烦点,但是总比误操作强
顺便就解决了一下历史遗留问题:
以前照着网上的资料把bash的提示符弄成彩色的了,有两个好处,第一,在输出一大堆信息的时候,往回翻时可以很方便地找到提示符的位置,这样就知道输出的信息是从哪儿开始的了,第二,当然是好看了。
但是之前在我的工作目录很长的时候,命令会超出一屏的长度而自动换行,这时候问题就出来了,当到第二行后,我用left回到上一行会出现定位的问题,具体也说不清楚,就是很混乱,根本就不知道现在的光标是在哪个字符上。那时候我还以为这是用ascii控制符带来的必然的副作用。
后来一想,怎么可能,这么优秀的软件不会有这种低级bug的,尤其是它经过了这么多年这么多人的考验。于是又找资料,终于发现应该用\[和\]把ascii控制符括起来,这样就告诉bash在计算光标位置的时候把方括号里的内容忽略掉,就不会出现刚才说的混乱的情况了。
顺便提一下,ascrii控制符这样表达:\033[xx;xxm,xx是数字,代表颜色,以及一些乱七八糟的东西,比如下划线之类的

debian的tex包太郁闷了

Filed under: linux, tex

哦,不是包郁闷,是我郁闷。
前两天tetex升级了,我也没想什么就dist-upgrade了,结果……
tetex-bin就总是装不上。可这是debian啊,它装不上我的apt就老是报错,还影响我装别的包,于是前天就想把它弄好。开始在google搜,然后又去水木看,都没找到有用的东西,最后……在我想看/var/lib下的东西的时候,实在是懒得打目录了,于是up啊up,up到一个有/var/lib目录的命令,没看就ret了,然后才发现那个命令是rm……
悲剧就这样发生了,无奈。
昨天把/etc备份了一下,/home本来就在一个单独的分区,重装还挺快的,美化也已经轻车熟路了,然后还是装tetex,又装不上,说是无法删除/var/lib/texmf/web2c/*fmt,没有这个文件目录,我一看,倒还真是没有。那没有就没有,反正你要删掉的,继续装不就得了,白痴不白痴么。
然后我就戏弄了它一回,在/var/lib/texmf/web2c/下vim了个123fmt内容是123,保存,再装,这个傻x脚本就高高兴兴地把tetex-bin装上了:(
反正我就是觉得这次包的升级有很多问题,后来也是少很多文件,我根据它的提示一个一个地从网上下,后来才搞定的,弄到5点多才睡,郁闷。
有一个倒是要记一下,就是当fmtutil-sys或者updmap-sys提示找不到配置文件的时候,不妨先texhash一下,应该就能找到了

October 15, 2005

关于自动换行显示的问题,也就是truncate

Filed under: linux, emacs

我用ecb,edit窗口我一直是non truncate的,但是不知道那些ecb windows和speedbar window怎么才可以自动换行。于是先从.emacs里把控制edit window的truncate的var找了出来,是truncate-lines,然后C-h v ecb- TAB,这样会出来一个complete window,然后跳进去,C-s,找truncate,果然被我找到了,ecb-tree-truncate-lines和ecb-truncate-long-names,把这两个都设置成nil,发现ecb的d,s等窗口都可以自动换行了,但是speedbar还是不行,找了半天似乎也没有对应的变量,于是google之,还是没找着,最后发现,先speedbar-get-focus,然后toggle-truncate-lines就可以让speedbar自动换行,于是写个函数:
(defun my-speedbar-toggle-truncate ()
(interactive)
(speedbar-get-focus)
(toggle-truncate-lines -1)
(speedbar-get-focus))

把my-speedbar-toggle-truncate hook到ecb-activate-hook上就可以让ecb-speedbar自动换行了






















Get free blog up and running in minutes with Blogsome | Theme designs available here