From 114d4d84c89fc7a2a0187a8b44cba92735affc8e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 19 Jan 2013 15:59:48 -0800 Subject: Comment --- lisp/profiler.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lisp') diff --git a/lisp/profiler.el b/lisp/profiler.el index 2b751626a1a..04a171a6cb2 100644 --- a/lisp/profiler.el +++ b/lisp/profiler.el @@ -20,7 +20,7 @@ ;;; Commentary: -;; +;; See Info node `(elisp)Profiling'. ;;; Code: -- cgit v1.2.1 From 4d4ddaa78c15716a93f790b11e9879d73db5e7d9 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Wed, 23 Jan 2013 14:25:50 +0800 Subject: * xml.el (xml-entity-or-char-ref-re): Fix regexp. This bug was reported by Jae-oh Kim; it was posted to bug-gnu-emacs but didn't show up in the bug tracker for some reason. It is a regression against Emacs 24.2. --- lisp/ChangeLog | 4 ++++ lisp/xml.el | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'lisp') diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7be8224ae65..eee7700446a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2013-01-23 Chong Yidong + + * xml.el (xml-entity-or-char-ref-re): Fix regexp. + 2013-01-18 Leo Liu * dired.el (dired-get-marked-files): Prune erroneous values due to diff --git a/lisp/xml.el b/lisp/xml.el index b6c37612ab3..2232746f02a 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -200,7 +200,7 @@ See also `xml-get-attribute-or-nil'." ;; [68] EntityRef ::= '&' Name ';' (defconst xml-entity-ref (concat "&" xml-name-re ";")) -(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9]+\\)\\|\\(" +(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9a-fA-F]+\\)\\|\\(" xml-name-re "\\)\\);")) ;; [69] PEReference ::= '%' Name ';' -- cgit v1.2.1 From 267eacb5e3ef38b6e1ac70ee5e1922f58d764f15 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Wed, 23 Jan 2013 18:58:11 +0000 Subject: Fix a bug in the state cache mechanism. Refactor this a bit. cc-engine.el (c-parse-state-get-strategy): Remove the `cache-pos' element from the return value. (c-append-lower-brace-pair-to-state-cache): "Narrow" to end of buffer to enable proper searching from beyond HERE. Amend the test for detecting the sought brace pair. Amend the value written to the "brace desert cache" when the brace isn't found. (c-remove-stale-state-cache): Rename `good-pos' to `start-point', and several other variables analogously. (c-remove-stale-state-cache-backwards): Change `cache-pos' from a parameter to a locally calculated variable. (c-parse-state-1): Change the calling conventions to the two defuns involving `cache-pos'. --- lisp/ChangeLog | 17 ++++++++ lisp/progmodes/cc-engine.el | 104 ++++++++++++++++++++++++-------------------- 2 files changed, 73 insertions(+), 48 deletions(-) (limited to 'lisp') diff --git a/lisp/ChangeLog b/lisp/ChangeLog index eee7700446a..49fbf0eb5b6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,20 @@ +2013-01-23 Alan Mackenzie + + Fix a bug in the state cache mechanism. Refactor this a bit. + + * progmodes/cc-engine.el (c-parse-state-get-strategy): Remove the + `cache-pos' element from the return value. + (c-append-lower-brace-pair-to-state-cache): "Narrow" to end of + buffer to enable proper searching from beyond HERE. Amend the + test for detecting the sought brace pair. Amend the value written + to the "brace desert cache" when the brace isn't found. + (c-remove-stale-state-cache): Rename `good-pos' to `start-point', + and several other variables analogously. + (c-remove-stale-state-cache-backwards): Change `cache-pos' from a + parameter to a locally calculated variable. + (c-parse-state-1): Change the calling conventions to the two + defuns involving `cache-pos'. + 2013-01-23 Chong Yidong * xml.el (xml-entity-or-char-ref-re): Fix regexp. diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 560b66bf3b0..1eac45d06e0 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -2545,14 +2545,12 @@ comment at the start of cc-engine.el for more info." ;; ;; The return value is a list, one of the following: ;; - ;; o - ('forward CACHE-POS START-POINT) - scan forward from START-POINT, - ;; which is not less than CACHE-POS. - ;; o - ('backward CACHE-POS nil) - scan backwards (from HERE). - ;; o - ('BOD nil START-POINT) - scan forwards from START-POINT, which is at the + ;; o - ('forward START-POINT) - scan forward from START-POINT, + ;; which is not less than the highest position in `c-state-cache' below here. + ;; o - ('backward nil) - scan backwards (from HERE). + ;; o - ('BOD START-POINT) - scan forwards from START-POINT, which is at the ;; top level. - ;; o - ('IN-LIT nil nil) - point is inside the literal containing point-min. - ;; , where CACHE-POS is the highest position recorded in `c-state-cache' at - ;; or below HERE. + ;; o - ('IN-LIT nil) - point is inside the literal containing point-min. (let ((cache-pos (c-get-cache-scan-pos here)) ; highest position below HERE in cache (or 1) BOD-pos ; position of 2nd BOD before HERE. strategy ; 'forward, 'backward, 'BOD, or 'IN-LIT. @@ -2590,7 +2588,6 @@ comment at the start of cc-engine.el for more info." (list strategy - (and (memq strategy '(forward backward)) cache-pos) (and (memq strategy '(forward BOD)) start-point)))) @@ -2657,7 +2654,8 @@ comment at the start of cc-engine.el for more info." ;; reduce the time wasted in repeated fruitless searches in brace deserts. (save-excursion (save-restriction - (let* (new-cons + (let* ((here (point-max)) + new-cons (cache-pos (c-state-cache-top-lparen)) ; might be nil. (macro-start-or-from (progn (goto-char from) @@ -2692,6 +2690,7 @@ comment at the start of cc-engine.el for more info." ;; search bound, even though the algorithm below would skip ;; over the new paren pair. (cache-lim (and cache-pos (< cache-pos from) cache-pos))) + (widen) (narrow-to-region (cond ((and desert-lim cache-lim) @@ -2711,16 +2710,18 @@ comment at the start of cc-engine.el for more info." (while (and (setq ce (scan-lists bra -1 -1)) ; back past )/]/}; might signal (setq bra (scan-lists ce -1 1)) ; back past (/[/{; might signal - (or (> ce upper-lim) - (not (eq (char-after bra) ?\{)) - (and (goto-char bra) - (c-beginning-of-macro) - (< (point) macro-start-or-from)))))) + (or (> bra here) ;(> ce here) + (and + (< ce here) + (or (not (eq (char-after bra) ?\{)) + (and (goto-char bra) + (c-beginning-of-macro) + (< (point) macro-start-or-from)))))))) (and ce (< ce bra))) (setq bra ce)) ; If we just backed over an unbalanced closing ; brace, ignore it. - (if (and ce (< bra ce) (eq (char-after bra) ?\{)) + (if (and ce (< ce here) (< bra ce) (eq (char-after bra) ?\{)) ;; We've found the desired brace-pair. (progn (setq new-cons (cons bra (1+ ce))) @@ -2734,7 +2735,11 @@ comment at the start of cc-engine.el for more info." (t (setq c-state-cache (cons new-cons c-state-cache))))) ;; We haven't found a brace pair. Record this in the cache. - (setq c-state-brace-pair-desert (cons cache-pos from)))))))) + (setq c-state-brace-pair-desert + (cons (if (and ce (< bra ce) (> ce here)) ; {..} straddling HERE? + bra + (point-min)) + (min here from))))))))) (defsubst c-state-push-any-brace-pair (bra+1 macro-start-or-here) ;; If BRA+1 is nil, do nothing. Otherwise, BRA+1 is the buffer position @@ -2852,19 +2857,19 @@ comment at the start of cc-engine.el for more info." (paren+1) (t from))))) -(defun c-remove-stale-state-cache (good-pos pps-point) +(defun c-remove-stale-state-cache (start-point pps-point) ;; Remove stale entries from the `c-cache-state', i.e. those which will ;; not be in it when it is amended for position (point-max). ;; Additionally, the "outermost" open-brace entry before (point-max) ;; will be converted to a cons if the matching close-brace is scanned. ;; - ;; GOOD-POS is a "maximal" "safe position" - there must be no open - ;; parens/braces/brackets between GOOD-POS and (point-max). + ;; START-POINT is a "maximal" "safe position" - there must be no open + ;; parens/braces/brackets between START-POINT and (point-max). ;; ;; As a second thing, calculate the result of parse-partial-sexp at - ;; PPS-POINT, w.r.t. GOOD-POS. The motivation here is that + ;; PPS-POINT, w.r.t. START-POINT. The motivation here is that ;; `c-state-cache-good-pos' may become PPS-POINT, but the caller may need to - ;; adjust it to get outside a string/comment. (Sorry about this! The code + ;; adjust it to get outside a string/comment. (Sorry about this! The code ;; needs to be FAST). ;; ;; Return a list (GOOD-POS SCAN-BACK-POS PPS-STATE), where @@ -2872,7 +2877,9 @@ comment at the start of cc-engine.el for more info." ;; to be good (we aim for this to be as high as possible); ;; o - SCAN-BACK-POS, if not nil, indicates there may be a brace pair ;; preceding POS which needs to be recorded in `c-state-cache'. It is a - ;; position to scan backwards from. + ;; position to scan backwards from. It is the position of the "{" of the + ;; last element to be removed from `c-state-cache', when that elt is a + ;; cons, otherwise nil. ;; o - PPS-STATE is the parse-partial-sexp state at PPS-POINT. (save-restriction (narrow-to-region 1 (point-max)) @@ -2882,21 +2889,21 @@ comment at the start of cc-engine.el for more info." (goto-char (point-max)) (and (c-beginning-of-macro) (point)))) - (good-pos-actual-macro-start ; Start of macro containing good-pos - ; or nil - (and (< good-pos (point-max)) + (start-point-actual-macro-start ; Start of macro containing + ; start-point or nil + (and (< start-point (point-max)) (save-excursion - (goto-char good-pos) + (goto-char start-point) (and (c-beginning-of-macro) (point))))) - (good-pos-actual-macro-end ; End of this macro, (maybe + (start-point-actual-macro-end ; End of this macro, (maybe ; (point-max)), or nil. - (and good-pos-actual-macro-start + (and start-point-actual-macro-start (save-excursion - (goto-char good-pos-actual-macro-start) + (goto-char start-point-actual-macro-start) (c-end-of-macro) (point)))) - pps-state ; Will be 9 or 10 elements long. + pps-state ; Will be 9 or 10 elements long. pos upper-lim ; ,beyond which `c-state-cache' entries are removed scan-back-pos @@ -2926,15 +2933,15 @@ comment at the start of cc-engine.el for more info." ;; The next loop jumps forward out of a nested level of parens each ;; time round; the corresponding elements in `c-state-cache' are ;; removed. `pos' is just after the brace-pair or the open paren at - ;; (car c-state-cache). There can be no open parens/braces/brackets - ;; between `good-pos'/`good-pos-actual-macro-start' and (point-max), + ;; (car c-state-cache). There can be no open parens/braces/brackets + ;; between `start-point'/`start-point-actual-macro-start' and (point-max), ;; due to the interface spec to this function. - (setq pos (if (and good-pos-actual-macro-end - (not (eq good-pos-actual-macro-start + (setq pos (if (and start-point-actual-macro-end + (not (eq start-point-actual-macro-start in-macro-start))) - (1+ good-pos-actual-macro-end) ; get outside the macro as + (1+ start-point-actual-macro-end) ; get outside the macro as ; marked by a `category' text property. - good-pos)) + start-point)) (goto-char pos) (while (and c-state-cache (< (point) (point-max))) @@ -2993,14 +3000,14 @@ comment at the start of cc-engine.el for more info." (list pos scan-back-pos pps-state))))) -(defun c-remove-stale-state-cache-backwards (here cache-pos) +(defun c-remove-stale-state-cache-backwards (here) ;; Strip stale elements of `c-state-cache' by moving backwards through the ;; buffer, and inform the caller of the scenario detected. ;; ;; HERE is the position we're setting `c-state-cache' for. - ;; CACHE-POS is just after the latest recorded position in `c-state-cache' - ;; before HERE, or a position at or near point-min which isn't in a - ;; literal. + ;; CACHE-POS (a locally bound variable) is just after the latest recorded + ;; position in `c-state-cache' before HERE, or a position at or near + ;; point-min which isn't in a literal. ;; ;; This function must only be called only when (> `c-state-cache-good-pos' ;; HERE). Usually the gap between CACHE-POS and HERE is large. It is thus @@ -3023,10 +3030,11 @@ comment at the start of cc-engine.el for more info." ;; The comments in this defun use "paren" to mean parenthesis or square ;; bracket (as contrasted with a brace), and "(" and ")" likewise. ;; - ;; . {..} (..) (..) ( .. { } ) (...) ( .... . ..) - ;; | | | | | | - ;; CP E here D C good - (let ((pos c-state-cache-good-pos) + ;; . {..} (..) (..) ( .. { } ) (...) ( .... . ..) + ;; | | | | | | + ;; CP E here D C good + (let ((cache-pos (c-get-cache-scan-pos here)) ; highest position below HERE in cache (or 1) + (pos c-state-cache-good-pos) pa ren ; positions of "(" and ")" dropped-cons ; whether the last element dropped from `c-state-cache' ; was a cons (representing a brace-pair) @@ -3263,7 +3271,8 @@ comment at the start of cc-engine.el for more info." cache-pos ; highest position below HERE already existing in ; cache (or 1). good-pos - start-point + start-point ; (when scanning forward) a place below HERE where there + ; are no open parens/braces between it and HERE. bopl-state res scan-backward-pos scan-forward-p) ; used for 'backward. @@ -3274,8 +3283,7 @@ comment at the start of cc-engine.el for more info." ;; Strategy? (setq res (c-parse-state-get-strategy here c-state-cache-good-pos) strategy (car res) - cache-pos (cadr res) - start-point (nth 2 res)) + start-point (cadr res)) (when (eq strategy 'BOD) (setq c-state-cache nil @@ -3302,7 +3310,7 @@ comment at the start of cc-engine.el for more info." good-pos))) ((eq strategy 'backward) - (setq res (c-remove-stale-state-cache-backwards here cache-pos) + (setq res (c-remove-stale-state-cache-backwards here) good-pos (car res) scan-backward-pos (cadr res) scan-forward-p (car (cddr res))) -- cgit v1.2.1 From ddc62155d24b9a9e24177bd5f13934e0d5b23159 Mon Sep 17 00:00:00 2001 From: Fabián Ezequiel Gallina Date: Wed, 23 Jan 2013 18:55:46 -0300 Subject: * imenu.el (imenu-default-create-index-function): Remove useless infinite loop check. Fixes: debbugs:13438 --- lisp/ChangeLog | 5 +++++ lisp/imenu.el | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'lisp') diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 49fbf0eb5b6..cddc9dd078c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-01-23 Fabián Ezequiel Gallina + + * imenu.el (imenu-default-create-index-function): Remove useless + infinite loop check. (Bug#13438) + 2013-01-23 Alan Mackenzie Fix a bug in the state cache mechanism. Refactor this a bit. diff --git a/lisp/imenu.el b/lisp/imenu.el index 80dacf937df..b72cbeb42b4 100644 --- a/lisp/imenu.el +++ b/lisp/imenu.el @@ -683,8 +683,6 @@ The alternate method, which is the one most often used, is to call (goto-char (point-max)) ;; Search for the function (while (funcall imenu-prev-index-position-function) - (when (= pos (point)) - (error "Infinite loop at %s:%d: imenu-prev-index-position-function does not move point" (buffer-name) pos)) (setq pos (point)) (save-excursion (setq name (funcall imenu-extract-index-name-function))) -- cgit v1.2.1 From 345f866e048bdc11bc38d894a7eaaa47335443e2 Mon Sep 17 00:00:00 2001 From: Fabián Ezequiel Gallina Date: Wed, 23 Jan 2013 22:24:09 -0300 Subject: * lisp/progmodes/python.el: Enhancements to header documentation about skeletons. Fixes: debbugs:5716 --- lisp/ChangeLog | 5 +++++ lisp/progmodes/python.el | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'lisp') diff --git a/lisp/ChangeLog b/lisp/ChangeLog index cddc9dd078c..2a1c5b70199 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-01-24 Fabián Ezequiel Gallina + + * progmodes/python.el: Enhancements to header documentation about + skeletons. (Bug#5716) + 2013-01-23 Fabián Ezequiel Gallina * imenu.el (imenu-default-create-index-function): Remove useless diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index e58dfa169ef..c321714e2f1 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -155,7 +155,10 @@ ;; dabbrev. If you have `dabbrev-mode' activated and ;; `python-skeleton-autoinsert' is set to t, then whenever you type ;; the name of any of those defined and hit SPC, they will be -;; automatically expanded. +;; automatically expanded. As an alternative you can use the defined +;; skeleton commands: `python-skeleton-class', `python-skeleton-def' +;; `python-skeleton-for', `python-skeleton-if', `python-skeleton-try' +;; and `python-skeleton-while'. ;; FFAP: You can find the filename for a given module when using ffap ;; out of the box. This feature needs an inferior python shell -- cgit v1.2.1