2

私はスクラッチ バッファで多くのプログラミングを行っており、ある時点でいくつかの式を評価し、別の場所で同じ式を評価したいと思うことがよくあります (そのための関数を記述する必要はありません)。

(looking-at "\\<")1 つの例は、単語の先頭を見ているかどうかを確認するために をテストしたい場合です。使用eval-last-sexpする場合は前の物を評価し(point)ます。

つまり、これは私がテストできることを意味します:

(looking-at "\\<")<(point)>someword

しかし、前に式をテストすることはできません(point):

someword<(point)>(looking-at "\\<")

これをテストするために、実際に次のようなことをしました。

(defun foo ()
  (interactive)
  (when (looking-at "\\<") (message "t"))
)

そして、その時点でそれを別の場所で呼び出します(多くのテストを行うと、キーにバインドすることさえあります)。

「どのように(looking-at)動作するか」に対する答えを見つけるのは実際には難しいことではありませんが、私が興味を持っているのは、次the-last-user-called-sexpのような関数を使用してバッファ内の他の場所で呼び出すことができるように、どこかに保存できるかどうかです。 :

(defun invoke-last-sexp (sexp)
 (interactive)
 (evaluate the last sexp) ; maybe even (call-interactively) is sometimes needed
)
4

2 に答える 2

3

また、どこにいてもフォームをすばやく評価できるようにしたいと思います。そのために、 magnarsの構成から着想を得たマクロがあります。

(defmacro create-simple-keybinding-command (name key)
  `(progn (defmacro ,name (&rest fns)
            (list 'global-set-key (kbd ,key)
                  `(lambda ()
                     (interactive)
                     ,@fns)))

          (defmacro ,(intern (concat (symbol-name name) "e")) (&rest fns)
            (list 'global-set-key (kbd ,key)
                  `(lambda ()
                     (interactive)
                     (message "%s"
                              (progn
                                ,@fns)))))))

たとえば、あなたは評価します

(create-simple-keybinding-command f9 "<f9>")

2つのマクロf9f9e。ミニバッファに戻り値を表示することを除けば、とf9e同じです。f9あなたの場合、あなたは評価します

(f9e (looking-at "\\<"))

これで、を押すたびにフォームが評価されますf9

ここで私のemacs構成を確認することをお勧めします。ここでは、ほぼ同じことを行ういくつかのマクロがあります。

于 2013-01-13T00:09:18.577 に答える
3

キーにバインドされたコマンドを使用したい場合がありM-:ます。

于 2013-01-13T01:29:26.147 に答える