0

キルリングとレジスターのいくつかの機能を使って関数を作成したいと思います。

基本的に、新しいモードを作成します。このモードでは、段落をリストのポイントに配置する必要があります(r単語をそのリストのポイントに配置する必要があります)。p r w

次に、iそのリストにあるものをその時点で挿入する必要があります。

これは私が現在レジスターのために持っているものです:

(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))))

「blablabla」を抽出する方法は?それでも...もう1つの問題は、ある時点の単語を変数""に追加できるようにしたいということですbla。それは()では不可能interactive "r"ですよね?

4

1 に答える 1

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)
)
于 2012-11-05T22:16:23.367 に答える