3

Emacs (Lisp) の align-regexp 関数に引数を渡そうとしています:

(defun align-on-comment-char ()
  (interactive)
  (align-regexp (region-beginning) (region-end) "#")
)

私は実際にすべてのモードでこれを具体的に行いたいと思います。各モードでは、「コメント文字に合わせて(;emacs lisp、%Latex、#Rの場合)」をバインドします。

私は何が欠けていますか?

4

2 に答える 2

4

コードを少し変更する必要があります。

たとえば、次のようにします。

(defun align-on-comment-char (beg end)
  (interactive "r")
  (align-regexp beg end "\\(\\s-*\\)#")
)

のソースからマジック ストリング"\\(\\s-*\\)"が取得されますalign-regexp

すべてのモードに対して単一の関数を使用するcomment-start場合は、@pmr が指摘したように variable を使用します。

(align-regexp beg end (concat "\\(\\s-*\\)" comment-start))
于 2012-10-14T20:16:04.423 に答える
4

comment-startcomment-endは、現在のモードのコメント文字列を取得するための通常の変数です。

また、align-regexp を呼び出すときに、適切に一致させるためにいくつかの魔法を追加する必要があります。オレグのように、ソースを見て難しい方法でそれを理解しなければなりませんでした。ここでのエラー メッセージは説明的ではなく、バグ レポートまたは少なくともドキュメントの修正に値すると考えています。

(defun align-comment (beg end)
  (interactive "r")
  (align-regexp beg end (concat "\\(\\s-*\\)" comment-start))
)
于 2012-10-14T20:00:33.507 に答える