GNU bug report logs - #80045
30.1; Eldoc on remote python buffers outside any project makes navigation laggy

Previous Next

Package: emacs;

Reported by: Andrea Fiori <andrea.fiori.1998 <at> gmail.com>

Date: Sun, 21 Dec 2025 03:37:02 UTC

Severity: normal

Found in version 30.1

To reply to this bug, email your comments to 80045 AT debbugs.gnu.org.

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#80045; Package emacs. (Sun, 21 Dec 2025 03:37:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Andrea Fiori <andrea.fiori.1998 <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 21 Dec 2025 03:37:02 GMT) Full text and rfc822 format available.

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

From: Andrea Fiori <andrea.fiori.1998 <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.1; Eldoc on remote python buffers outside any project makes
 navigation laggy
Date: Sat, 20 Dec 2025 21:19:00 +0100
Dear Emacs developers,

I opened a python script in a remote machine.  The script was not inside
any project.

This was it's path (no project):

/sshx:sdf.org:/sdf/arpa/af/a/aa/Documents/script.py

When trying to navigate the file (with C-n, C-p etc.) the interface
sometimes froze, and it was extremely laggy, especially when moving over
a keyword like "set" or "None".

When I set this advice (or when I disable eldoc), the problem seems to
go away:

(advice-add 'python-shell-get-process-name :around
              (lambda (orig dedicated)
                (unless (equal dedicated 'project)
                  (funcall orig dedicated))))

The problem seems to be less severe when I open a python shell dedicated
to the buffer I'm working on.

I suspect the reason this happens is because eldoc in python mode tries
to get to the python shell to get documentation, and to get the python
shell, python-shell-get-process-name gets called.  This function tries
to find the root of the project.  However, if there's no project root,
it tries to traverse the directory tree and this may be slow on remote
machines.

In GNU Emacs 30.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.49,
 cairo version 1.18.4) of 2025-07-18, modified by Debian built on sbuild
System Description: Debian GNU/Linux 13 (trixie)

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --build
 x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/libexec --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd
 --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --with-pgtk
 'CFLAGS=-g -O2 -Werror=implicit-function-declaration
 -ffile-prefix-map=/build/reproducible-path/emacs-30.1+1=. -fstack-protector-strong
 -fstack-clash-protection -Wformat -Werror=format-security
 -fcf-protection -Wall' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
 LDFLAGS=-Wl,-z,relro'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSELINUX 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 $LC_MONETARY: it_IT.UTF-8
  value of $LC_NUMERIC: it_IT.UTF-8
  value of $LC_TIME: it_IT.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Info

Minor modes in effect:
  global-git-commit-mode: t
  eat-eshell-visual-command-mode: t
  eat-eshell-mode: t
  xclip-mode: t
  repeat-mode: t
  fido-vertical-mode: t
  icomplete-vertical-mode: t
  icomplete-mode: t
  fido-mode: t
  global-auto-revert-mode: t
  savehist-mode: t
  recentf-mode: t
  save-place-mode: t
  minibuffer-depth-indicate-mode: t
  xterm-mouse-mode: t
  electric-pair-mode: t
  global-so-long-mode: t
  global-subword-mode: t
  subword-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-history-mode: t
  tab-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  isearch-fold-quotes-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm
/usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm-autoloads hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm-autoloads
/usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm-load-path hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm-load-path
/usr/share/emacs/site-lisp/elpa/vterm-0.0.2/vterm-pkg hides /usr/share/emacs/site-lisp/elpa-src/vterm-0.0.2/vterm-pkg
/home/andrea/.config/emacs/elpa/transient-20251215.2209/transient hides /usr/share/emacs/30.1/lisp/transient
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-compat hides /usr/share/emacs/30.1/lisp/net/tramp-compat
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-sudoedit hides /usr/share/emacs/30.1/lisp/net/tramp-sudoedit
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-adb hides /usr/share/emacs/30.1/lisp/net/tramp-adb
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-cmds hides /usr/share/emacs/30.1/lisp/net/tramp-cmds
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-androidsu hides /usr/share/emacs/30.1/lisp/net/tramp-androidsu
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-uu hides /usr/share/emacs/30.1/lisp/net/tramp-uu
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-rclone hides /usr/share/emacs/30.1/lisp/net/tramp-rclone
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-message hides /usr/share/emacs/30.1/lisp/net/tramp-message
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-smb hides /usr/share/emacs/30.1/lisp/net/tramp-smb
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-cache hides /usr/share/emacs/30.1/lisp/net/tramp-cache
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-fuse hides /usr/share/emacs/30.1/lisp/net/tramp-fuse
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-gvfs hides /usr/share/emacs/30.1/lisp/net/tramp-gvfs
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/trampver hides /usr/share/emacs/30.1/lisp/net/trampver
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-crypt hides /usr/share/emacs/30.1/lisp/net/tramp-crypt
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-archive hides /usr/share/emacs/30.1/lisp/net/tramp-archive
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-integration hides /usr/share/emacs/30.1/lisp/net/tramp-integration
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp hides /usr/share/emacs/30.1/lisp/net/tramp
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-sh hides /usr/share/emacs/30.1/lisp/net/tramp-sh
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-container hides /usr/share/emacs/30.1/lisp/net/tramp-container
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-loaddefs hides /usr/share/emacs/30.1/lisp/net/tramp-loaddefs
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-ftp hides /usr/share/emacs/30.1/lisp/net/tramp-ftp
/home/andrea/.config/emacs/elpa/tramp-2.8.0.5/tramp-sshfs hides /usr/share/emacs/30.1/lisp/net/tramp-sshfs

