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
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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.