我正在使用绑定到的键盘快捷键:
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(或其他函数),以便在扩展到完整函数之后扩展函数上方的注释,然后扩展到整个缓冲区?
答案 0 :(得分:3)
来自包装扩展区域的创建者Magnar Sveen,取自他的github:
示例:
假设您希望expand-region也标记段落和页面 文本模式。顺便说一句,Emacs已经带有mark-paragraph和 标记页。要将其添加到try-list,请执行以下操作:
(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文件中 “模式特定的扩展”
警告:错误编写的扩展可能会降低扩展区域的速度 大幅提升。记得在开始穿越之前快速退出 整个文档寻找标记的结构。
我想说你可以将“er / mark-paragraph”添加到扩展区域列表中,应该这样做。
答案 1 :(得分:1)
按照用户 Dualinity的建议,我将以下内容添加到 clojure-mode-expansions.el (当然可以用于除Clojure之外的其他模式):
;; added this line at the beginning of the file
(require 'org-mode-expansions)
然后我将行er / mark-paragraph添加到er/add-clojure-mode-expansions
方法内的展开列表中:
(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(不太确定需要什么,以确保它被考虑在内,所以我重新启动了整个事情。)
就是这样:现在扩展也会选择“外部”功能评论。