3

以下にバインドされたキーボード ショートカットを使用しています。

er/expand-region, which is an interactive Lisp function in `expand-region-core.el'.

地域を広げること。

たとえば、関数を選択して移動したい場合などです。

私の問題は、次のような関数を選択したい場合、次のように言うことです:

;; some comment related to the function
(defn foo [x]
  ...)

「;;コメント」を含めるために「展開」することはできません。関数を超えて (コメントなしで) 展開するとすぐに、完全なバッファーが消費されます。

最初に関数とコメント、次に完全なバッファを含めるように拡張したいと思います。

非常に気になるので、回避策として一時的にこれを行っています。

(defn foo [x]
  ;; some comment
  ...)

er/expand-region (または別の関数) を変更して、関数全体に展開した後、関数のすぐ上のコメントを展開してからバッファー全体に展開するようにするにはどうすればよいですか?

4

2 に答える 2

3

パッケージ expand-region の作成者である Magnar Sveen のgithubからの引用:

例:

expand-region でテキストモードの段落とページにもマークを付けたいとしましょう。ちなみに、Emacs には既に mark-paragraph と mark-page が付属しています。試行リストに追加するには、次のようにします。

 (defun er/add-text-mode-expansions ()   (make-variable-buffer-local
 'er/try-expand-list)   (setq er/try-expand-list (append
                             er/try-expand-list
                             '(mark-paragraph
                               mark-page))))

(add-hook 'text-mode-hook'er/add-text-mode-expansions)

それを独自のファイルに追加し、「モード固有の拡張」と書かれているexpand-region.el-fileに追加します

警告: 不適切に記述された展開は、expand-region を劇的に遅くする可能性があります。マークする構成を探してドキュメント全体をトラバースし始める前に、すぐに終了することを忘れないでください。

expand-region リストに「er/mark-paragraph」を追加できると思います。

于 2013-01-25T20:58:55.133 に答える
1

ユーザーDualinityのアドバイスに従って、clojure-mode-expansions.elに以下を追加しました(もちろん、Clojure以外のモードでも実行できます):

;; added this line at the beginning of the file
(require 'org-mode-expansions)

次に、er/add-clojure-mode-expansionsメソッド内の展開リストにer/mark-paragraphという行を追加しました。

(defun er/add-clojure-mode-expansions ()
  "Adds clojure-specific expansions for buffers in clojure-mode"
  (set (make-local-variable 'er/try-expand-list) (append
                                                  er/try-expand-list
                                                  '(er/mark-clj-word
                                                    er/mark-clj-regexp-literal
                                                    er/mark-paragraph ; added this line
                                                    er/mark-clj-function-literal))))

私はEmacsを再起動しました(それが考慮されていることを確認するために何が必要かについてあまりよくわからないので、すべてを再起動しました)。

以上です。展開すると、「外部」関数のコメントも選択されます。

于 2013-01-25T21:28:39.307 に答える