第4章 与缓冲区有关的函数
簡化的beginning-of-buffer函數(shù)定義
作為一個交互命令,beginning-of-buffer函數(shù)將光標(biāo)移到緩沖區(qū)的開始位置,這個一般綁定到M-<(ESC <)上。
這我們要寫一個簡易版的beginning-of-buffer,
這個函數(shù)的參數(shù)列表為一個空的列表(),也就是不需要參數(shù),
交互表達(dá)式(interactive)告訴Emacs這個函數(shù)可以交互使用,這里interactive沒有參數(shù),因為simplified-beginning-of-buffer不需要參數(shù)。
(push-mark)將一個標(biāo)記設(shè)置在光標(biāo)移動前所處的位置,
光標(biāo)根據(jù)(goto-char (point-min))表達(dá)式的要求移動到緩沖區(qū)的開始處。
(goto-char (point-min)),這個表達(dá)式將光標(biāo)跳到本緩沖區(qū)的最小可能位點處,也即是緩沖區(qū)最開始處(可能開啟變窄就不一樣了)。
可以使用C-x C-x返回到原來所處的位置。
=================================================
end-of-buffer函數(shù)定義就是用類似于begining-of-buffer函數(shù)定義的方式編寫的,
不同之處在于函數(shù)體用的是(goto-char (point-max))替代了(goto-char (point-min))表達(dá)式。
mark-whole-buffer函數(shù)的定義
mark-whole-buffer函數(shù)并不經(jīng)常使用,它是將整個緩沖區(qū)作為一個域來標(biāo)記,方法是將位點置于緩沖區(qū)開始的位置,
在緩沖區(qū)的末尾放置一個標(biāo)記,這個命令一般綁定到C-x h上。
該函數(shù)的完整定義代碼如下:
(push-mark)和(push-mark (point))這兩種形式不同在于push-mark的參數(shù)是可選的,
如果沒有給它傳遞參數(shù),則自動在當(dāng)前位點設(shè)置標(biāo)記。
不過暫時不知道這個有啥用。
可以鍵入兩次C-u C-SPC來返回原來的位點處。
append-to-buffer函數(shù)的定義
append-to-buffer的功能就是從當(dāng)前緩沖區(qū)中拷貝一個域(即緩沖區(qū)中介于位點和標(biāo)記之前的區(qū)域),到一個制定的緩沖區(qū)。
append-to-buffer命令使用insert-buffer-substring函數(shù)來拷貝一個域。
insert-buffer-substring從一個緩沖區(qū)中提取一部分作為一個字符串,并將這個字符串插入到另一個緩沖區(qū)中。
其實append-to-buffer大部分工作就是指定字符串的來源和目的緩沖區(qū)。
因為append-to-buffer函數(shù)將被交互地使用,所以函數(shù)必須有一個interactive表達(dá)式。
函數(shù)的這個交互表達(dá)式為(interactive "BAppend to buffer: \nr")
這個表達(dá)式中有一個位于雙引號中的參量,這個參量有兩個部分,其間由"\n"分隔開來。
參數(shù)的第一個部分是"BAppend to buffer:"。這里,"B控制符告訴Emacs要求輸入緩沖區(qū)名,并將這個名字傳遞給函數(shù)。
將會在小緩沖區(qū)中打印B后面的字符來提示用戶輸入這個緩沖區(qū)名。然后Emacs將函數(shù)參數(shù)列表中的參數(shù)buffer綁定到指定的緩沖區(qū)。
參數(shù)的第二部分是"r"。它告訴Emacs將函數(shù)參量列表中符號"buffer"之后的兩個參數(shù)(start和end)綁定到位點和標(biāo)記的值上。
使用示例
這個算是非交互執(zhí)行了,如果要交互執(zhí)行的話M-x,然后輸入命令。
反正執(zhí)行了一遍之后覺得,尼瑪,好屌啊。
?
總結(jié)
以上是生活随笔為你收集整理的第4章 与缓冲区有关的函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6入门概览二--数组
- 下一篇: 世界不乏爱因斯坦,缺乏的适合他茁壮成长的