[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/valign dc72743 051/198: Fix infinite loop
From: |
Stefan Monnier |
Subject: |
[elpa] externals/valign dc72743 051/198: Fix infinite loop |
Date: |
Tue, 1 Dec 2020 18:19:14 -0500 (EST) |
branch: externals/valign
commit dc727434f460a2befee73fda19b89647773e8c72
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>
Fix infinite loop
* valign.el (valign--skip-space-backward, valign--skip-space-forward):
Handle error.
(valign--beginning-of-table, valign--end-of-table,
valign--align-separator-row): Break infinite loop.
---
valign.el | 60 ++++++++++++++++++++++++++++++++++--------------------------
1 file changed, 34 insertions(+), 26 deletions(-)
diff --git a/valign.el b/valign.el
index 823cf7c..37e4850 100644
--- a/valign.el
+++ b/valign.el
@@ -183,30 +183,36 @@ calculate images pixel width."
(defun valign--skip-space-backward ()
"Like (skip-chars-forward \" \").
But we don’t skip over chars with display property."
- (while (and (eq (char-before) ?\s)
- (let ((display
- (plist-get (text-properties-at (1- (point)))
- 'display)))
- ;; When do we stop: when there is a display property
- ;; and it’s not a stretch property.
- (not (and display
- (consp display)
- (not (eq (car display) 'space))))))
- (backward-char)))
+ (condition-case nil
+ (while (and (eq (char-before) ?\s)
+ (let ((display
+ (plist-get (text-properties-at (1- (point)))
+ 'display)))
+ ;; When do we stop: when there is a display property
+ ;; and it’s not a stretch property.
+ (not (and display
+ (consp display)
+ (not (eq (car display) 'space))))))
+ (backward-char))
+ (beginning-of-buffer nil)
+ (end-of-buffer nil)))
(defun valign--skip-space-forward ()
"Like (skip-chars-backward \" \").
But we don’t skip over chars with display property."
- (while (and (eq (char-after) ?\s)
- (let ((display
- (plist-get (text-properties-at (point))
- 'display)))
- ;; When do we stop: when there is a display property
- ;; and it’s not a stretch property.
- (not (and display
- (consp display)
- (not (eq (car display) 'space))))))
- (forward-char)))
+ (condition-case nil
+ (while (and (eq (char-after) ?\s)
+ (let ((display
+ (plist-get (text-properties-at (point))
+ 'display)))
+ ;; When do we stop: when there is a display property
+ ;; and it’s not a stretch property.
+ (not (and display
+ (consp display)
+ (not (eq (car display) 'space))))))
+ (forward-char))
+ (beginning-of-buffer nil)
+ (end-of-buffer nil)))
(defun valign--sperator-p ()
"If the current cell is actually a separator.
@@ -299,8 +305,8 @@ otherwise."
(skip-chars-forward " \t")
(if (not (eq (char-after) ?|))
nil
- (while (eq (char-after) ?|)
- (forward-line -1)
+ (while (and (eq (char-after) ?|)
+ (eq (forward-line -1) 0))
(beginning-of-line)
(skip-chars-forward " \t"))
(unless (eq (char-after) ?|)
@@ -316,8 +322,8 @@ otherwise."
(skip-chars-forward " \t")
(if (not (eq (char-after) ?|))
nil
- (while (eq (char-after) ?|)
- (forward-line 1)
+ (while (and (eq (char-after) ?|)
+ (eq (forward-line 1) 0))
(beginning-of-line)
(skip-chars-forward " \t"))
(search-backward "|")
@@ -450,7 +456,8 @@ POS-LIST is a list of positions for each column’s right
bar."
(ignore type style)
(let ((p (point))
(col-idx 0))
- (while (search-forward "+" (line-end-position) t)
+ (while (and (< (point) (point-max))
+ (search-forward "+" (line-end-position) t))
(valign--separator-row-add-overlay
p (1- (point))
(or (nth col-idx pos-list) 0))
@@ -470,7 +477,8 @@ POS-LIST is a list of positions for each column’s right
bar."
(ignore type style)
(let ((p (point))
(col-idx 0))
- (while (search-forward "|" (line-end-position) t)
+ (while (and (< (point) (point-max))
+ (search-forward "|" (line-end-position) t))
(valign--separator-row-add-overlay
p (1- (point))
(or (nth col-idx pos-list) 0))
- [elpa] externals/valign 143a4de 143/198: Align tables when re-enabling valign-mode, (continued)
- [elpa] externals/valign 143a4de 143/198: Align tables when re-enabling valign-mode, Stefan Monnier, 2020/12/01
- [elpa] externals/valign a9614de 049/198: Update documentation, Stefan Monnier, 2020/12/01
- [elpa] externals/valign f8c521a 050/198: Refactor glyph calculation, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 9035bac 055/198: * valign.el (valign--cell-alignment): Give a default alignment., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 258f627 014/198: * valign.el (valign--clean-text-property): Fix., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 9f62c59 027/198: * valign.el (valign--pixel-width-from-to): Fix invisible text detection., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 6905c5d 030/198: Better handling for invisible text, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 46de910 037/198: Remove outdated documentation., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 322f8f5 040/198: * valign.el (valign-separator-row-style): Fix definition., Stefan Monnier, 2020/12/01
- [elpa] externals/valign f3759db 046/198: Add proper right alignment for markdown tables, Stefan Monnier, 2020/12/01
- [elpa] externals/valign dc72743 051/198: Fix infinite loop,
Stefan Monnier <=
- [elpa] externals/valign cc3e068 053/198: * valign.el (valign--end-of-table): Change re., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 2014054 057/198: ; * README.org: Minor change., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 828aebb 058/198: * valign.el (valign--beginning-of-line): Fix., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 51411a4 061/198: ; * README.org: Minor change., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 04d299e 063/198: Change eql dispatcher to derived-mode, Stefan Monnier, 2020/12/01
- [elpa] externals/valign c7bf583 064/198: Support org-agenda-mode, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 4abb733 065/198: Workaround Emacs’s inability to use multiple derived-mode specializers, Stefan Monnier, 2020/12/01
- [elpa] externals/valign d163320 066/198: Use a custom function to guess mode, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 5d98161 067/198: Ignore some errors, Stefan Monnier, 2020/12/01
- [elpa] externals/valign efb9b0f 068/198: * README.org: Rearrange images., Stefan Monnier, 2020/12/01