2016-12-20 29 views
0

我是Emacs新功能。今天是我第一次嘗試創建一個功能。如何交互式讀取Emacs功能的輸入文本?

我知道count-matches會告訴我regex在緩衝區的其餘部分出現了多少次,但大多數時候我需要從緩衝區開始計數。所以,我想這一點:

(defun count-matches-for-whole-buffer (text-to-count) 
    "Opens the ~/.emacs.d/init.el file" 
    (interactive "sText-to-count:") 
    (beginning-of-buffer) 
    (count-matches text-to-count)) 

我把這個在〜/ .emacs.d/init.el,然後做 「EVAL-緩衝區」 上緩衝。

所以現在我可以訪問這個功能。如果我運行它,它會問我要搜索的文本。

但功能只多遠,因爲這行:

beginning-of-buffer 

我從來沒有得到計數。這是爲什麼?

回答

1

兩件事。

  1. 您應該使用(goto-char (point-min))而不是beginning-of-buffer
  2. count-matches將不會顯示從lisp代碼中調用的消息,除非您提供了一個指示如此的參數。

試試這個代碼:

(defun count-matches-for-whole-buffer (text-to-count) 
    (interactive "sText-to-count:") 
    (count-matches text-to-count (point-min) (point-max) t)) 
+0

緩衝區可能收窄。如果你想要在緩衝區的可見部分而不是在整個緩衝區中匹配的數量,那麼'point-min'和'point-max'是正確的使用方法。否則,使用'1'而不是'point-min'和'(1+(buffer-size))',而不是'point-max'。 – Drew

相關問題