之間進行選擇,我有以下defun定義在我的.emacs.d:Emacs的 - 括號
;;; 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表達式。現在,我有一個綁定到M- [,另一個綁定到M-]。當我去找一個paren並點擊「goto」鍵時,它按照我想要的 - 跳到另一個。如果我在那之後點擊「選擇」鍵...它會做同樣的事情,不標記區域,並且在它之後重複點擊它使它在對角線之間跳躍。但是如果我在那之後做了「轉到」,它會確實標記該區域,並且反覆地點擊它跳回並取消標記。
所以基本上我有我想要的功能......但是相反,我不知道爲什麼。有人可以解釋一下這裏發生了什麼,並可能提供解決方案嗎?
你能澄清這更好的 - 也許用一個例子:「但是,什麼情況是,‘選擇’去匹配一對括號,如果我那麼做‘轉到’,即一個選擇一切,所以基本上我有。我想要的功能......但是相反,我不知道爲什麼,有人可以解釋這裏發生了什麼,並且可能提供解決方案嗎?「 – Specksynder