diff options
Diffstat (limited to 'lisp/emacs-lisp/lisp-mode.el')
-rw-r--r-- | lisp/emacs-lisp/lisp-mode.el | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 52bc6a5405b..e96c8ed5cef 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -186,32 +186,32 @@ (setf pos (or pos (point))) (save-match-data (save-excursion - (goto-char pos) - (or (eql (char-before) ?\') - (let ((parent - (ignore-errors + (ignore-errors + (goto-char pos) + (or (eql (char-before) ?\') + (let ((parent (up-list -1) - (cond - ((looking-at (rx "(" (* (syntax -)) "(")) - (up-list -1) - (when (looking-at "(\\_<let\\*?\\_>") - (goto-char (match-end 0)) - 'let)) - ((looking-at - (rx "(" - (group-n 1 (+ (or (syntax w) (syntax _)))) - symbol-end)) - (prog1 (intern-soft (match-string-no-properties 1)) - (goto-char (match-end 1)))))))) - (or (eq parent 'declare) - (and (eq parent 'let) - (progn - (forward-sexp 1) - (< pos (point)))) - (and (eq parent 'condition-case) - (progn - (forward-sexp 2) - (< (point) pos))))))))) + (cond + ((looking-at (rx "(" (* (syntax -)) "(")) + (up-list -1) + (when (looking-at "(\\_<let\\*?\\_>") + (goto-char (match-end 0)) + 'let)) + ((looking-at + (rx "(" + (group-n 1 (+ (or (syntax w) (syntax _)))) + symbol-end)) + (prog1 (intern-soft (match-string-no-properties 1)) + (goto-char (match-end 1))))))) + (or (eq parent 'declare) + (and (eq parent 'let) + (progn + (forward-sexp 1) + (< pos (point)))) + (and (eq parent 'condition-case) + (progn + (forward-sexp 2) + (< (point) pos)))))))))) (defun lisp--el-match-keyword (limit) (catch 'found |