GNU bug report logs - #73355
29.4; eglot-rename reports success when it shouldn't

Previous Next

Package: emacs;

Reported by: Joost Kremers <joostkremers <at> fastmail.fm>

Date: Thu, 19 Sep 2024 12:02:02 UTC

Severity: normal

Merged with 73358

Found in version 29.4

Full log


View this message in rfc822 format

From: Joost Kremers <joostkremers <at> fastmail.fm>
To: 73355 <at> debbugs.gnu.org
Subject: bug#73355: 29.4; eglot-rename reports success when it shouldn't
Date: Thu, 19 Sep 2024 18:07:18 +0200
Apologies for the double posting. My mail client behaved weird when I sent
the first message and I didn't get a confirmation, which normally comes
within a few minutes, so I thought something had gone wrong...

On Thu, Sep 19 2024, Joost Kremers wrote:
> I tried to use 'eglot-rename' to rename a variable to a name that already
> existed in the relevant function. The change was not applied but Eglot
> nonetheless reported "[eglot] Edit successful!".
>
> This was in a Python buffer, using python-ts-mode and basedpyright
> (v1.17.1) as language server. The relevant code snippet:
>
> ```
> def main():
>     sizes = [100, 1000, 10000]
>     results: dict[str, list[float]] = {
>         "Linear search": [],
>         "Binary search": [],
>         "Interpolation search": [],
>     }
>     for size in sizes:
>         seq: list[int] = sorted([random.randint(0, 10000) for _ in range(size)])
>         x = random.choice(arr)
>         results["Linear search"].append(measure_time(linear_search, arr, x))
>         results["Binary search"].append(measure_time(binary_search, arr, x))
>         results["Interpolation search"].append(
>             measure_time(interpolation_search, arr, x)
>         )
> ```
>
> Note the 'seq' variable in the first line of the for loop, and the 'arr'
> variable in the three '.append' invocations. With point on the first 'arr',
> calling eglot-rename and giving 'seq' as the new name, Eglot refuses to
> rename the three occurrences of 'arr' (which makes sense, given that a
> variable with that name obviously already exists), but still reports
> success.
>
> (Note that there is no problem if the 'seq' above is also 'arr'. Then
> renaming works fine.)
>
>
>
> In GNU Emacs 29.4 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.43,
> cairo version 1.18.0)
> System Description: Arch Linux
>
> Configured using:
>  'configure --with-pgtk --with-native-compilation=aot --sysconfdir=/etc
>  --prefix=/usr --libexecdir=/usr/lib --with-tree-sitter
>  --localstatedir=/var --with-cairo --disable-build-details --with-harfbuzz
>  --with-libsystemd --with-modules 'CFLAGS=-march=x86-64 -mtune=generic -O2
>  -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat
>  -Werror=format-security -fstack-clash-protection -fcf-protection
>  -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g
>  -ffile-prefix-map=/build/emacs/src=/usr/src/debug/emacs -flto=auto'
>  'LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now
>  -Wl,-z,pack-relative-relocs -flto=auto' 'CXXFLAGS=-march=x86-64
>  -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3
>  -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection
>  -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer
>  -Wp,-D_GLIBCXX_ASSERTIONS -g
>  -ffile-prefix-map=/build/emacs/src=/usr/src/debug/emacs -flto=auto''
> Configured features:
> ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
> JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
> PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
> TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB
> Important settings:
>   value of $LANG: en_GB.UTF-8
>   locale-coding-system: utf-8-unix
>
> Major mode: VTerm
>
> Minor modes in effect:
>   magit-auto-revert-mode: t
>   pyvenv-mode: t
>   mu4e-modeline-mode: t
>   consult-denote-mode: t
>   flycheck-indicator-mode: t
>   global-flycheck-eglot-mode: t
>   minions-mode: t
>   doom-modeline-mode: t
>   which-key-mode: t
>   global-atomic-chrome-edit-mode: t
>   marginalia-mode: t
>   all-the-icons-completion-mode: t
>   company-prescient-mode: t
>   prescient-persist-mode: t
>   vertico-multiform-mode: t
>   eros-mode: t
>   hexl-follow-ascii: t
>   eglot-booster-mode: t
>   vertico-mode: t
>   global-diff-hl-mode: t
>   global-git-commit-mode: t
>   global-treesit-auto-mode: t
>   which-function-mode: t
>   global-org-modern-mode: t
>   denote-menu-bar-mode: t
>   shell-dirtrack-mode: t
>   company-quickhelp-mode: t
>   company-quickhelp-local-mode: t
>   global-company-mode: t
>   company-mode: t
>   csv-field-index-mode: t
>   override-global-mode: t
>   server-mode: t
>   repeat-mode: t
>   winner-mode: t
>   electric-pair-mode: t
>   recentf-mode: t
>   delete-selection-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   show-paren-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
>   buffer-read-only: t
>   column-number-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>   auto-save-visited-mode: t
>
> Load-path shadows:
> ~/src/parsebib/parsebib hides /home/joost/.emacs.d/elpa/parsebib-20230228.1530/parsebib
> ~/.emacs.d/lisp/custom hides /usr/share/emacs/29.4/lisp/custom
> /home/joost/.emacs.d/elpa/transient-20240918.1138/transient hides /usr/share/emacs/29.4/lisp/transient
> /home/joost/.emacs.d/elpa/jsonrpc-1.0.25/jsonrpc hides /usr/share/emacs/29.4/lisp/jsonrpc
> /home/joost/.emacs.d/elpa/eglot-1.17/eglot hides /usr/share/emacs/29.4/lisp/progmodes/eglot
> /home/joost/.emacs.d/elpa/eldoc-1.15.0/eldoc hides /usr/share/emacs/29.4/lisp/emacs-lisp/eldoc
>
> Features:
> (shadow emacsbug goto-addr magit-extras apheleia apheleia-rcs apheleia-dp
> apheleia-formatters apheleia-utils apheleia-log apheleia-formatter-context
> view vc-hg vc-bzr vc-src vc-sccs vc-cvs vc-rcs bug-reference pandoc-mode
> pandoc-mode-utils markdown-mode magit-bookmark magit-submodule magit-blame
> magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
> magit-clone magit-remote magit-commit magit-sequence magit-notes
> magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files
> magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log
> magit-diff smerge-mode magit-core magit-autorevert magit-margin
> magit-transient magit-process epa-file network-stream mailalias
> vertico-buffer misearch multi-isearch kivy-mode combobulate
> combobulate-json combobulate-yaml combobulate-css combobulate-js-ts
> combobulate-python combobulate-html combobulate-query savehist scheme
> combobulate-ui combobulate-display combobulate-ztree combobulate-contrib
> multiple-cursors mc-separate-operations rectangular-region-mode mc-mark-pop
> mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more sgml-mode facemenu
> mc-cycle-cursors multiple-cursors-core rect combobulate-envelope
> combobulate-manipulation combobulate-procedure combobulate-navigation
> combobulate-misc combobulate-interface combobulate-rules
> combobulate-settings indent-bars-ts indent-bars cap-words superword subword
> pyvenv smiley gnus-cite mm-archive mail-extr qp textsec uni-scripts
> idna-mapping ucs-normalize uni-confusable textsec-check
> display-line-numbers mu4e-settings gnus-dired mu4e mu4e-org
> mu4e-notification mu4e-main smtpmail mu4e-view mu4e-mime-parts mu4e-headers
> mu4e-thread mu4e-actions mu4e-compose mu4e-draft gnus-msg mu4e-search
> mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill mu4e-contacts
> mu4e-update mu4e-folders mu4e-context mu4e-query-items mu4e-server
> mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window mu4e-obsolete
> emoji-labels emoji multisession sqlite ace-window help-fns radix-tree
> descr-text avy corg guess-language visual-fill-column org-autolist
> org-indent oc-basic mule-util vc-git consult-flycheck consult-denote
> consult display-fill-column-indicator flyspell ispell flycheck-indicator
> flycheck-ledger flycheck-eglot flycheck-posframe flycheck eldoc-box
> jk-input-methods quail solarized-light-theme solarized-theme solarized
> solarized-faces go-translate gt-text-utility gt-engine-echo gt-engine-libre
> gt-engine-chatgpt gt-engine-youdao gt-engine-stardict gt-engine-deepl
> gt-engine-google-rpc gt-engine-google gt-engine-bing gt-extension gt-faces
> gt-core gt-httpx wgrep-ag wgrep csv2ledger vterm bookmark term disp-table
> ehelp vterm-module term/xterm xterm ielm minions doom-modeline
> doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path f
> nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon
> nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon
> nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon
> nerd-icons-data-powerline nerd-icons-data-octicon nerd-icons-data-pomicon
> nerd-icons-data-ipsicon which-key atomic-chrome iimage image+ image-file
> image-converter marginalia all-the-icons-completion company-prescient
> prescient char-fold orderless vertico-multiform dockerfile-mode sh-script
> smie executable impatient-mode htmlize jupyter python-pytest edebug eros
> macrostep checkdoc paredit dape hexl gdb-mi gud eglot-booster eglot
> external-completion jsonrpc flymake-proc flymake diff ert debug backtrace
> org-linenote vertico projectile lisp-mnt grep ibuf-ext ibuffer
> ibuffer-loaddefs ag vc-svn compile find-dired s diff-hl log-view vc-dir
> ewoc vc vc-dispatcher diff-mode git-commit with-editor log-edit pcvs-util
> add-log magit-mode benchmark magit-git magit-base magit-section
> cursor-sensor crm autorevert aggressive-indent nswbuff finder-inf yaml-mode
> yaml treesit-auto reftex reftex-loaddefs reftex-vars which-func imenu
> tab-jump-out yasnippet-snippets yasnippet company-org-block org-modern
> org-settings org-clock ob-jupyter jupyter-tramp tramp-cache time-stamp
> jupyter-server jupyter-server-kernel jupyter-rest-api url-http url-auth
> url-gw nsm jupyter-org-extensions jupyter-org-client jupyter-repl
> jupyter-widget-client websocket bindat simple-httpd jupyter-client
> jupyter-kernel jupyter-monads jupyter-messages hmac-def jupyter-mime
> jupyter-kernelspec jupyter-env jupyter-base eieio-base ob-sqlite ob-sql
> ob-shell ob-clojure ob-python python treesit ol-w3m org-tempo tempo
> ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015
> mm-view mml-smime smime gnutls dig gnus-sum gnus-group gnus-undo gnus-start
> gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int
> gnus-range message sendmail yank-media rfc822 mml mml-sec epa derived epg
> rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
> rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus-win ol-eww eww
> thingatpt shr pixel-fill kinsoku svg puny mm-url gnus nnheader gnus-util
> text-property-search mail-utils range mm-util mail-prsvr ol-doi
> org-link-doi ol-docview doc-view filenotify jka-compr image-mode exif
> ol-bibtex ol-bbdb org-element org-persist xdg org-id org-refile avl-tree
> dom org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src
> ob-comint org-pcomplete org-list org-footnote org-faces org-entities
> noutline outline ob-emacs-lisp ob-core ob-eval org-cycle org-table ol
> org-fold org-fold-core org-keys oc org-loaddefs find-func cal-menu calendar
> cal-loaddefs org-version org-compat org-macs transient compat compat-30
> denote dired dired-loaddefs tramp tramp-loaddefs trampver tramp-integration
> tramp-compat shell pcomplete comint ansi-osc parse-time format-spec
> ansi-color mixed-pitch face-remap biblio biblio-download biblio-dissemin
> biblio-ieee biblio-hal biblio-dblp biblio-crossref biblio-arxiv timezone
> biblio-doi biblio-core let-alist url-queue url-file ido hl-line bibtex
> iso8601 time-date adaptive-wrap goggles comp comp-cstr warnings rx pulse
> color posframe hydra lv use-package-bind-key company-quickhelp pos-tip
> all-the-icons all-the-icons-faces data-material data-weathericons
> data-octicons data-fileicons data-faicons data-alltheicons company-keywords
> company-etags etags fileloop xref project company-gtags
> company-dabbrev-code company-dabbrev company-ipa company-files
> company-clang company-cmake company-semantic company-template company-css
> company-capf company use-package-ensure whitespace literate-scratch
> jk-functions advice csv-mode sort dash eshell esh-cmd generator esh-ext
> esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util files-x
> notifications dbus xml use-package-core cl-extra help-mode edmacro kmacro
> bind-key server repeat winner ring elec-pair recentf tree-widget delsel
> help-at-pt cus-edit pp cus-load icons wid-edit
> all-the-icons-completion-autoloads all-the-icons-autoloads
> apheleia-autoloads easy-mmode async-autoloads avy-autoloads
> boxquote-autoloads breadcrumb-autoloads citar-autoloads citeproc-autoloads
> clojure-mode-autoloads company-auctex-autoloads auctex-autoloads tex-site
> company-box-autoloads company-prescient-autoloads
> company-quickhelp-autoloads consult-denote-autoloads
> consult-flycheck-autoloads corg-autoloads csv-mode-autoloads dape-autoloads
> denote-autoloads devdocs-browser-autoloads diff-hl-autoloads
> docker-autoloads dockerfile-mode-autoloads doom-modeline-autoloads
> eglot-booster-autoloads eldoc-box-autoloads embark-consult-autoloads
> consult-autoloads embark-autoloads eros-autoloads expand-region-autoloads
> flycheck-clj-kondo-autoloads flycheck-eglot-autoloads eglot-autoloads
> eldoc-autoloads go-translate-autoloads goggles-autoloads gptel-autoloads
> guess-language-autoloads hydra-autoloads ialign-autoloads
> impatient-mode-autoloads htmlize-autoloads indent-bars-autoloads
> company-autoloads js2-mode-autoloads json-process-client-autoloads
> jsonian-autoloads jsonrpc-autoloads jupyter-autoloads kivy-mode-autoloads
> ledger-mode-autoloads literate-scratch-autoloads lv-autoloads
> macrostep-autoloads magit-autoloads magit-section-autoloads
> marginalia-autoloads markdown-mode-autoloads minions-autoloads
> multiple-cursors-autoloads nerd-icons-autoloads numpydoc-autoloads
> nushell-ts-mode-autoloads orderless-autoloads org-linenote-autoloads
> org-modern-autoloads paredit-autoloads parsebib-autoloads
> pdf-tools-autoloads pos-tip-autoloads posframe-autoloads
> prescient-autoloads projectile-autoloads python-pytest-autoloads
> realgud-autoloads realgud-recursive-autoloads loc-changes-autoloads
> load-relative-autoloads f-autoloads simple-httpd-autoloads
> sly-overlay-autoloads sly-autoloads solarized-theme-autoloads
> string-inflection-autoloads tab-jump-out-autoloads tablist-autoloads
> test-simple-autoloads tide-autoloads flycheck-autoloads dash-autoloads
> track-changes-autoloads transient-autoloads treesit-auto-autoloads
> vertico-autoloads vterm-autoloads vundo-autoloads web-mode-autoloads
> websocket-autoloads which-key-autoloads with-editor-autoloads info
> compat-autoloads yaml-autoloads yaml-mode-autoloads
> yasnippet-snippets-autoloads yasnippet-autoloads zmq-autoloads package
> browse-url url url-proxy url-privacy url-expand url-methods url-history
> url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers
> url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json
> subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib
> pcase rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
> vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win
> term/common-win pgtk-dnd 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
> dynamic-setting system-font-setting font-render-setting cairo gtk pgtk
> lcms2 multi-tty make-network-process native-compile emacs)
>
> Memory information:
> ((conses 16 1406460 189413)
>  (symbols 48 81849 6)
>  (strings 32 459186 19206)
>  (string-bytes 1 12806777)
>  (vectors 16 178171)
>  (vector-slots 8 4425380 245877)
>  (floats 8 2187 1021)
>  (intervals 56 19925 5482)
>  (buffers 984 49))

-- 
Joost Kremers
Life has its moments




This bug report was last modified 225 days ago.

Previous Next


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