[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/valign c13657e 094/198: Fix infinite loop
From: |
Stefan Monnier |
Subject: |
[elpa] externals/valign c13657e 094/198: Fix infinite loop |
Date: |
Tue, 1 Dec 2020 18:19:24 -0500 (EST) |
branch: externals/valign
commit c13657e7273b9f8b5d53a640dd9a800826fce1ab
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>
Fix infinite loop
* valign.el (valign--beginning-of-table, valign--end-of-table):
Refactor. Now it doesn’t return point and doesn’t go beyond the
current table.
(valign-table, valign--flag-region-advice): Use new definition of
beg/end-of-table.
---
valign.el | 44 ++++++++++++++++----------------------------
1 file changed, 16 insertions(+), 28 deletions(-)
diff --git a/valign.el b/valign.el
index 1cef5b9..9f3c1bf 100644
--- a/valign.el
+++ b/valign.el
@@ -287,36 +287,22 @@ Start from point, stop at LIMIT."
(defun valign--beginning-of-table ()
"Go backward to the beginning of the table at point.
-Assumes point is on a table. Return nil if failed, point
-otherwise."
+Assumes point is on a table."
(beginning-of-line)
- (if (not (looking-at "[ \t]*|")) nil
- (condition-case nil
- (while (looking-at "[ \t]*|")
- (search-backward "\n")
- (beginning-of-line))
- (search-failed nil))
- (unless (looking-at "[ \t]*|")
- (forward-line 1)
+ (let ((p (point)))
+ (while (looking-at "[ \t]*|")
+ (setq p (point))
+ (forward-line -1)
(beginning-of-line))
- (point)))
+ (goto-char p)))
(defun valign--end-of-table ()
"Go forward to the end of the table at point.
-Assumes point is on a table. Return nil if failed, point
-otherwise."
- (let ((p (point)))
- (beginning-of-line)
- (if (not (looking-at "[ \t]*|"))
- (progn (goto-char p) nil)
- (condition-case nil
- (while (looking-at "[ \t]*|")
- ;; Each iteration the point is at BOL.
- (search-forward "\n" nil))
- (search-failed nil))
- ;; Point at the line after the last line of the table.
- (backward-char)
- (point))))
+Assumes point is on a table."
+ (end-of-line)
+ (while (looking-at "\n[ \t]*|")
+ (forward-line)
+ (end-of-line)))
(defun valign--put-text-property (beg end xpos)
"Put text property on text from BEG to END.
@@ -510,8 +496,9 @@ setting to take effect."
;; ‘rev-list’ is the reverse list of right positions of each
;; separator row cell. ‘at-sep-row’ t means we are at
;; a separator row.
- (if (not (valign--end-of-table))
+ (if (not (valign--at-table-p))
(signal 'valign-not-on-table nil))
+ (valign--end-of-table)
(setq end (point))
(valign--beginning-of-table)
(valign--clean-text-property (point) end)
@@ -660,8 +647,9 @@ FLAG is the same as in ‘org-flag-region’."
"Force realign after tab so user can force realign."
(when valign-mode
(save-excursion
- (when-let ((beg (valign--beginning-of-table))
- (end (valign--end-of-table)))
+ (when-let ((on-table (valign--at-table-p))
+ (beg (progn (valign--beginning-of-table) (point)))
+ (end (progn (valign--end-of-table) (point))))
(with-silent-modifications
(put-text-property beg end 'fontified nil))))))
- [elpa] externals/valign cf4f9c9 059/198: * valign.el (valign-initial-alignment): Check buffer visibility., (continued)
- [elpa] externals/valign cf4f9c9 059/198: * valign.el (valign-initial-alignment): Check buffer visibility., Stefan Monnier, 2020/12/01
- [elpa] externals/valign cc53114 060/198: * valign.el (valign-initial-alignment): Fix., Stefan Monnier, 2020/12/01
- [elpa] externals/valign f2ccbd9 069/198: * README.org: Rarrange., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 24ad00d 074/198: * valign.el (valign--cell-width): Includes extra spaces in cell width., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 931d102 035/198: * valign.el (valign-mode): Always add jit-lock hook., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 3a84705 062/198: Suppress some errors, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 455cb2c 070/198: * valign.el (Version): Change to 1.0.0., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 411754b 073/198: Fix function name, Stefan Monnier, 2020/12/01
- [elpa] externals/valign 16656b5 075/198: * valign.el (valign--calculate-table-info): Record empty columns., Stefan Monnier, 2020/12/01
- [elpa] externals/valign ef090ad 077/198: * valign.el (valign--org-mode-hook): Put our hook at the end., Stefan Monnier, 2020/12/01
- [elpa] externals/valign c13657e 094/198: Fix infinite loop,
Stefan Monnier <=
- [elpa] externals/valign a04e1e7 096/198: * valign.el (valign--beginning-of-table): Fix infinite loop., Stefan Monnier, 2020/12/01
- [elpa] externals/valign 1126f3f 113/198: * valign.el (valign-table-quiet): Don't report error even if debug-on-error is non-nil., Stefan Monnier, 2020/12/01
- [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