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