[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/go-mode e20a54a 426/495: Speed up go-previous-line-has-dan
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/go-mode e20a54a 426/495: Speed up go-previous-line-has-dangling-op-p |
Date: |
Sat, 7 Aug 2021 09:06:01 -0400 (EDT) |
branch: elpa/go-mode
commit e20a54a6949a70acd37b228be5cd12d3c36595bb
Author: Muir Manders <muir@retailnext.net>
Commit: Peter Sanford <psanford@sanford.io>
Speed up go-previous-line-has-dangling-op-p
Don't call line-number-at-pos since that starts at the beginning of
the buffer and counts lines one at a time. Instead we now cache
danglingness by the position of the start of the line instead of the
line number. We might not need the cache anymore (didn't check).
We also store and return the position of the line with the dangling
operator as the hash value (will use in later commit).
---
go-mode.el | 27 ++++++++++++++++-----------
1 file changed, 16 insertions(+), 11 deletions(-)
diff --git a/go-mode.el b/go-mode.el
index 361c862..009f349 100644
--- a/go-mode.el
+++ b/go-mode.el
@@ -537,17 +537,22 @@ STOP-AT-STRING is not true, over strings."
(point-min))))
(defun go-previous-line-has-dangling-op-p ()
- "Return non-nil if the current line is a continuation line."
- (let* ((cur-line (line-number-at-pos))
- (val (gethash cur-line go-dangling-cache 'nope)))
- (if (or (go--buffer-narrowed-p) (equal val 'nope))
- (save-excursion
- (beginning-of-line)
- (go--backward-irrelevant t)
- (setq val (looking-back go-dangling-operators-regexp
- (- (point)
go--max-dangling-operator-length)))
- (if (not (go--buffer-narrowed-p))
- (puthash cur-line val go-dangling-cache))))
+ "Return non-nil if the current line is a continuation line.
+
+The returned value is the beginning of the line with the dangling operator."
+ (let* ((line-begin (line-beginning-position))
+ (val (gethash line-begin go-dangling-cache 'nope)))
+ (when (or (go--buffer-narrowed-p) (equal val 'nope))
+ (save-excursion
+ (beginning-of-line)
+ (go--backward-irrelevant t)
+ (if (looking-back go-dangling-operators-regexp
+ (- (point) go--max-dangling-operator-length))
+ (setq val (line-beginning-position))
+ (setq val nil))
+
+ (if (not (go--buffer-narrowed-p))
+ (puthash line-begin val go-dangling-cache))))
val))
(defun go--at-function-definition ()
- [nongnu] elpa/go-mode 259110b 396/495: Use a named function for before-change-functions., (continued)
- [nongnu] elpa/go-mode 259110b 396/495: Use a named function for before-change-functions., ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode d964767 399/495: Use forward-word-strictly when available, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 7c38d6a 477/495: Improve commenting partial lines., ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 24990df 400/495: Some simple style fixes for issues found by checkdoc, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 10d6ab4 486/495: Allow leading spaces for compilation error message, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode e79970d 224/495: fix beginning-of-defun for abs(count) > 1, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode cec546c 306/495: Clarify some points in NEWS, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 5c1c546 307/495: Don't fontify parenthesis of multi-line type declaration, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 99b06da 408/495: Describe gofmt-args in the readme and the gofmt docstring (also gofmt-command), ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 7c50c80 410/495: Always move back to same column after applying rcs patch, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode e20a54a 426/495: Speed up go-previous-line-has-dangling-op-p,
ELPA Syncer <=
- [nongnu] elpa/go-mode 1650ae5 434/495: Fix multiline case statement indent., ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 1fcf76d 435/495: Fix indentation regexes to be case insensitive, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 8796ec6 446/495: indent: fix floating point literal with trailing point, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 1bbe1d0 451/495: update default go-packages-function to use go list, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 50e15c7 457/495: Add major mode for go.mod files: go-dot-mod-mode, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode a414da8 465/495: Fontify "font-lock-negation-char-face", ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 1ef3e95 476/495: Fix fontification of single line composite literal., ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode db8284d 485/495: Handle godef "no object" error, ELPA Syncer, 2021/08/07