打算用 emacs Lisp
語言來作一些文本處理方面的應用,遇到了一個問題:編程
讀一個文件到一個字符串中。數據結構
讀一個文件到一個緩衝區(buffer),而後切換到這個緩衝區,調用緩衝區函數 (buffer-string) , 將緩衝區的全部內容讀入一個字符串。編程語言
這大大出乎個人預料,也有違編程語言的原則,但後來發現,其實,這個緩衝區在別的語言中也是存在的。只不過編輯器把它顯明出來,成爲看得見的東西。編輯器
我又發現傳統調試語言的一個弊病,就是運行一個程序,須要調用第三方程序加載它,而後查看輸出結果,輸出結果,一般是一個不可編輯的只讀區域。或者重定向到別的文件。emacs 編程讓這個過程更加簡化,綁定一個鍵運行後,結果出現一個可編輯的緩衝區,輸出結果能夠語法高亮。函數
在編輯器模式中,一個文本處理函數,能夠不使用循環的樣式,直接在 interactive
模式下,進行調試。調試
還有許多的數據結構是爲了文本處理而創立,字符表 (char-table) 語法表 (syntax-table), 字符屬性(text properties).code
因爲 emacs 的絕大多數代碼是用本身的擴展語言 emacs lisp 實現的, 那麼擴展 emacs 就能夠調用更多基礎功能的函數,甚至改變基礎的行爲,使之成爲可擴展性的典範。字符串
一門語言的核心是用多少比例的本身的語言進行擴展的,就從側面說明這門語言的生命力有多少。string