emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/rust-mode dd231ed 383/486: Avoid signaling "Beginning of b


From: ELPA Syncer
Subject: [nongnu] elpa/rust-mode dd231ed 383/486: Avoid signaling "Beginning of buffer" in rust-lookng-back-macro
Date: Sat, 7 Aug 2021 09:25:58 -0400 (EDT)

branch: elpa/rust-mode
commit dd231edbd8a2805aaf0728fb5800a356ed1d14ce
Author: Miodrag Milenkovic <miodrag.milenkovic@gmail.com>
Commit: Miodrag Milenkovic <miodrag.milenkovic@gmail.com>

    Avoid signaling "Beginning of buffer" in rust-lookng-back-macro
    
    Also save some work if we don't have at least two characters behind us
    in the buffer, we know we can't be looking at a macro then. The signal
    occurs when one tries 'racer-describe' when positioned over "String",
    which eventually ends up calling
    
    (with-temp-buffer
      (insert "<Target=str>")
      (delay-mode-hooks (rust-mode))
      (font-lock-ensure))
    
    This simpler block will also trigger the error
    
    (with-temp-buffer
      (insert "<>")
      (rust-mode)
      (font-lock-ensure))
    
    (font-lock-ensure) call ends up calling (rust-looking-back-macro).
---
 rust-mode.el | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/rust-mode.el b/rust-mode.el
index a433d8d..c3d132a 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -80,7 +80,8 @@ Like `looking-back' but for fixed strings rather than regexps 
(so that it's not
 
 (defun rust-looking-back-macro ()
   "Non-nil if looking back at an ident followed by a !"
-  (save-excursion (backward-char) (and (= ?! (char-after)) 
(rust-looking-back-ident))))
+  (if (> (point) 2)
+      (save-excursion (backward-char) (and (= ?! (char-after)) 
(rust-looking-back-ident)))))
 
 ;; Syntax definitions and helpers
 (defvar rust-mode-syntax-table
@@ -1594,7 +1595,7 @@ This is written mainly to be used as 
`end-of-defun-function' for Rust."
   (when rust-format-on-save
     (unless (executable-find rust-rustfmt-bin)
       (error "Could not locate executable \"%s\"" rust-rustfmt-bin))))
-  
+
 (defvar rustc-compilation-regexps
   (let ((file "\\([^\n]+\\)")
         (start-line "\\([0-9]+\\)")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]