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