2012-11-04 53 views
0

我想創建一個使用kill-ring和寄存器的某些功能的函數。如何在Emacs中創建類似寄存器的函數

基本上我想創建一個新的模式,其中[R其次p應該把該段點的名單([R w^應該把這個詞在點在該列表)。

然後,應插入任何在該列表中的點。

這是我目前的寄存器:

(defun Navi-register-region() 
(interactive) 
(copy-to-register ?N (region-beginning) (region-end)) 
) 

我沒興趣列表的歷史,我只是希望它來代替在不斷的當前選擇的字符串變量的字符串。

編輯:所以這是我現在,雖然它的錯誤「錯誤類型參數號 - 或標誌物」

(defun Navi-word-reg() 
    (interactive) 
    (save-excursion 
      (right-word) 
      (push-mark (point) t t) 
      (left-word) 
      (kill-ring-save (region-beginning) (region-end)) 
      (defvar bla (car kill-ring-yank-pointer)) 
      ; and here I would use something to remove last item from kill-ring 
      )) 

當我嘗試它(interactive "r")的變量包含:

#("bla bla bla" 0 20 (fontified t)) 

當使用下面的功能。

(defun Navi-region-reg (beg end) 
     (interactive "r") 
     (save-excursion (kill-ring-save (region-beginning) (region-end)) 
       (defvar bla (car kill-ring)))) 

如何提取「bla bla bla」?仍然...另一個問題是,我希望能夠將這個單詞添加到變量「bla」中。這是不可能的(interactive "r")對不對?

+0

也許添加評論爲什麼-1這個問題...允許我改進問題 – PascalVKooten

+0

我沒有給你-1但是,關於改進:在兩次閱讀你的問題之後,我仍然沒有完全意識到你想要存檔的內容。你的意思是按名單?也許只是舉一個例子,你的功能應該如何表現。 – Thilo

回答

0

我花了很長時間,但在這裏它是(你自己額外的「註冊/殺戒」:

(defun Navi-region-reg() 
    (interactive) 
    (save-excursion (left-word 1) 
      (mark-word) 
      (kill-ring-save (region-beginning) (region-end)) 
      (setq Navireg (substring-no-properties (car kill-ring))) 
      (setq kill-ring (cdr kill-ring)))) 

並插入

(defun Navi-insert() 
(interactive) 
(insert Navireg) 
) 
相關問題