diff options
author | Yoni Rabkin <yoni@rabkins.net> | 2020-12-11 14:29:00 -0500 |
---|---|---|
committer | Yoni Rabkin <yoni@rabkins.net> | 2020-12-11 14:29:00 -0500 |
commit | d567c5942a06fa2604d065101c990d3743bf5f13 (patch) | |
tree | 25e6e3118731137f0de1d36aab845a7662baaf6c | |
parent | a99fc59d344d3819972f87674bf93f90ca0d7c03 (diff) |
* rt-liberation.el: fix n/p in viewer2
Not the best solution, but one that reliably works.
-rw-r--r-- | rt-liberation.el | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/rt-liberation.el b/rt-liberation.el index 3c2962f..d708f43 100644 --- a/rt-liberation.el +++ b/rt-liberation.el @@ -243,6 +243,9 @@ This variable is made buffer local for the ticket history") (defvar rt-liber-display-ticket-at-point-f 'rt-liber-viewer2-display-ticket-at-point "Function for displaying ticket at point in the browser.") +(defvar rt-liber-viewer2-section-regexp "^Ticket [0-9]+ by " + "Regular expression to match a section in the viewer.") + (defvar rt-liber-viewer2-recenter 4 "Argument passed to `recenter' in the viewer.") @@ -1521,25 +1524,29 @@ ASSOC-BROWSER if non-nil should be a ticket browser." (defun rt-liber-viewer2-next-section-in () (interactive) - (forward-line) - (let ((next (next-single-property-change - (point) - 'rt-liberation-viewer-header))) - (if (not next) - (message "no next section") - (goto-char next) - (recenter rt-liber-viewer2-recenter)))) + (when (looking-at rt-liber-viewer2-section-regexp) + (goto-char (1+ (point)))) + (let ((next (re-search-forward rt-liber-viewer2-section-regexp + (point-max) + t))) + (cond ((not next) + (message "no next section")) + (t + (recenter rt-liber-viewer2-recenter))) + (goto-char (point-at-bol)))) (defun rt-liber-viewer2-previous-section-in () (interactive) - (let ((prev (previous-single-property-change - (point-at-bol) - 'rt-liberation-viewer-header))) - (if (not prev) - (message "no previous section") - (goto-char prev) - (forward-line -1) - (recenter rt-liber-viewer2-recenter)))) + (when (looking-at rt-liber-viewer2-section-regexp) + (goto-char (1- (point)))) + (let ((prev (re-search-backward rt-liber-viewer2-section-regexp + (point-min) + t))) + (cond ((not prev) + (message "no previous section")) + (t + (recenter rt-liber-viewer2-recenter))) + (goto-char (point-at-bol)))) (defun rt-liber-viewer2-answer () (interactive) |