branch: externals/idlwave
commit 5bb5ae7322bb433936ce5ce53abd52844699852e
Author: JD Smith <[email protected]>
Commit: JD Smith <[email protected]>
Correctly skip multiple statements, avoiding && and strings.
---
idlwave.el | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/idlwave.el b/idlwave.el
index 643bd13426..db155c3818 100644
--- a/idlwave.el
+++ b/idlwave.el
@@ -2647,9 +2647,13 @@ If not in a statement just moves to end of line. Returns
position."
(defun idlwave-skip-multi-commands (&optional lim)
"Skip past multiple commands on a line (or multiple lines) (with `&')."
(let ((save-point (point)))
- (while (re-search-forward "[^&]*[^&]&" lim t))
- (if (idlwave-quoted) (goto-char save-point))
- (point)))
+ (while (re-search-forward "[^&]*?\\(&\\)[^&]" lim t)
+ (backward-char)
+ (if (and (not (idlwave-quoted))
+ (not (eq (char-before (- (point) 1)) ?&)))
+ (setq save-point (point))))
+ (goto-char save-point)
+ save-point))
(defun idlwave-skip-label-or-case ()
"Skip label or case statement element.