* etc/NEWS: New Tramp method "nc".
* lisp/emacs-lisp/lisp-mode.el (lisp-string-after-doc-keyword-p): New fun. (lisp-string-in-doc-position-p): New function, extracted from lisp-font-lock-syntactic-face-function. (lisp-font-lock-syntactic-face-function): Use them. Fixes: debbugs:9130
This commit is contained in:
parent
483d1ab6c8
commit
96db005527
3 changed files with 48 additions and 26 deletions
3
etc/NEWS
3
etc/NEWS
|
@ -72,6 +72,9 @@ performance improvements when pasting large amounts of text.
|
||||||
|
|
||||||
* Changes in Specialized Modes and Packages in Emacs 24.5
|
* Changes in Specialized Modes and Packages in Emacs 24.5
|
||||||
|
|
||||||
|
** Lisp mode
|
||||||
|
*** Strings after `:documentation' are highlighted as docstrings.
|
||||||
|
|
||||||
** Rectangle editing
|
** Rectangle editing
|
||||||
*** Rectangle Mark mode can have corners past EOL or in the middle of a TAB.
|
*** Rectangle Mark mode can have corners past EOL or in the middle of a TAB.
|
||||||
*** C-x C-x in rectangle-mark-mode now cycles through the four corners.
|
*** C-x C-x in rectangle-mark-mode now cycles through the four corners.
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
2014-06-19 Robert Brown <robert.brown@gmail.com> (tiny change)
|
||||||
|
|
||||||
|
* emacs-lisp/lisp-mode.el (lisp-string-after-doc-keyword-p): New fun.
|
||||||
|
(lisp-string-in-doc-position-p): New function, extracted from
|
||||||
|
lisp-font-lock-syntactic-face-function.
|
||||||
|
(lisp-font-lock-syntactic-face-function): Use them (bug#9130).
|
||||||
|
|
||||||
2014-06-19 Grégoire Jadi <daimrod@gmail.com>
|
2014-06-19 Grégoire Jadi <daimrod@gmail.com>
|
||||||
|
|
||||||
* net/rcirc.el (rcirc-omit-mode): Fix recenter error. (Bug#17769)
|
* net/rcirc.el (rcirc-omit-mode): Fix recenter error. (Bug#17769)
|
||||||
|
|
|
@ -413,6 +413,41 @@ It has `lisp-mode-abbrev-table' as its parent."
|
||||||
(defvar lisp-cl-font-lock-keywords lisp-cl-font-lock-keywords-1
|
(defvar lisp-cl-font-lock-keywords lisp-cl-font-lock-keywords-1
|
||||||
"Default expressions to highlight in Lisp modes.")
|
"Default expressions to highlight in Lisp modes.")
|
||||||
|
|
||||||
|
(defun lisp-string-in-doc-position-p (listbeg startpos)
|
||||||
|
(let* ((firstsym (and listbeg
|
||||||
|
(save-excursion
|
||||||
|
(goto-char listbeg)
|
||||||
|
(and (looking-at "([ \t\n]*\\(\\(\\sw\\|\\s_\\)+\\)")
|
||||||
|
(match-string 1)))))
|
||||||
|
(docelt (and firstsym
|
||||||
|
(function-get (intern-soft firstsym)
|
||||||
|
lisp-doc-string-elt-property))))
|
||||||
|
(and docelt
|
||||||
|
;; It's a string in a form that can have a docstring.
|
||||||
|
;; Check whether it's in docstring position.
|
||||||
|
(save-excursion
|
||||||
|
(when (functionp docelt)
|
||||||
|
(goto-char (match-end 1))
|
||||||
|
(setq docelt (funcall docelt)))
|
||||||
|
(goto-char listbeg)
|
||||||
|
(forward-char 1)
|
||||||
|
(condition-case nil
|
||||||
|
(while (and (> docelt 0) (< (point) startpos)
|
||||||
|
(progn (forward-sexp 1) t))
|
||||||
|
(setq docelt (1- docelt)))
|
||||||
|
(error nil))
|
||||||
|
(and (zerop docelt) (<= (point) startpos)
|
||||||
|
(progn (forward-comment (point-max)) t)
|
||||||
|
(= (point) startpos))))))
|
||||||
|
|
||||||
|
(defun lisp-string-after-doc-keyword-p (listbeg startpos)
|
||||||
|
(and listbeg ; We are inside a Lisp form.
|
||||||
|
(save-excursion
|
||||||
|
(goto-char startpos)
|
||||||
|
(ignore-errors
|
||||||
|
(progn (backward-sexp 1)
|
||||||
|
(looking-at ":documentation\\_>"))))))
|
||||||
|
|
||||||
(defun lisp-font-lock-syntactic-face-function (state)
|
(defun lisp-font-lock-syntactic-face-function (state)
|
||||||
(if (nth 3 state)
|
(if (nth 3 state)
|
||||||
;; This might be a (doc)string or a |...| symbol.
|
;; This might be a (doc)string or a |...| symbol.
|
||||||
|
@ -420,32 +455,9 @@ It has `lisp-mode-abbrev-table' as its parent."
|
||||||
(if (eq (char-after startpos) ?|)
|
(if (eq (char-after startpos) ?|)
|
||||||
;; This is not a string, but a |...| symbol.
|
;; This is not a string, but a |...| symbol.
|
||||||
nil
|
nil
|
||||||
(let* ((listbeg (nth 1 state))
|
(let ((listbeg (nth 1 state)))
|
||||||
(firstsym (and listbeg
|
(if (or (lisp-string-in-doc-position-p listbeg startpos)
|
||||||
(save-excursion
|
(lisp-string-after-doc-keyword-p listbeg startpos))
|
||||||
(goto-char listbeg)
|
|
||||||
(and (looking-at "([ \t\n]*\\(\\(\\sw\\|\\s_\\)+\\)")
|
|
||||||
(match-string 1)))))
|
|
||||||
(docelt (and firstsym
|
|
||||||
(function-get (intern-soft firstsym)
|
|
||||||
lisp-doc-string-elt-property))))
|
|
||||||
(if (and docelt
|
|
||||||
;; It's a string in a form that can have a docstring.
|
|
||||||
;; Check whether it's in docstring position.
|
|
||||||
(save-excursion
|
|
||||||
(when (functionp docelt)
|
|
||||||
(goto-char (match-end 1))
|
|
||||||
(setq docelt (funcall docelt)))
|
|
||||||
(goto-char listbeg)
|
|
||||||
(forward-char 1)
|
|
||||||
(condition-case nil
|
|
||||||
(while (and (> docelt 0) (< (point) startpos)
|
|
||||||
(progn (forward-sexp 1) t))
|
|
||||||
(setq docelt (1- docelt)))
|
|
||||||
(error nil))
|
|
||||||
(and (zerop docelt) (<= (point) startpos)
|
|
||||||
(progn (forward-comment (point-max)) t)
|
|
||||||
(= (point) (nth 8 state)))))
|
|
||||||
font-lock-doc-face
|
font-lock-doc-face
|
||||||
font-lock-string-face))))
|
font-lock-string-face))))
|
||||||
font-lock-comment-face))
|
font-lock-comment-face))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue