- 浏览: 237538 次
最新评论
-
sunyukun8888:
多谢啦!
重新整理后的Oracle OAF学习笔记——离线版本 -
singlespider:
很不错啊,谢楼主
重新整理后的Oracle OAF学习笔记——离线版本 -
000fuli:
000fuli 写道请问各位学长:你们可以下载吗?能下载的烦请 ...
重新整理后的Oracle OAF学习笔记——离线版本 -
000fuli:
请问各位学长:你们可以下载吗?能下载的烦请发一份到fuli.w ...
重新整理后的Oracle OAF学习笔记——离线版本 -
goodscript:
确实是不错的好文章!
重新整理后的Oracle OAF学习笔记——离线版本
文章列表
正则表达式查询
在Emacs中正则表达式查询使用得很广泛。在forward-sentence和forward-paragraph中使用了正则表达式查找定位。正则表达式'regular expression'常被写作'regexp'。
sentence-end的正则表达式
符号sentence-end被绑定到匹配名末的正则式上。
句末通常是用一个句号、问号或者叹号结束的。那么这个正则表达式应该包含下面的字符:
[.?!]
然而,在有些时候句号、问号或叹号也有可能在某个语句的中间,我们并不想在使用forward-sentence的时候跳转到这些符号上去。
习惯上,你可能会在每个句子后面添加空格或 ...
- 2007-07-19 16:26
- 浏览 4588
- 评论(0)
循环和递归
Emacs Lisp有两种方式循环执行语句:使用while循环,或者使用递归。
while
while测试它的第一个参数的值,如果为false,解释器将不会执行语句的body部分。如果为true,解释器将执行语句的body部分,然后重新测试第一个 ...
Yanking Text Back
当使用'kill'命令剪切文本时,可以用'yank'命令恢复它。被剪切的文本被放到kill ring,yank命令可以将文本恢复。
C-y(yank)命令插入kill ring中的第一个元素到缓冲区。如果C-y命令后立即跟一个M-y,则插入的文本将被替换为kill ring的第二个元素。连续的按M-y,将使用kill ring中更靠后的文本替换前一次操作插入的文本。当到达最后一个元素时,又将从第一个元素开始。(这也是kill ring被称作ring而不是list的原因)然而实际上保存了文本的数据结构是list。
Kill Ring Overview
kil ...
使用muse生成了这个笔记的html版本。里面有带链接的索引,浏览起来比较方便。可以从附件下载。
以后有新的更新时,我会同时更新这个链接。
这个发布文件使用的薛瑞尼所写的Muse CSS文件。
List的实现
Lisp中list使用了连续的指针对来保存数据,指针对的第一个指针指向一个原子或者另一个list,指针对的第二个指针指向另一个指针对,或者指向nil,以表明list的结束。
List图示
举例来说,list(rose violet buttercup)有3个元 ...
剪切和存储文本
当使用'kill'命令剪切文本时,Emacs将它存储到一个列表中,可以用'yank'命令重新获取到。
存储文本到列表
当文本被剪切出缓冲区时,它将被存储到一个list中。文本块连续的存储在list中,这个列表看如下面的形式: <src lang="lisp" piece="" previous="" text="" of="" a=""></src> 函数cons可以添加文本块到list,如:
(cons "another ...
基础函数:car, cdr, cons
Lisp中car,cdr和cons都是基础函数。cons用于构造lists,car和cdr用于分割lisp。
奇怪的命名
cons函数的名称并非没有含意:它是单词'construct'的缩写。car是短语'Contents of the Address part of the Register';cdr('could-er')是短语'Contents of the Decrement part of the Register'。这些短语说明了Lisp是在多么原始的机器上被开发的。
car和cdr
一个list的CAR是list中的第一个元素。(ros ...
最近在学习Rails时把先前在Java中的一些习惯性思维带了过了,结果在遇到self.与@时被这种思维方式给误导了。
遇到这个问题是在使用AcriveRecord时,在修改或者新增记录时需要添加时间戳。首先使用self.posted_at=Time.now来修改字段,一切正常。后来想到在哪篇文章中好像说过self.与Java中的this差不多,这样就不自觉的把posted_at当作了实例变量处理,试了一下用@posted_at=Time.now,没有出错,但是记录的时间并没有被更新。
起初想到书上说ActiveRecord在第一次访问那个类时,将根据表结构信息,自动添加列到实例变量并增加对这 ...
Narrowing and Widening
Narrowing是Emacs的一项功能,它使你可以将焦点集中在缓冲区的某个部分上,而不用担心意外的修改了其它部分。Narrowing通常被禁用,因为它可能会使新手觉得迷惑。
Narrowing的优点
使用narrowing时,缓冲区的其它部分不可见,看起来就像其它部分不存在一样。利用这点你可以只在缓冲区中的某个部分进行查找或替换操作,而不会影响缓冲区的其它部分。narrow-to-region被绑定到C-x n n。
narrowing将使缓冲区的其它部分不可见,如果用户在无意中执行了narrowing命令时他们有可能会认为其它部分被删除了。而 ...
一些更复杂的函数
copy-to-buffer的函数定义
这个函数拷贝文本到缓冲区,但它不是追加到第二个缓冲区,而是替换第二个缓冲区之前的文本。copy-to-buffer函数与append-to-buffer代码很类似,但它使用了erase-buffer和二个save-excursion。
该函数的函数体如下:
...(interactive "BCopy to buffer: \nr") (let ((oldbuf (current-buffer))) (save-excursion (set-buffer (get-buffer-create bu ...
部分与缓冲区有关的函数
查找更多信息
可以通过C-h f查看函数的说明,C-h v查看变量的说明,这些说明就是Emacs Lisp代码中的文档字符串。
在20或更高版本以后,可以用describe-function(C-h f)将告诉你函数定义的位置。在文件名上按回车(这个操作是help-follow函数调用)将打开函数定义。
etags:在代码中如果想要查看函数源文件,可以使用find-tags函数跳转到源文件上去。find-tags可以处理多种语法,不限于 Lisp和C,也可以工作于非编程语言如Texinfo文档。在Texinfo文档里调用find-tags将跳转到对应的文件节点。
...
实践
执行代码
通过C-x C-e执行代码
缓冲区名称
buffer-name和buffer-file-name这两个函数用于区分文件和缓冲区。
如果是在*scratch*缓冲区中,可以用C-u C-x C-e运行代码,这样运行结果会显示在表达式的后面。
获取缓冲区
buffer-name可以获取缓冲区名称,current-buffer可以返回缓冲区本身。
other-buffer可以获得上一次访问过的缓冲区。
切换缓冲区
switch-to-buffer可以切换当前缓冲区。产生与按C-x b类似的效果。下面的代码将切换当前缓冲区到上次访问过的缓冲区:
(switch-to-buf ...
编写函数
关于基本函数(Primitive Function)
除了少数C编写的基本函数外,所有的函数都是由其它函数语句定义的。当编写自己函数时,C所编写的函数与Emacs Lisp编写的函数看起来是一样的。
除非你想去考究,否则不需要知道知道一 ...
一直以来我都在使用Emacs编辑器,使用得越多,越想深入了解Emacs Lisp。在gnu的网站上,我找到了Programming in Emacs Lisp,觉得是很好的学习资料。下面是我的学习笔记贴出来与大家分享。
这个笔记中,对Emacs Lisp中的一些名词:symbols、form、list等没有统一的叫法,对函数、form等也是混合着在使用,主要是为了能让自己更容易了解。
笔记正在增长中,笔记的原文是用emacs muse书写的,需要的朋友可以给我留言。
表处理
Lisp列表
数字,列表中的列表
列表里也可以包含数字:(+ 2 2)。
Lisp里的数据和程序都是相同的方式实 ...
开源我的一个RCP作品,RCP Get
https://sourceforge.net/projects/rcpget/
这是一个下载工具,目前具备多线程多任务的Http下载功能和下载分类管理功能。
软件目前还未发布版本。