GNU bug report logs - #70396
30.0.50; Eglot, rust-analyzer buffer formatting, and track changes errors

Previous Next

Package: emacs;

Reported by: Steven Allen <steven <at> stebalien.com>

Date: Mon, 15 Apr 2024 13:37:06 UTC

Severity: normal

Found in version 30.0.50

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 70396 in the body.
You can then email your comments to 70396 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#70396; Package emacs. (Mon, 15 Apr 2024 13:37:08 GMT) Full text and rfc822 format available.

Acknowledgement sent to Steven Allen <steven <at> stebalien.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 15 Apr 2024 13:37:08 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Steven Allen <steven <at> stebalien.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; Eglot, rust-analyzer buffer formatting, and track changes
 errors
Date: Mon, 15 Apr 2024 08:35:23 -0500
When formatting a specific rust file with with `eglot-format-buffer`
(rust-analyzer LSP), I'm getting:

* Track changes errors (below).
* An `args-out-of-range` error in `replace-buffer-contents`.

To reproduce:

1. Checkout `https://github.com/Stebalien/xattr/`. I can try for a
   minimal reproducer if necessary.
2. Install rust-analyzer.
2. Run `emacs -Q`
3. `M-x find-file "src/sys/linux_macos.rs"`
   (https://github.com/Stebalien/xattr/blob/master/src/sys/linux_macos.rs).
4. `M-x rust-ts-mode`
5. `M-x eglot`
6. `M-x eglot-format-buffer`



((#1="linux_macos.rs"
     ((t track-changes--recover-from-error nil nil)
      (t track-changes--after (1 1 1) nil)
      (t delete-backward-char (1 nil) nil)
      (t funcall-interactively (delete-backward-char 1 nil) nil)
      (t command-execute (delete-backward-char) nil))
     [#2=
      (down-mouse-1
       (#<window 3 on *Warnings*> 148 (202 . 279) 3984902 nil 148
		 (16 . 3) nil (202 . 201) (12 . 26)))
      #3=(nil . mouse-drag-region) #4=
      (mouse-1
       (#<window 3 on *Warnings*> 148 (202 . 279) 3985082 nil 148
		 (16 . 3) nil (202 . 201) (12 . 26)))
      #5=(nil . mouse-set-point) 134217848 #6=
      (nil . execute-extended-command) 102 #7=
      (nil . self-insert-command) 105 #8=(nil . self-insert-command)
      110 #9=(nil . self-insert-command) 100 #10=
      (nil . self-insert-command) 45 #11=(nil . self-insert-command)
      102 #12=(nil . self-insert-command) 105 #13=
      (nil . self-insert-command) tab #14=(nil . minibuffer-complete)
      return #15=(nil . minibuffer-complete-and-exit) 108 #16=
      (nil . self-insert-command) 105 #17=(nil . self-insert-command)
      110 #18=(nil . self-insert-command) tab #19=
      (nil . minibuffer-complete) return #20=
      (nil . minibuffer-complete-and-exit) 134217848 #21=
      (nil . execute-extended-command) 101 #22=
      (nil . self-insert-command) 103 #23=(nil . self-insert-command)
      108 #24=(nil . self-insert-command) tab #25=
      (nil . minibuffer-complete) 45 #26=(nil . self-insert-command)
      101 #27=(nil . self-insert-command) tab #28=
      (nil . minibuffer-complete) backspace #29=
      (nil . delete-backward-char) backspace #30=
      (nil . delete-backward-char) backspace #31=
      (nil . delete-backward-char) backspace #32=
      (nil . delete-backward-char) backspace #33=
      (nil . delete-backward-char) backspace #34=
      (nil . delete-backward-char) backspace #35=
      (nil . delete-backward-char) backspace #36=
      (nil . delete-backward-char) backspace #37=
      (nil . delete-backward-char) backspace #38=
      (nil . delete-backward-char) backspace #39=
      (nil . delete-backward-char) backspace #40=
      (nil . delete-backward-char) backspace #41=
      (nil . delete-backward-char) backspace #42=
      (nil . delete-backward-char) return #43=
      (nil . minibuffer-complete-and-exit) 7 #44=
      (nil . abort-minibuffers) 134217848 #45=
      (nil . execute-extended-command) 114 #46=
      (nil . self-insert-command) 117 #47=(nil . self-insert-command)
      115 #48=(nil . self-insert-command) 116 #49=
      (nil . self-insert-command) 45 #50=(nil . self-insert-command)
      tab #51=(nil . minibuffer-complete) return #52=
      (nil . minibuffer-complete-and-exit) 134217848 #53=
      (nil . execute-extended-command) 101 #54=
      (nil . self-insert-command) 103 #55=(nil . self-insert-command)
      108 #56=(nil . self-insert-command) 111 #57=
      (nil . self-insert-command) tab #58=(nil . minibuffer-complete)
      return #59=(nil . minibuffer-complete-and-exit) 106 #60=
      (nil . self-insert-command) 106 #61=(nil . self-insert-command)
      106 #62=(nil . self-insert-command) 106 #63=
      (nil . self-insert-command) 106 #64=(nil . self-insert-command)
      106 #65=(nil . self-insert-command) 106 #66=
      (nil . self-insert-command) 106 #67=(nil . self-insert-command)
      106 #68=(nil . self-insert-command) 106 #69=
      (nil . self-insert-command) 106 #70=(nil . self-insert-command)
      106 #71=(nil . self-insert-command) 106 #72=
      (nil . self-insert-command) 106 #73=(nil . self-insert-command)
      106 #74=(nil . self-insert-command) backspace #75=
      (nil . delete-backward-char) backspace #76=
      (nil . delete-backward-char) backspace #77=
      (nil . delete-backward-char) backspace #78=
      (nil . delete-backward-char) backspace #79=
      (nil . delete-backward-char) backspace #80=
      (nil . delete-backward-char) backspace #81=
      (nil . delete-backward-char) backspace #82=
      (nil . delete-backward-char) backspace #83=
      (nil . delete-backward-char) backspace #84=
      (nil . delete-backward-char) backspace #85=
      (nil . delete-backward-char) backspace #86=
      (nil . delete-backward-char) backspace #87=
      (nil . delete-backward-char) backspace #88=
      (nil . delete-backward-char) backspace #89=
      (nil . delete-backward-char) 134217848 #90=
      (nil . execute-extended-command) 102 #91=
      (nil . self-insert-command) 111 #92=(nil . self-insert-command)
      114 #93=(nil . self-insert-command) 109 #94=
      (nil . self-insert-command) 97 #95=(nil . self-insert-command)
      116 #96=(nil . self-insert-command) 45 #97=
      (nil . self-insert-command) 98 #98=(nil . self-insert-command)
      117 #99=(nil . self-insert-command) 102 #100=
      (nil . self-insert-command) tab #101=(nil . minibuffer-complete)
      120 #102=(nil . self-insert-command) backspace #103=
      (nil . delete-backward-char) tab #104=
      (nil . minibuffer-complete) 5 #105=(nil . move-end-of-line)
      backspace #106=(nil . delete-backward-char) backspace #107=
      (nil . delete-backward-char) backspace #108=
      (nil . delete-backward-char) backspace #109=
      (nil . delete-backward-char) backspace #110=
      (nil . delete-backward-char) backspace #111=
      (nil . delete-backward-char) backspace #112=
      (nil . delete-backward-char) backspace #113=
      (nil . delete-backward-char) backspace #114=
      (nil . delete-backward-char) backspace #115=
      (nil . delete-backward-char) backspace #116=
      (nil . delete-backward-char) backspace #117=
      (nil . delete-backward-char) backspace #118=
      (nil . delete-backward-char) backspace #119=
      (nil . delete-backward-char) backspace #120=
      (nil . delete-backward-char) backspace #121=
      (nil . delete-backward-char) backspace #122=
      (nil . delete-backward-char) backspace #123=
      (nil . delete-backward-char) 101 #124=
      (nil . self-insert-command) 103 #125=(nil . self-insert-command)
      108 #126=(nil . self-insert-command) 111 #127=
      (nil . self-insert-command) 116 #128=(nil . self-insert-command)
      45 #129=(nil . self-insert-command) 102 #130=
      (nil . self-insert-command) 111 #131=(nil . self-insert-command)
      114 #132=(nil . self-insert-command) tab #133=
      (nil . minibuffer-complete) tab #134=(nil . minibuffer-complete)
      tab #135=(nil . minibuffer-complete) 109 #136=
      (nil . self-insert-command) 97 #137=(nil . self-insert-command)
      116 #138=(nil . self-insert-command) 45 #139=
      (nil . self-insert-command) tab #140=(nil . minibuffer-complete)
      return #141=(nil . minibuffer-complete-and-exit) 106 #142=
      (nil . self-insert-command) 106 #143=(nil . self-insert-command)
      106 #144=(nil . self-insert-command) 106 #145=
      (nil . self-insert-command) 106 #146=(nil . self-insert-command)
      106 #147=(nil . self-insert-command) backspace #148=
      (nil . delete-backward-char) backspace #149=
      (nil . delete-backward-char) backspace #150=
      (nil . delete-backward-char) backspace #151=
      (nil . delete-backward-char) backspace #152=
      (nil . delete-backward-char) backspace
      (nil . delete-backward-char)])
 (#1#
  ((t track-changes--recover-from-error nil nil)
   (t track-changes--after (2 2 1) nil)
   (t delete-backward-char (1 nil) nil)
   (t funcall-interactively (delete-backward-char 1 nil) nil)
   (t command-execute (delete-backward-char) nil))
  [#2# #3# #4# #5# 134217848 #6# 102 #7# 105 #8# 110 #9# 100 #10# 45
       #11# 102 #12# 105 #13# tab #14# return #15# 108 #16# 105 #17#
       110 #18# tab #19# return #20# 134217848 #21# 101 #22# 103 #23#
       108 #24# tab #25# 45 #26# 101 #27# tab #28# backspace #29#
       backspace #30# backspace #31# backspace #32# backspace #33#
       backspace #34# backspace #35# backspace #36# backspace #37#
       backspace #38# backspace #39# backspace #40# backspace #41#
       backspace #42# return #43# 7 #44# 134217848 #45# 114 #46# 117
       #47# 115 #48# 116 #49# 45 #50# tab #51# return #52# 134217848
       #53# 101 #54# 103 #55# 108 #56# 111 #57# tab #58# return #59#
       106 #60# 106 #61# 106 #62# 106 #63# 106 #64# 106 #65# 106 #66#
       106 #67# 106 #68# 106 #69# 106 #70# 106 #71# 106 #72# 106 #73#
       106 #74# backspace #75# backspace #76# backspace #77# backspace
       #78# backspace #79# backspace #80# backspace #81# backspace
       #82# backspace #83# backspace #84# backspace #85# backspace
       #86# backspace #87# backspace #88# backspace #89# 134217848
       #90# 102 #91# 111 #92# 114 #93# 109 #94# 97 #95# 116 #96# 45
       #97# 98 #98# 117 #99# 102 #100# tab #101# 120 #102# backspace
       #103# tab #104# 5 #105# backspace #106# backspace #107#
       backspace #108# backspace #109# backspace #110# backspace #111#
       backspace #112# backspace #113# backspace #114# backspace #115#
       backspace #116# backspace #117# backspace #118# backspace #119#
       backspace #120# backspace #121# backspace #122# backspace #123#
       101 #124# 103 #125# 108 #126# 111 #127# 116 #128# 45 #129# 102
       #130# 111 #131# 114 #132# tab #133# tab #134# tab #135# 109
       #136# 97 #137# 116 #138# 45 #139# tab #140# return #141# 106
       #142# 106 #143# 106 #144# 106 #145# 106 #146# 106 #147#
       backspace #148# backspace #149# backspace #150# backspace #151#
       backspace #152#])
 (#1#
  ((t track-changes--recover-from-error nil nil)
   (t track-changes--after (3 3 1) nil)
   (t delete-backward-char (1 nil) nil)
   (t funcall-interactively (delete-backward-char 1 nil) nil)
   (t command-execute (delete-backward-char) nil))
  [#2# #3# #4# #5# 134217848 #6# 102 #7# 105 #8# 110 #9# 100 #10# 45
       #11# 102 #12# 105 #13# tab #14# return #15# 108 #16# 105 #17#
       110 #18# tab #19# return #20# 134217848 #21# 101 #22# 103 #23#
       108 #24# tab #25# 45 #26# 101 #27# tab #28# backspace #29#
       backspace #30# backspace #31# backspace #32# backspace #33#
       backspace #34# backspace #35# backspace #36# backspace #37#
       backspace #38# backspace #39# backspace #40# backspace #41#
       backspace #42# return #43# 7 #44# 134217848 #45# 114 #46# 117
       #47# 115 #48# 116 #49# 45 #50# tab #51# return #52# 134217848
       #53# 101 #54# 103 #55# 108 #56# 111 #57# tab #58# return #59#
       106 #60# 106 #61# 106 #62# 106 #63# 106 #64# 106 #65# 106 #66#
       106 #67# 106 #68# 106 #69# 106 #70# 106 #71# 106 #72# 106 #73#
       106 #74# backspace #75# backspace #76# backspace #77# backspace
       #78# backspace #79# backspace #80# backspace #81# backspace
       #82# backspace #83# backspace #84# backspace #85# backspace
       #86# backspace #87# backspace #88# backspace #89# 134217848
       #90# 102 #91# 111 #92# 114 #93# 109 #94# 97 #95# 116 #96# 45
       #97# 98 #98# 117 #99# 102 #100# tab #101# 120 #102# backspace
       #103# tab #104# 5 #105# backspace #106# backspace #107#
       backspace #108# backspace #109# backspace #110# backspace #111#
       backspace #112# backspace #113# backspace #114# backspace #115#
       backspace #116# backspace #117# backspace #118# backspace #119#
       backspace #120# backspace #121# backspace #122# backspace #123#
       101 #124# 103 #125# 108 #126# 111 #127# 116 #128# 45 #129# 102
       #130# 111 #131# 114 #132# tab #133# tab #134# tab #135# 109
       #136# 97 #137# 116 #138# 45 #139# tab #140# return #141# 106
       #142# 106 #143# 106 #144# 106 #145# 106 #146# 106 #147#
       backspace #148# backspace #149# backspace #150# backspace #151#])
 (#1#
  ((t track-changes--recover-from-error nil nil)
   (t track-changes--after (4 4 1) nil)
   (t delete-backward-char (1 nil) nil)
   (t funcall-interactively (delete-backward-char 1 nil) nil)
   (t command-execute (delete-backward-char) nil))
  [#2# #3# #4# #5# 134217848 #6# 102 #7# 105 #8# 110 #9# 100 #10# 45
       #11# 102 #12# 105 #13# tab #14# return #15# 108 #16# 105 #17#
       110 #18# tab #19# return #20# 134217848 #21# 101 #22# 103 #23#
       108 #24# tab #25# 45 #26# 101 #27# tab #28# backspace #29#
       backspace #30# backspace #31# backspace #32# backspace #33#
       backspace #34# backspace #35# backspace #36# backspace #37#
       backspace #38# backspace #39# backspace #40# backspace #41#
       backspace #42# return #43# 7 #44# 134217848 #45# 114 #46# 117
       #47# 115 #48# 116 #49# 45 #50# tab #51# return #52# 134217848
       #53# 101 #54# 103 #55# 108 #56# 111 #57# tab #58# return #59#
       106 #60# 106 #61# 106 #62# 106 #63# 106 #64# 106 #65# 106 #66#
       106 #67# 106 #68# 106 #69# 106 #70# 106 #71# 106 #72# 106 #73#
       106 #74# backspace #75# backspace #76# backspace #77# backspace
       #78# backspace #79# backspace #80# backspace #81# backspace
       #82# backspace #83# backspace #84# backspace #85# backspace
       #86# backspace #87# backspace #88# backspace #89# 134217848
       #90# 102 #91# 111 #92# 114 #93# 109 #94# 97 #95# 116 #96# 45
       #97# 98 #98# 117 #99# 102 #100# tab #101# 120 #102# backspace
       #103# tab #104# 5 #105# backspace #106# backspace #107#
       backspace #108# backspace #109# backspace #110# backspace #111#
       backspace #112# backspace #113# backspace #114# backspace #115#
       backspace #116# backspace #117# backspace #118# backspace #119#
       backspace #120# backspace #121# backspace #122# backspace #123#
       101 #124# 103 #125# 108 #126# 111 #127# 116 #128# 45 #129# 102
       #130# 111 #131# 114 #132# tab #133# tab #134# tab #135# 109
       #136# 97 #137# 116 #138# 45 #139# tab #140# return #141# 106
       #142# 106 #143# 106 #144# 106 #145# 106 #146# 106 #147#
       backspace #148# backspace #149# backspace #150#])
 (#1#
  ((t track-changes--recover-from-error nil nil)
   (t track-changes--after (5 5 1) nil)
   (t delete-backward-char (1 nil) nil)
   (t funcall-interactively (delete-backward-char 1 nil) nil)
   (t command-execute (delete-backward-char) nil))
  [#2# #3# #4# #5# 134217848 #6# 102 #7# 105 #8# 110 #9# 100 #10# 45
       #11# 102 #12# 105 #13# tab #14# return #15# 108 #16# 105 #17#
       110 #18# tab #19# return #20# 134217848 #21# 101 #22# 103 #23#
       108 #24# tab #25# 45 #26# 101 #27# tab #28# backspace #29#
       backspace #30# backspace #31# backspace #32# backspace #33#
       backspace #34# backspace #35# backspace #36# backspace #37#
       backspace #38# backspace #39# backspace #40# backspace #41#
       backspace #42# return #43# 7 #44# 134217848 #45# 114 #46# 117
       #47# 115 #48# 116 #49# 45 #50# tab #51# return #52# 134217848
       #53# 101 #54# 103 #55# 108 #56# 111 #57# tab #58# return #59#
       106 #60# 106 #61# 106 #62# 106 #63# 106 #64# 106 #65# 106 #66#
       106 #67# 106 #68# 106 #69# 106 #70# 106 #71# 106 #72# 106 #73#
       106 #74# backspace #75# backspace #76# backspace #77# backspace
       #78# backspace #79# backspace #80# backspace #81# backspace
       #82# backspace #83# backspace #84# backspace #85# backspace
       #86# backspace #87# backspace #88# backspace #89# 134217848
       #90# 102 #91# 111 #92# 114 #93# 109 #94# 97 #95# 116 #96# 45
       #97# 98 #98# 117 #99# 102 #100# tab #101# 120 #102# backspace
       #103# tab #104# 5 #105# backspace #106# backspace #107#
       backspace #108# backspace #109# backspace #110# backspace #111#
       backspace #112# backspace #113# backspace #114# backspace #115#
       backspace #116# backspace #117# backspace #118# backspace #119#
       backspace #120# backspace #121# backspace #122# backspace #123#
       101 #124# 103 #125# 108 #126# 111 #127# 116 #128# 45 #129# 102
       #130# 111 #131# 114 #132# tab #133# tab #134# tab #135# 109
       #136# 97 #137# 116 #138# 45 #139# tab #140# return #141# 106
       #142# 106 #143# 106 #144# 106 #145# 106 #146# 106 #147#
       backspace #148# backspace #149#])
 (#1#
  ((t track-changes--recover-from-error nil nil)
   (t track-changes--after (6 6 1) nil)
   (t delete-backward-char (1 nil) nil)
   (t funcall-interactively (delete-backward-char 1 nil) nil)
   (t command-execute (delete-backward-char) nil))
  [#2# #3# #4# #5# 134217848 #6# 102 #7# 105 #8# 110 #9# 100 #10# 45
       #11# 102 #12# 105 #13# tab #14# return #15# 108 #16# 105 #17#
       110 #18# tab #19# return #20# 134217848 #21# 101 #22# 103 #23#
       108 #24# tab #25# 45 #26# 101 #27# tab #28# backspace #29#
       backspace #30# backspace #31# backspace #32# backspace #33#
       backspace #34# backspace #35# backspace #36# backspace #37#
       backspace #38# backspace #39# backspace #40# backspace #41#
       backspace #42# return #43# 7 #44# 134217848 #45# 114 #46# 117
       #47# 115 #48# 116 #49# 45 #50# tab #51# return #52# 134217848
       #53# 101 #54# 103 #55# 108 #56# 111 #57# tab #58# return #59#
       106 #60# 106 #61# 106 #62# 106 #63# 106 #64# 106 #65# 106 #66#
       106 #67# 106 #68# 106 #69# 106 #70# 106 #71# 106 #72# 106 #73#
       106 #74# backspace #75# backspace #76# backspace #77# backspace
       #78# backspace #79# backspace #80# backspace #81# backspace
       #82# backspace #83# backspace #84# backspace #85# backspace
       #86# backspace #87# backspace #88# backspace #89# 134217848
       #90# 102 #91# 111 #92# 114 #93# 109 #94# 97 #95# 116 #96# 45
       #97# 98 #98# 117 #99# 102 #100# tab #101# 120 #102# backspace
       #103# tab #104# 5 #105# backspace #106# backspace #107#
       backspace #108# backspace #109# backspace #110# backspace #111#
       backspace #112# backspace #113# backspace #114# backspace #115#
       backspace #116# backspace #117# backspace #118# backspace #119#
       backspace #120# backspace #121# backspace #122# backspace #123#
       101 #124# 103 #125# 108 #126# 111 #127# 116 #128# 45 #129# 102
       #130# 111 #131# 114 #132# tab #133# tab #134# tab #135# 109
       #136# 97 #137# 116 #138# 45 #139# tab #140# return #141# 106
       #142# 106 #143# 106 #144# 106 #145# 106 #146# 106 #147#
       backspace #148#])
 (#1#
  ((t track-changes--recover-from-error nil nil)
   (t track-changes-fetch
      (#153=
       #s(track-changes--tracker :signal eglot--track-changes-signal
				 :state
				 #s(track-changes--state :beg 3969
							 :end 1
							 :before nil
							 :next nil)
				 :nobefore nil :immediate nil)
       #f(compiled-function (beg end before) #<bytecode
			    0x10e235d56586>))
      nil)
   (t eglot--track-changes-fetch (#153#) nil)
   (t eglot--signal-textDocument/didChange nil nil)
   (t run-hooks (eglot--document-changed-hook) nil)
   (t #154=#f(compiled-function () #<bytecode -0x2804b3cee14c5fc>) nil
      nil)
   (t apply (#154# nil) nil)
   (t timer-event-handler ([t 0 0 500000 nil #154# nil idle 0 nil])
      nil))
  [#2# #3# #4# #5# 134217848 #6# 102 #7# 105 #8# 110 #9# 100 #10# 45
       #11# 102 #12# 105 #13# tab #14# return #15# 108 #16# 105 #17#
       110 #18# tab #19# return #20# 134217848 #21# 101 #22# 103 #23#
       108 #24# tab #25# 45 #26# 101 #27# tab #28# backspace #29#
       backspace #30# backspace #31# backspace #32# backspace #33#
       backspace #34# backspace #35# backspace #36# backspace #37#
       backspace #38# backspace #39# backspace #40# backspace #41#
       backspace #42# return #43# 7 #44# 134217848 #45# 114 #46# 117
       #47# 115 #48# 116 #49# 45 #50# tab #51# return #52# 134217848
       #53# 101 #54# 103 #55# 108 #56# 111 #57# tab #58# return #59#
       106 #60# 106 #61# 106 #62# 106 #63# 106 #64# 106 #65# 106 #66#
       106 #67# 106 #68# 106 #69# 106 #70# 106 #71# 106 #72# 106 #73#
       106 #74# backspace #75# backspace #76# backspace #77# backspace
       #78# backspace #79# backspace #80# backspace #81# backspace
       #82# backspace #83# backspace #84# backspace #85# backspace
       #86# backspace #87# backspace #88# backspace #89# 134217848
       #90# 102 #91# 111 #92# 114 #93# 109 #94# 97 #95# 116 #96# 45
       #97# 98 #98# 117 #99# 102 #100# tab #101# 120 #102# backspace
       #103# tab #104# 5 #105# backspace #106# backspace #107#
       backspace #108# backspace #109# backspace #110# backspace #111#
       backspace #112# backspace #113# backspace #114# backspace #115#
       backspace #116# backspace #117# backspace #118# backspace #119#
       backspace #120# backspace #121# backspace #122# backspace #123#
       101 #124# 103 #125# 108 #126# 111 #127# 116 #128# 45 #129# 102
       #130# 111 #131# 114 #132# tab #133# tab #134# tab #135# 109
       #136# 97 #137# 116 #138# 45 #139# tab #140# return #141# 106
       #142# 106 #143# 106 #144# 106 #145# 106 #146# 106 #147#])
 (#1#
  ((t track-changes--recover-from-error nil nil)
   (t track-changes-fetch
      (#153#
       #f(compiled-function (beg end before) #<bytecode
			    0x10e235d56586>))
      nil)
   (t eglot--track-changes-fetch (#153#) nil)
   (t eglot--track-changes-signal (#153# 3815) nil)
   (t track-changes--before (2 3) nil)
   (t track-changes--after (2 3 0) nil)
   (t self-insert-command (1 106) nil)
   (t funcall-interactively (self-insert-command 1 106) nil)
   (t command-execute (self-insert-command) nil))
  [#2# #3# #4# #5# 134217848 #6# 102 #7# 105 #8# 110 #9# 100 #10# 45
       #11# 102 #12# 105 #13# tab #14# return #15# 108 #16# 105 #17#
       110 #18# tab #19# return #20# 134217848 #21# 101 #22# 103 #23#
       108 #24# tab #25# 45 #26# 101 #27# tab #28# backspace #29#
       backspace #30# backspace #31# backspace #32# backspace #33#
       backspace #34# backspace #35# backspace #36# backspace #37#
       backspace #38# backspace #39# backspace #40# backspace #41#
       backspace #42# return #43# 7 #44# 134217848 #45# 114 #46# 117
       #47# 115 #48# 116 #49# 45 #50# tab #51# return #52# 134217848
       #53# 101 #54# 103 #55# 108 #56# 111 #57# tab #58# return #59#
       106 #60# 106 #61# 106 #62# 106 #63# 106 #64# 106 #65# 106 #66#
       106 #67# 106 #68# 106 #69# 106 #70# 106 #71# 106 #72# 106 #73#
       106 #74# backspace #75# backspace #76# backspace #77# backspace
       #78# backspace #79# backspace #80# backspace #81# backspace
       #82# backspace #83# backspace #84# backspace #85# backspace
       #86# backspace #87# backspace #88# backspace #89# 134217848
       #90# 102 #91# 111 #92# 114 #93# 109 #94# 97 #95# 116 #96# 45
       #97# 98 #98# 117 #99# 102 #100# tab #101# 120 #102# backspace
       #103# tab #104# 5 #105# backspace #106# backspace #107#
       backspace #108# backspace #109# backspace #110# backspace #111#
       backspace #112# backspace #113# backspace #114# backspace #115#
       backspace #116# backspace #117# backspace #118# backspace #119#
       backspace #120# backspace #121# backspace #122# backspace #123#
       101 #124# 103 #125# 108 #126# 111 #127# 116 #128# 45 #129# 102
       #130# 111 #131# 114 #132# tab #133# tab #134# tab #135# 109
       #136# 97 #137# 116 #138# 45 #139# tab #140# return #141# 106
       #142# 106 #143#])
 (#1#
  ((t track-changes--recover-from-error nil nil)
   (t track-changes--after (1 2 0) nil)
   (t self-insert-command (1 106) nil)
   (t funcall-interactively (self-insert-command 1 106) nil)
   (t command-execute (self-insert-command) nil))
  [#2# #3# #4# #5# 134217848 #6# 102 #7# 105 #8# 110 #9# 100 #10# 45
       #11# 102 #12# 105 #13# tab #14# return #15# 108 #16# 105 #17#
       110 #18# tab #19# return #20# 134217848 #21# 101 #22# 103 #23#
       108 #24# tab #25# 45 #26# 101 #27# tab #28# backspace #29#
       backspace #30# backspace #31# backspace #32# backspace #33#
       backspace #34# backspace #35# backspace #36# backspace #37#
       backspace #38# backspace #39# backspace #40# backspace #41#
       backspace #42# return #43# 7 #44# 134217848 #45# 114 #46# 117
       #47# 115 #48# 116 #49# 45 #50# tab #51# return #52# 134217848
       #53# 101 #54# 103 #55# 108 #56# 111 #57# tab #58# return #59#
       106 #60# 106 #61# 106 #62# 106 #63# 106 #64# 106 #65# 106 #66#
       106 #67# 106 #68# 106 #69# 106 #70# 106 #71# 106 #72# 106 #73#
       106 #74# backspace #75# backspace #76# backspace #77# backspace
       #78# backspace #79# backspace #80# backspace #81# backspace
       #82# backspace #83# backspace #84# backspace #85# backspace
       #86# backspace #87# backspace #88# backspace #89# 134217848
       #90# 102 #91# 111 #92# 114 #93# 109 #94# 97 #95# 116 #96# 45
       #97# 98 #98# 117 #99# 102 #100# tab #101# 120 #102# backspace
       #103# tab #104# 5 #105# backspace #106# backspace #107#
       backspace #108# backspace #109# backspace #110# backspace #111#
       backspace #112# backspace #113# backspace #114# backspace #115#
       backspace #116# backspace #117# backspace #118# backspace #119#
       backspace #120# backspace #121# backspace #122# backspace #123#
       101 #124# 103 #125# 108 #126# 111 #127# 116 #128# 45 #129# 102
       #130# 111 #131# 114 #132# tab #133# tab #134# tab #135# 109
       #136# 97 #137# 116 #138# 45 #139# tab #140# return #141# 106
       #142#]))



In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
 1.18.0) of 2024-04-14 built on Laptop
Repository revision: 3d3602055264ca3095b7f28ca7e27a6f2782649a
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101013
System Description: Arch Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-modules --without-m17n-flt --without-selinux --without-pop
 --without-gconf --enable-link-time-optimization
 --with-native-compilation=yes --with-xinput2 --with-x-toolkit=no
 --without-toolkit-scroll-bars --without-xft --without-xaw3d
 --with-cairo-xcb --with-sound=no --with-tree-sitter --without-gpm
 --without-compress-install
 '--program-transform-name=s/\([ec]tags\)/\1.emacs/'
 'CFLAGS=-march=native -mtune=native -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection -flto=auto' 'LDFLAGS=-Wl,-O1
 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now
 -Wl,-z,pack-relative-relocs -Wl,-z,noexecstack -flto=auto''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
OLDXMENU PDUMPER PNG RSVG SECCOMP SQLITE3 THREADS TIFF TREE_SITTER WEBP
X11 XDBE XIM XINPUT2 XPM ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Rust

Minor modes in effect:
  eglot-inlay-hints-mode: t
  eglot--managed-mode: t
  flymake-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config
gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils rust-ts-mode rx c-ts-common treesit shell
pcomplete cl-extra eglot external-completion jsonrpc xref flymake
thingatpt project diff ert pp ewoc debug backtrace help-mode find-func
filenotify warnings compile text-property-search comint ansi-osc
ansi-color ring pcase url-util url-parse auth-source cl-seq eieio
eieio-core cl-macs icons password-cache json map byte-opt gv bytecomp
byte-compile url-vars imenu vc-git diff-mode track-changes easy-mmode
vc-dispatcher time-date subr-x cl-loaddefs cl-lib rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo xinput2 x multi-tty move-toolbar make-network-process
native-compile emacs)

Memory information:
((conses 16 129374 9610) (symbols 48 11382 0) (strings 32 32936 3210)
 (string-bytes 1 1071331) (vectors 16 20476)
 (vector-slots 8 251373 8274) (floats 8 74 289) (intervals 56 767 0)
 (buffers 992 18))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70396; Package emacs. (Mon, 15 Apr 2024 13:56:12 GMT) Full text and rfc822 format available.

Message #8 received at 70396 <at> debbugs.gnu.org (full text, mbox):

From: Steven Allen <steven <at> stebalien.com>
To: 70396 <at> debbugs.gnu.org
Subject: Re: bug#70396: Acknowledgement (30.0.50; Eglot, rust-analyzer
 buffer formatting, and track changes errors)
Date: Mon, 15 Apr 2024 08:54:37 -0500
One additional detail I forgot to mention: repeatedly calling
`eglot-format-buffer` starts to corrupt the text the end of the buffer
(but rust-analyzer may be to blame for that one).




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70396; Package emacs. (Mon, 15 Apr 2024 13:58:06 GMT) Full text and rfc822 format available.

Message #11 received at 70396 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Steven Allen <steven <at> stebalien.com>,
 Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 70396 <at> debbugs.gnu.org
Subject: Re: bug#70396: 30.0.50;
 Eglot, rust-analyzer buffer formatting, and track changes errors
Date: Mon, 15 Apr 2024 16:57:11 +0300
> Date: Mon, 15 Apr 2024 08:35:23 -0500
> From:  Steven Allen via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> 
> When formatting a specific rust file with with `eglot-format-buffer`
> (rust-analyzer LSP), I'm getting:
> 
> * Track changes errors (below).
> * An `args-out-of-range` error in `replace-buffer-contents`.
> 
> To reproduce:
> 
> 1. Checkout `https://github.com/Stebalien/xattr/`. I can try for a
>    minimal reproducer if necessary.
> 2. Install rust-analyzer.
> 2. Run `emacs -Q`
> 3. `M-x find-file "src/sys/linux_macos.rs"`
>    (https://github.com/Stebalien/xattr/blob/master/src/sys/linux_macos.rs).
> 4. `M-x rust-ts-mode`
> 5. `M-x eglot`
> 6. `M-x eglot-format-buffer`

Adding Stefan, as I think this might be related to the recent
track-changes changes.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70396; Package emacs. (Mon, 15 Apr 2024 14:08:11 GMT) Full text and rfc822 format available.

Message #14 received at 70396 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Steven Allen <steven <at> stebalien.com>
Cc: 70396 <at> debbugs.gnu.org
Subject: Re: bug#70396: 30.0.50; Eglot, rust-analyzer buffer formatting, and
 track changes errors
Date: Mon, 15 Apr 2024 10:07:07 -0400
> When formatting a specific rust file with with `eglot-format-buffer`
> (rust-analyzer LSP), I'm getting:
>
> * Track changes errors (below).
> * An `args-out-of-range` error in `replace-buffer-contents`.
>
> To reproduce:
>
> 1. Checkout `https://github.com/Stebalien/xattr/`. I can try for a
>    minimal reproducer if necessary.
> 2. Install rust-analyzer.
> 2. Run `emacs -Q`
> 3. `M-x find-file "src/sys/linux_macos.rs"`
>    (https://github.com/Stebalien/xattr/blob/master/src/sys/linux_macos.rs).
> 4. `M-x rust-ts-mode`
> 5. `M-x eglot`
> 6. `M-x eglot-format-buffer`

Thanks for the nice bug report.
Will look into it ASAP,


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70396; Package emacs. (Mon, 15 Apr 2024 14:18:03 GMT) Full text and rfc822 format available.

Message #17 received at 70396 <at> debbugs.gnu.org (full text, mbox):

From: Steven Allen <steven <at> stebalien.com>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 70396 <at> debbugs.gnu.org
Subject: Re: bug#70396: 30.0.50; Eglot, rust-analyzer buffer formatting, and
 track changes errors
Date: Mon, 15 Apr 2024 09:16:39 -0500
Thanks!




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70396; Package emacs. (Mon, 15 Apr 2024 20:02:03 GMT) Full text and rfc822 format available.

Message #20 received at 70396 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Steven Allen <steven <at> stebalien.com>
Cc: 70396 <at> debbugs.gnu.org
Subject: Re: bug#70396: 30.0.50; Eglot, rust-analyzer buffer formatting, and
 track changes errors
Date: Mon, 15 Apr 2024 16:01:21 -0400
>> * Track changes errors (below).
>> * An `args-out-of-range` error in `replace-buffer-contents`.
>>
>> To reproduce:
>>
>> 1. Checkout `https://github.com/Stebalien/xattr/`. I can try for a
>>    minimal reproducer if necessary.
>> 2. Install rust-analyzer.
>> 2. Run `emacs -Q`
>> 3. `M-x find-file "src/sys/linux_macos.rs"`
>>    (https://github.com/Stebalien/xattr/blob/master/src/sys/linux_macos.rs).
>> 4. `M-x rust-ts-mode`
>> 5. `M-x eglot`
>> 6. `M-x eglot-format-buffer`

I could reproduce this in a C mode buffer (and hence save me the
trouble of installing more tools).
I pushed the patch below to `master` which should fix the problem.
Can you confirm it's fixed in your side as well?


        Stefan


diff --git a/lisp/emacs-lisp/track-changes.el b/lisp/emacs-lisp/track-changes.el
index 1bab7ca38fd..df4aad0d596 100644
--- a/lisp/emacs-lisp/track-changes.el
+++ b/lisp/emacs-lisp/track-changes.el
@@ -481,12 +481,12 @@
                 (funcall signal-if-disjoint end track-changes--before-beg)
               (funcall signal-if-disjoint track-changes--before-end beg)))
           (funcall reset))
-      (cl-assert (save-restriction
+      (save-restriction
                    (widen)
-                   (<= (point-min)
+        (cl-assert (<= (point-min)
                        track-changes--before-beg
                        track-changes--before-end
-                       (point-max))))
+                       (point-max)))
       (when (< beg track-changes--before-beg)
         (if (and track-changes--disjoint-trackers
                  (funcall signal-if-disjoint end track-changes--before-beg))
@@ -517,6 +517,6 @@
             (setf track-changes--before-end new-bend)
             (cl-callf concat track-changes--before-string
-              (buffer-substring-no-properties old-bend new-bend))))))))
+                (buffer-substring-no-properties old-bend new-bend)))))))))
 
 (defun track-changes--after (beg end len)
   (cl-assert track-changes--state)





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70396; Package emacs. (Mon, 15 Apr 2024 20:32:03 GMT) Full text and rfc822 format available.

Message #23 received at 70396 <at> debbugs.gnu.org (full text, mbox):

From: Steven Allen <steven <at> stebalien.com>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 70396 <at> debbugs.gnu.org
Subject: Re: bug#70396: 30.0.50; Eglot, rust-analyzer buffer formatting, and
 track changes errors
Date: Mon, 15 Apr 2024 15:30:46 -0500
> I could reproduce this in a C mode buffer (and hence save me the
> trouble of installing more tools).
> I pushed the patch below to `master` which should fix the problem.
> Can you confirm it's fixed in your side as well?

Master works for me. Thanks for the quick fix!

- Steven




Reply sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
You have taken responsibility. (Mon, 15 Apr 2024 21:51:03 GMT) Full text and rfc822 format available.

Notification sent to Steven Allen <steven <at> stebalien.com>:
bug acknowledged by developer. (Mon, 15 Apr 2024 21:51:04 GMT) Full text and rfc822 format available.

Message #28 received at 70396-done <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Steven Allen <steven <at> stebalien.com>
Cc: 70396-done <at> debbugs.gnu.org
Subject: Re: bug#70396: 30.0.50; Eglot, rust-analyzer buffer formatting, and
 track changes errors
Date: Mon, 15 Apr 2024 17:49:54 -0400
>> I could reproduce this in a C mode buffer (and hence save me the
>> trouble of installing more tools).
>> I pushed the patch below to `master` which should fix the problem.
>> Can you confirm it's fixed in your side as well?
> Master works for me.

Thanks, closing.

> Thanks for the quick fix!

My pleasure,


        Stefan





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 14 May 2024 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 2 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.