Emacs - 在括号之间选择

标签 emacs elisp parentheses

我的 .emacs.d 中有以下 defun:

;;; http://emacswiki.org/emacs/ParenthesisMatching
(defun goto-match-paren (arg)
  "Go to the matching  if on (){}[], similar to vi style of % "
  (interactive "p")
  ;; first, check for "outside of bracket" positions expected by forward-sexp, etc.
  (cond ((looking-at "[\[\(\{]") (forward-sexp))
        ((looking-back "[\]\)\}]" 1) (backward-sexp))
        ;; now, try to succeed from inside of a bracket
        ((looking-at "[\]\)\}]") (forward-char) (backward-sexp))
        ((looking-back "[\[\(\{]" 1) (backward-char) (forward-sexp))
        (t nil)))

(defun select-in-parens ()
  (interactive)
  (goto-match-paren 1)
  (set-mark (point)))

我本来只有第一个功能。然后我添加了第二个,我打算选择整个 s 表达式。现在,我将其中一个绑定(bind)到 M-[,另一个绑定(bind)到 M-]。当我转到一个括号并按下“goto”键时,它会执行我想要的操作 - 跳转到另一个括号。如果我在那之后按下“选择”键...它会执行相同的操作,而不标记该区域,然后重复按下它会使其在括号之间跳转。但如果我在那之后执行“goto”,它会标记该区域,并且反复点击它会跳回并取消标记。

所以基本上我有我想要的功能...但是相反,我不知道为什么。有人可以解释一下这里发生了什么,并可能提供解决方案吗?

最佳答案

也许在移动点之前设置标记?

(defun select-in-parens ()
  (interactive)
  (set-mark (point))
  (goto-match-paren 1))

关于Emacs - 在括号之间选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11174242/

相关文章:

emacs - emacs24中的词法评估

JavaScript 正则表达式用第一个字母替换单词,除非在括号内

javascript - emacs paredit - 如何删除引号

shell - 如何使 emacs-org 导出以适合宽度的模式打开 pdf?

emacs - 任何人都知道如何在 emacs 中更改我的模式行上的文件名的颜色?

emacs - 突出显示 emacs 缓冲区中缺少哪些文件名

elisp:从内部函数捕获变量

javascript - 设置对象键 JavaScript 值时的括号位置

javascript - 社区打算在JavaScript中的匿名函数声明周围加上几个括号是什么意思?

emacs 射弹 - 在目录中时显示 "you are not in a project"