Features:
(mule-util shadow sort mail-extr emacsbug misearch multi-isearch
magit-extras pulse gptel-org gptel gptel-request gptel-openai
elisp-demos shortdoc help-fns radix-tree face-remap 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 which-func imenu magit-diff smerge-mode
git-commit log-edit add-log magit-core magit-margin magit-transient
magit-process with-editor magit-mode transient benchmark magit-git
server magit-base magit-section cursor-sensor crm llama comp comp-cstr
warnings cond-let oc-basic org-element org-persist org-id org-refile
org-element-ast inline avl-tree ol-eww eww url-queue mm-url 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 shr pixel-fill kinsoku url-file svg
dom gnus-group gnus-undo gnus-start gnus-dbus dbus comp-run comp-common
xml gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int
gnus-range message sendmail yank-media puny 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 gnus nnheader gnus-util mail-utils range mm-util mail-prsvr
ol-docview doc-view jka-compr image-mode exif ol-bibtex bibtex ol-bbdb
ol-w3m ol-doi org-link-doi org org-macro org-pcomplete org-list
org-footnote org-faces org-entities noutline outline ob-python ob-shell
ob ob-tangle org-src sh-script smie executable ob-ref ob-lob ob-table
ob-exp ob-comint 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 vc-git diff-mode
track-changes python treesit go-mode find-file ffap thingatpt etags
fileloop xref project tramp-cmds dired-aux hl-line dired-x dired
dired-loaddefs aggressive-indent ws-butler display-line-numbers
magit-autorevert cus-start italian-holidays vc-backup log-view pcvs-util
vc vc-dispatcher diff esh-mode esh-var esh-cmd generator esh-ext esh-opt
esh-proc esh-io esh-arg esh-module esh-module-loaddefs esh-util eat term
disp-table ehelp color compat xclip modus-vivendi-tritanopia-theme
modus-themes grep compile text-property-search repeat icomplete
autorevert filenotify savehist recentf tree-widget saveplace tramp-sh
tramp-cache time-stamp tramp trampver tramp-integration files-x
tramp-message tramp-compat xdg shell pcomplete comint ansi-osc ring
parse-time iso8601 time-date format-spec ansi-color tramp-loaddefs
mb-depth xt-mouse elec-pair so-long cap-words superword subword edmacro
kmacro use-package use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode cl-extra help-mode
use-package-ensure use-package-core cus-edit pp cus-load wid-edit
0x0-autoloads af-grep-autoloads aggressive-indent-autoloads
company-autoloads consult-autoloads deadgrep-autoloads devdocs-autoloads
dired-subtree-autoloads dired-hacks-utils-autoloads eat-autoloads
elgrep-autoloads async-autoloads elisp-demos-autoloads ess-autoloads
go-mode-autoloads goose-theme-autoloads gptel-autoloads
hy-mode-autoloads iedit-autoloads indent-bars-autoloads
ini-mode-autoloads isend-mode-autoloads italian-holidays-autoloads
jq-mode-autoloads magit-autoloads pcase magit-section-autoloads
llama-autoloads markdown-mode-autoloads ox-rss-autoloads sicp-autoloads
suggest-autoloads spinner-autoloads f-autoloads s-autoloads
dash-autoloads loop-autoloads sysctl-autoloads tramp-autoloads rx
transient-autoloads cond-let-autoloads vc-backup-autoloads
vimrc-mode-autoloads info with-editor-autoloads ws-butler-autoloads
xah-find-autoloads xclip-autoloads yaml-mode-autoloads vterm-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 icons
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib 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 touch-screen 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 move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 653472 483065) (symbols 48 39572 21)
 (strings 32 145859 23866) (string-bytes 1 4710610) (vectors 16 73307)
 (vector-slots 8 1529954 294035) (floats 8 931 14225)
 (intervals 56 7622 884) (buffers 992 33))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#80045; Package emacs. (Sun, 21 Dec 2025 11:32:02 GMT) Full text and rfc822 format available.

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

From: Andrea Fiori <andrea.fiori.1998 <at> gmail.com>
To: 80045 <at> debbugs.gnu.org
Subject: bug#80045: 30.1; Eldoc on remote python buffers outside any project
 makes navigation laggy
Date: Sun, 21 Dec 2025 12:32:16 +0100
[Message part 1 (text/plain, inline)]
Good morning,

I realized I forgot to attach the script I was looking at and (more
importantly) the profiler report.

Here are the attachments.
[bug80045-profiler-report (text/plain, attachment)]
[traversal.py (text/x-python, attachment)]

This bug report was last modified 4 days ago.

Previous Next


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