Package: emacs;
Reported by: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com>
Date: Fri, 18 Oct 2024 15:11:02 UTC
Severity: normal
Found in version 30.0.91
Done: Eli Zaretskii <eliz <at> gnu.org>
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 73863 in the body.
You can then email your comments to 73863 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
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Fri, 18 Oct 2024 15:11:02 GMT) Full text and rfc822 format available.Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com>
:bug-gnu-emacs <at> gnu.org
.
(Fri, 18 Oct 2024 15:11:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Subject: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Fri, 18 Oct 2024 17:09:19 +0200
[Message part 1 (text/plain, inline)]
Hello, I found some unexpected cursor movement near diagnostics with flymake-show-diagnostics-at-end-of-line enabled. When the cursor is on a line with a diagnostic, pressing down will move the cursor to the end of the current line instead of the next line. For example, pressing down here: [image: Screenshot 2024-10-18 at 16.57.29.png] Will move the cursor at the end of the line: [image: Screenshot 2024-10-18 at 16.58.09.png] Also, when editing the last line of a buffer, new text will appear after the diagnostic until no key is pressed for a few seconds: [image: Screenshot 2024-10-18 at 17.04.57.png] Reproduced with emacs -Q on emacs 30.0.91 In GNU Emacs 30.0.91 (build 1, aarch64-apple-darwin23.5.0, NS appkit-2487.60 Version 14.5 (Build 23F79)) of 2024-09-12 built on MBPro-MHFY4Y3W3H Windowing system distributor 'Apple', version 10.3.2487 System Description: macOS 14.5 Configured using: 'configure --disable-dependency-tracking --disable-silent-rules --enable-locallisppath=/opt/homebrew/share/emacs/site-lisp --infodir=/opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91/share/info/emacs --prefix=/opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91 --with-xml2 --with-gnutls --with-native-compilation=aot --without-compress-install --without-dbus --without-imagemagick --with-modules --with-rsvg --with-webp --with-ns --disable-ns-self-contained 'CFLAGS=-O2 -DFD_SETSIZE=10000 -DDARWIN_UNLIMITED_SELECT -I/opt/homebrew/opt/gcc/include -I/opt/homebrew/opt/libgccjit/include' 'LDFLAGS=-L/opt/homebrew/lib/gcc/14 -I/opt/homebrew/opt/gcc/include -I/opt/homebrew/opt/libgccjit/include'' Configured features: ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: ELisp/d Minor modes in effect: windmove-mode: t csv-field-index-mode: t global-treesit-fold-mode: t global-org-modern-mode: t repeat-mode: t conf--poetry-tracking-mode: t global-diff-hl-mode: t diff-hl-mode: t dtrt-indent-global-mode: t dtrt-indent-mode: t fancy-compilation-mode: t corfu-popupinfo-mode: t global-corfu-mode: t corfu-mode: t which-key-mode: t treemacs-filewatch-mode: t treemacs-follow-mode: t treemacs-git-mode: t treemacs-fringe-indicator-mode: t rainbow-delimiters-mode: t org-roam-db-autosync-mode: t hexl-follow-ascii: t which-function-mode: t global-git-commit-mode: t server-mode: t yas-global-mode: t yas-minor-mode: t doom-modeline-mode: t projectile-mode: t helm-mode: t helm-minibuffer-history-mode: t helm--remap-mouse-mode: t async-bytecomp-package-mode: t ws-butler-mode: t electric-pair-mode: t gcmh-mode: t override-global-mode: t el-patch-use-package-mode: t pixel-scroll-precision-mode: t global-subword-mode: t subword-mode: t global-so-long-mode: t delete-selection-mode: (delete-selection-pre-hook t) global-auto-revert-mode: t savehist-mode: t straight-use-package-mode: t straight-package-neutering-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-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: /Users/romain.ouabdelkader/.emacs.d/straight/build/emacsql-sqlite/emacsql-sqlite hides /Users/romain.ouabdelkader/.emacs.d/straight/build/emacsql/emacsql-sqlite /Users/romain.ouabdelkader/.emacs.d/straight/build/magit-section/magit-section hides /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-section /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-status hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-status /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-libgit-pkg hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-libgit-pkg /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-autorevert hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-autorevert /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/git-commit hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/git-commit /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-core hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-core /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-blame hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-blame /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-reflog hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-reflog /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-sequence hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-sequence /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-subtree hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-subtree /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-pull hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-pull /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-section-pkg hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-section-pkg /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-wip hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-wip /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-repos hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-repos /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-sparse-checkout hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-sparse-checkout /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-pkg hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-pkg /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-transient hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-transient /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/git-commit-pkg hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/git-commit-pkg /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-base hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-base /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-apply hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-apply /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-clone hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-clone /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-git hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-git /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-tag hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-tag /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-refs hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-refs /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-diff hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-diff /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-libgit hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-libgit /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-margin hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-margin /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-commit hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-commit /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-branch hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-branch /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-patch hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-patch /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-fetch hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-fetch /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-remote hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-remote /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-files hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-files /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-mode hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-mode /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-log hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-log /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-merge hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-merge /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-ediff hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-ediff /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/git-rebase hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/git-rebase /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-push hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-push /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-bisect hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-bisect /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-process hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-process /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-stash hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-stash /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-notes hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-notes /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-bookmark hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-bookmark /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-submodule hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-submodule /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-worktree hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-worktree /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-gitignore hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-gitignore /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-extras hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-extras /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-bundle hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-bundle /Users/romain.ouabdelkader/.emacs.d/straight/build/git-commit/magit-reset hides /Users/romain.ouabdelkader/.emacs.d/straight/build/magit/magit-reset /Users/romain.ouabdelkader/.emacs.d/straight/build/cmake-mode/cmake-mode hides /opt/homebrew/share/emacs/site-lisp/cmake/cmake-mode /Users/romain.ouabdelkader/.emacs.d/straight/build/which-key/which-key hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/which-key /Users/romain.ouabdelkader/.emacs.d/straight/build/transient/transient hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/transient /Users/romain.ouabdelkader/.emacs.d/straight/build/bind-key/bind-key hides /opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91/share/emacs/30.0.91/lisp/bind-key /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-jump hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/use-package/use-package-jump /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-diminish hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/use-package/use-package-diminish /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/use-package/use-package /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-delight hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/use-package/use-package-delight /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-lint hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/use-package/use-package-lint /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-core hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/use-package/use-package-core /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-ensure hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/use-package/use-package-ensure /Users/romain.ouabdelkader/.emacs.d/straight/build/use-package/use-package-bind-key hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/use-package/use-package-bind-key /Users/romain.ouabdelkader/.emacs.d/straight/build/flymake/flymake hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/progmodes/flymake /Users/romain.ouabdelkader/.emacs.d/straight/build/xref/xref hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/progmodes/xref /Users/romain.ouabdelkader/.emacs.d/straight/build/project/project hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/progmodes/project /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-comint hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-comint /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-exp hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-exp /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-ctags hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-ctags /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-emacs-lisp hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-emacs-lisp /Users/romain.ouabdelkader/.emacs.d/straight/build/org/oc hides /opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91/share/emacs/30.0.91/lisp/org/oc /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-texinfo hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-texinfo /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-irc hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-irc /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-doi hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-doi /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob hides /opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91/share/emacs/30.0.91/lisp/org/ob /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-refile hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-refile /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-version hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-version /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-num hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-num /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-mhe hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-mhe /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-shell hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-shell /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-attach hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-attach /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-C hides /opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91/share/emacs/30.0.91/lisp/org/ob-C /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-macs hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-macs /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-entities hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-entities /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-dot hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-dot /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-sql hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-sql /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-eww hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-eww /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-datetree hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-datetree /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-macro hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-macro /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-eval hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-eval /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-haskell hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-haskell /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-org hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-org /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-rmail hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-rmail /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-awk hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-awk /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-groovy hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-groovy /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-icalendar hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-icalendar /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-octave hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-octave /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-scheme hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-scheme /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-mobile hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-mobile /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-processing hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-processing /Users/romain.ouabdelkader/.emacs.d/straight/build/org/oc-biblatex hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/oc-biblatex /Users/romain.ouabdelkader/.emacs.d/straight/build/org/oc-csl hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/oc-csl /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-colview hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-colview /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-R hides /opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91/share/emacs/30.0.91/lisp/org/ob-R /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-table hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-table /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-html hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-html /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-fortran hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-fortran /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol hides /opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91/share/emacs/30.0.91/lisp/org/ol /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-plantuml hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-plantuml /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-docview hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-docview /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-perl hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-perl /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-sqlite hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-sqlite /Users/romain.ouabdelkader/.emacs.d/straight/build/org/oc-basic hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/oc-basic /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-sed hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-sed /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-fold-core hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-fold-core /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-ditaa hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-ditaa /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-ruby hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-ruby /Users/romain.ouabdelkader/.emacs.d/straight/build/org/oc-bibtex hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/oc-bibtex /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-habit hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-habit /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-loaddefs hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-loaddefs /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-gnus hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-gnus /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-screen hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-screen /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-mouse hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-mouse /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-css hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-css /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-inlinetask hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-inlinetask /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-lisp hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-lisp /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-eshell hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-eshell /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-pcomplete hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-pcomplete /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-lint hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-lint /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-id hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-id /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-capture hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-capture /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-sass hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-sass /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-tangle hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-tangle /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-calc hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-calc /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-java hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-java /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-compat hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-compat /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-attach-git hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-attach-git /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-beamer hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-beamer /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-protocol hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-protocol /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-element hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-element /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-lob hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-lob /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-tempo hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-tempo /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-python hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-python /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-latex hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-latex /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-w3m hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-w3m /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-agenda hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-agenda /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-persist hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-persist /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-ocaml hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-ocaml /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-ref hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-ref /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-fold hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-fold /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-julia hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-julia /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-lilypond hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-lilypond /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-table hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-table /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-clojure hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-clojure /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-indent hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-indent /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-plot hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-plot /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-latex hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-latex /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-src hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-src /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-duration hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-duration /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-makefile hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-makefile /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-info hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-info /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-clock hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-clock /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-forth hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-forth /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-odt hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-odt /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-man hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-man /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-publish hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-publish /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-archive hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-archive /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-org hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-org /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-lua hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-lua /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-keys hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-keys /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-eshell hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-eshell /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-faces hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-faces /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-man hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-man /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-list hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-list /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-md hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-md /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-goto hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-goto /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-bbdb hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-bbdb /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org hides /opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91/share/emacs/30.0.91/lisp/org/org /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ol-bibtex hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ol-bibtex /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-koma-letter hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-koma-letter /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox-ascii hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ox-ascii /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-matlab hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-matlab /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ox hides /opt/homebrew/Cellar/emacs-plus <at> 30/30.0.91/share/emacs/30.0.91/lisp/org/ox /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-timer hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-timer /Users/romain.ouabdelkader/.emacs.d/straight/build/org/oc-natbib hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/oc-natbib /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-core hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-core /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-feed hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-feed /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-gnuplot hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-gnuplot /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-js hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-js /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-element-ast hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-element-ast /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-footnote hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-footnote /Users/romain.ouabdelkader/.emacs.d/straight/build/org/ob-maxima hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/ob-maxima /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-cycle hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-cycle /Users/romain.ouabdelkader/.emacs.d/straight/build/org/org-crypt hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/org/org-crypt /Users/romain.ouabdelkader/.emacs.d/straight/build/compat/compat hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/emacs-lisp/compat /Users/romain.ouabdelkader/.emacs.d/straight/build/eldoc/eldoc hides /opt/homebrew/Cellar/emacs-plus <at> 30 /30.0.91/share/emacs/30.0.91/lisp/emacs-lisp/eldoc Features: (shadow mail-extr emacsbug rng-xsd xsd-regexp rng-cmpct rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap nxml-util nxml-enc xmltok magit-patch magit-subtree magit-gitignore magit-ediff ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util vc-annotate gnutls network-stream url-http url-gw nsm url-cache url-auth json-ts-mode novice scroll-lock ispell cl-print display-line-numbers dabbrev find-dired goto-addr git-timemachine misearch multi-isearch vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs bug-reference magit-extras image-file image-converter helm-external helm-net cape-keyword company-dabbrev-code company-dabbrev windmove tramp-cache time-stamp shortdoc help-fns radix-tree winner tramp-archive tramp-gvfs helm-command helm-elisp helm-eval edebug helm-info custom-python-highlighting graphics custom-monokai-theme gptel-ollama gptel gptel-org gptel-openai gptel-autoloads nerd-icons-corfu nerd-icons-corfu-autoloads csv-mode sort csv-mode-autoloads treesit-fold treesit-fold-summary treesit-fold-parsers treesit-fold-util treesit-fold-autoloads casual-calc casual-calc-symbolic casual-calc-variables casual-calc-algebra calcalg3 casual-calc-financial casual-calc-stack calc-undo calc-yank casual-calc-trail casual-calc-graphics casual-calc-fileio calc-vec casual-calc-vector casual-calc-predicates casual-calc-units casual-calc-trigonometric casual-calc-time casual-calc-settings casual-calc-angle-measure casual-calc-rounding casual-calc-random calc-comb casual-calc-logarithmic casual-calc-conversion casual-calc-complex casual-calc-binary casual-calc-radix casual-calc-labels casual-calc-version casual-calc-utils casual-lib casual-lib-version casual-calc--calc calc-math calc-ext calc calc-loaddefs calc-macs casual-calc-autoloads casual-lib-autoloads terraform-mode hcl-mode terraform-mode-autoloads hcl-mode-autoloads org-modern-indent org-indent org-modern-indent-autoloads org-modern org-modern-autoloads gdscript-mode gdscript-ts-mode gdscript-eglot gdscript-hydra hydra lv gdscript-godot gdscript-project gdscript-history gdscript-comint gdscript-debug gdscript-format gdscript-comint-gdformat gdscript-completion gdscript-fill-paragraph gdscript-imenu gdscript-indent-and-nav gdscript-rx gdscript-utils gdscript-syntax gdscript-keywords gdscript-docs eww url-queue mm-url gdscript-customization gdscript-mode-autoloads dape gdb-mi bindat gud tree-widget repeat dape-autoloads treesit-auto treesit-auto-autoloads diff-hl log-view vc-dir vc diff-hl-autoloads browse-at-remote vc-git vc-dispatcher browse-at-remote-autoloads wgrep-helm wgrep-helm-autoloads wgrep wgrep-autoloads dtrt-indent cus-load dtrt-indent-autoloads zygospore zygospore-autoloads fancy-compilation fancy-compilation-autoloads apheleia apheleia-rcs apheleia-dp apheleia-formatters apheleia-utils apheleia-log apheleia-formatter-context apheleia-autoloads cape cape-autoloads company company-autoloads orderless orderless-autoloads corfu-popupinfo corfu corfu-autoloads eldoc-box eldoc-box-autoloads which-key which-key-autoloads treemacs-projectile treemacs-projectile-autoloads treemacs treemacs-header-line treemacs-compatibility treemacs-mode treemacs-bookmarks treemacs-tags treemacs-interface treemacs-persistence treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator treemacs-scope pulse treemacs-faces treemacs-icons treemacs-themes treemacs-core-utils pfuture hl-line treemacs-logging treemacs-customization treemacs-macros treemacs-autoloads cfrs-autoloads posframe-autoloads hydra-autoloads lv-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads markdown-mode markdown-mode-autoloads rainbow-delimiters rainbow-delimiters-autoloads typescript-ts-mode org-roam-migrate org-roam-mode org-roam-capture org-roam-node org-roam-db org-roam-utils org-roam-compat org-roam org-capture org-element org-persist avl-tree org-id org-refile emacsql-sqlite emacsql-sqlite-common emacsql emacsql-compiler org-roam-autoloads emacsql-sqlite-autoloads emacsql-autoloads string-inflection string-inflection-autoloads groovy-mode groovy-mode-autoloads kotlin-mode kotlin-mode-indent kotlin-mode-lexer kotlin-mode-autoloads pyvenv pyvenv-autoloads helm-xref helm-xref-autoloads multi-vterm multi-vterm-autoloads vterm-toggle tramp-sh vterm-toggle-autoloads vterm magit-bookmark bookmark face-remap color term ehelp vterm-module term/xterm xterm vterm-autoloads sqlformat reformatter sqlformat-autoloads reformatter-autoloads solidity-mode solidity-common solidity-mode-autoloads emojify apropos tar-mode arc-mode archive-mode emojify-autoloads restclient restclient-autoloads rust-utils rust-mode rust-rustfmt rust-playpen rust-compile rust-cargo rust-mode-autoloads js c-ts-common cc-mode cc-fonts cc-guess cc-menus cc-cmds clang-format clang-format-autoloads eglot external-completion jsonrpc ert pp ewoc debug backtrace dockerfile-mode dockerfile-mode-autoloads nhexl-mode disp-table hexl nhexl-mode-autoloads jinja2-mode sgml-mode facemenu jinja2-mode-autoloads fill-column-indicator fill-column-indicator-autoloads align glsl-mode glsl-mode-autoloads helm-tramp helm-tramp-autoloads cython-mode cython-mode-autoloads swift-mode swift-mode-imenu swift-mode-repl swift-mode-font-lock swift-mode-standard-types swift-mode-fill swift-mode-beginning-of-defun swift-mode-indent swift-mode-lexer swift-mode-autoloads yaml-mode yaml-mode-autoloads quickrun ht eshell em-banner esh-mode esh-var esh-cmd generator esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-module-loaddefs esh-util quickrun-autoloads ht-autoloads magit-delta xterm-color magit-delta-autoloads xterm-color-autoloads git-timemachine-autoloads request request-autoloads 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 package url-handlers magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff diff-mode track-changes git-commit log-edit pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor server magit-mode transient magit-git magit-base magit-section cursor-sensor crm magit-autoloads magit-section-autoloads git-commit-autoloads with-editor-autoloads transient-autoloads yasnippet yasnippet-autoloads multiple-cursors mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors multiple-cursors-core rect multiple-cursors-autoloads phi-search phi-search-core phi-search-autoloads zoom-frm frame-cmds advice frame-fns avoid zoom-frm-autoloads frame-cmds-autoloads frame-fns-autoloads all-the-icons-autoloads 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 doom-modeline-autoloads shrink-path-autoloads f-autoloads nerd-icons-autoloads compat-autoloads cmake-mode rst cmake-mode-autoloads symbol-overlay symbol-overlay-autoloads dumb-jump popup dash s xref dumb-jump-autoloads popup-autoloads dash-autoloads s-autoloads helm-projectile helm-projectile-autoloads finder-inf projectile lisp-mnt grep ibuf-ext ibuffer ibuffer-loaddefs projectile-autoloads helm-ag helm-ag-autoloads helm-mode helm-misc helm-files image-dired image-dired-tags image-dired-external image-dired-util image-mode exif dired-x dired-aux ffap tramp trampver tramp-integration files-x tramp-message tramp-compat xdg shell tramp-loaddefs helm-buffers helm-occur helm-tags helm-locate helm-grep helm-regexp helm-utils helm-help helm-types helm helm-global-bindings helm-easymenu helm-core async-bytecomp helm-source helm-multi-match helm-lib async helm-autoloads wfnames-autoloads helm-core-autoloads async-autoloads vundo vundo-autoloads ws-butler ws-butler-autoloads use-package-diminish elec-pair diminish diminish-autoloads gcmh gcmh-autoloads ob-python python compat ob-dot org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src sh-script smie treesit executable ob-comint org-pcomplete pcomplete org-list org-footnote org-faces org-entities noutline outline org-element-ast inline pcase 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 gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util url-parse auth-source eieio eieio-core json map url-vars mail-source utf7 nnoo parse-time iso8601 gnus-spec gnus-int gnus-range message sendmail mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache 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 time-date mail-utils range mm-util mail-prsvr wid-edit org-version org-compat org-macs format-spec flymake project compile text-property-search comint ansi-osc ansi-color thingatpt edmacro kmacro byte-opt flymake-autoloads project-autoloads xref-autoloads eldoc-autoloads use-package-bind-key bind-key easy-mmode undo-fu undo-fu-autoloads el-patch-autoloads el-patch el-patch-stub use-package-core cc-styles cc-align cc-engine cc-vars cc-defs pixel-scroll cua-base ring cap-words superword subword so-long comp comp-cstr warnings icons comp-run comp-common rx delsel autorevert filenotify savehist cl use-package-autoloads info bind-key-autoloads straight-autoloads cl-seq cl-extra help-mode straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win 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 kqueue cocoa ns lcms2 multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 2822317 10376696) (symbols 48 73639 12) (strings 32 321279 196018) (string-bytes 1 12682264) (vectors 16 236077) (vector-slots 8 2862838 2516896) (floats 8 2517 13830) (intervals 56 165066 64583) (buffers 992 320))
[Message part 2 (text/html, inline)]
[Screenshot 2024-10-18 at 16.57.29.png (image/png, inline)]
[Screenshot 2024-10-18 at 16.58.09.png (image/png, inline)]
[Screenshot 2024-10-18 at 17.04.57.png (image/png, inline)]
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Fri, 18 Oct 2024 16:12:01 GMT) Full text and rfc822 format available.Message #8 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> Cc: 73863 <at> debbugs.gnu.org Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Fri, 18 Oct 2024 19:08:46 +0300
> From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> > Date: Fri, 18 Oct 2024 17:09:19 +0200 > > I found some unexpected cursor movement near diagnostics with flymake-show-diagnostics-at-end-of-line > enabled. > When the cursor is on a line with a diagnostic, pressing down will move the cursor to the end of the current > line instead of the next line. > > For example, pressing down here: > Screenshot 2024-10-18 at 16.57.29.png > Will move the cursor at the end of the line: > Screenshot 2024-10-18 at 16.58.09.png > > Also, when editing the last line of a buffer, new text will appear after the diagnostic until no key is pressed for a > few seconds: > Screenshot 2024-10-18 at 17.04.57.png > > Reproduced with emacs -Q on emacs 30.0.91 Please show a full recipe for reproducing this issue, starting from "emacs -Q", preferably without the need to install any packages not included in Emacs. Thanks.
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Fri, 18 Oct 2024 16:27:01 GMT) Full text and rfc822 format available.Message #11 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 73863 <at> debbugs.gnu.org Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Fri, 18 Oct 2024 18:24:31 +0200
[Message part 1 (text/plain, inline)]
I can reproduce using pyright, starting with emacs -Q: M-x eglot (setq flymake-show-diagnostics-at-end-of-line t) Using the following file: ``` def print_hello(): print("hello") unknown_function def another_function(): pass ``` You need to resize your window so that flymake diagnostics are displayed on multiple lines: [image: Screenshot 2024-10-18 at 18.23.28.png] Place your cursor on the `unknown_function` line, and then press down. Your cursor will endup at the end of the current line instead of the next line. Please tell me if you need more detail. Thank you. On Fri, Oct 18, 2024 at 6:09 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > > From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> > > Date: Fri, 18 Oct 2024 17:09:19 +0200 > > > > I found some unexpected cursor movement near diagnostics with > flymake-show-diagnostics-at-end-of-line > > enabled. > > When the cursor is on a line with a diagnostic, pressing down will move > the cursor to the end of the current > > line instead of the next line. > > > > For example, pressing down here: > > Screenshot 2024-10-18 at 16.57.29.png > > Will move the cursor at the end of the line: > > Screenshot 2024-10-18 at 16.58.09.png > > > > Also, when editing the last line of a buffer, new text will appear after > the diagnostic until no key is pressed for a > > few seconds: > > Screenshot 2024-10-18 at 17.04.57.png > > > > Reproduced with emacs -Q on emacs 30.0.91 > > Please show a full recipe for reproducing this issue, starting from > "emacs -Q", preferably without the need to install any packages not > included in Emacs. > > Thanks. >
[Message part 2 (text/html, inline)]
[Screenshot 2024-10-18 at 18.23.28.png (image/png, inline)]
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Fri, 18 Oct 2024 18:33:02 GMT) Full text and rfc822 format available.Message #14 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> Cc: 73863 <at> debbugs.gnu.org Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Fri, 18 Oct 2024 21:31:58 +0300
> From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> > Date: Fri, 18 Oct 2024 18:24:31 +0200 > Cc: 73863 <at> debbugs.gnu.org > > I can reproduce using pyright, starting with emacs -Q: Thanks, but could you possibly reproduce without any additional external packages, such as pyright?
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Fri, 18 Oct 2024 19:13:02 GMT) Full text and rfc822 format available.Message #17 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 73863 <at> debbugs.gnu.org Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Fri, 18 Oct 2024 21:10:02 +0200
[Message part 1 (text/plain, inline)]
I can reproduce the issue on a C source file with clangd: emacs -Q M-x eglot (setq flymake-show-diagnostics-at-end-of-line t) ``` unknown_function void func(); ``` [image: Screenshot 2024-10-18 at 21.06.43.png] I can also reproduce on a elisp file without using eglot or any additional packages: emacs -Q /tmp/test.el M-x flymake-mode (setq flymake-show-diagnostics-at-end-of-line t) ``` ;;; test.el --- Test for flymake diagnostics -*- lexical-binding: t -*- ;;; Commentary: ;;; Test file very_long_variable_name_to_make_flymake_diagnostics_on_multiple_line ;;; Code: (provide 'test) ;;; test.el ends here ``` [image: Screenshot 2024-10-18 at 21.02.10.png] Make sure that the diagnostic is displayed on multiple lines (resize your window if necessary). Place your cursor on `very_long_variable_name_to_make_flymake_diagnostics_on_multiple_line` and then press down.
[Message part 2 (text/html, inline)]
[Screenshot 2024-10-18 at 21.02.10.png (image/png, inline)]
[Screenshot 2024-10-18 at 21.06.43.png (image/png, inline)]
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Fri, 18 Oct 2024 19:18:02 GMT) Full text and rfc822 format available.Message #20 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Stephen Berman <stephen.berman <at> gmx.net> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 73863 <at> debbugs.gnu.org, Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Fri, 18 Oct 2024 21:16:44 +0200
On Fri, 18 Oct 2024 21:31:58 +0300 Eli Zaretskii <eliz <at> gnu.org> wrote: >> From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> >> Date: Fri, 18 Oct 2024 18:24:31 +0200 >> Cc: 73863 <at> debbugs.gnu.org >> >> I can reproduce using pyright, starting with emacs -Q: > > Thanks, but could you possibly reproduce without any additional > external packages, such as pyright? I can reproduce the problem using the pylsp server (I don't have pyright installed). If this is a problem that occurs only with eglot when flymake displays diagnostics at the end of the line, is it even possible to avoid using an external LSP server (since IIUC managing such a server is what eglot is for and AFAIK no LSP servers are part of Emacs)? Steve Berman
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Fri, 18 Oct 2024 19:27:02 GMT) Full text and rfc822 format available.Message #23 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Stephen Berman <stephen.berman <at> gmx.net> To: Stephen Berman via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> Cc: Eli Zaretskii <eliz <at> gnu.org>, 73863 <at> debbugs.gnu.org, Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Fri, 18 Oct 2024 21:25:51 +0200
On Fri, 18 Oct 2024 21:16:44 +0200 Stephen Berman via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote: > On Fri, 18 Oct 2024 21:31:58 +0300 Eli Zaretskii <eliz <at> gnu.org> wrote: > >>> From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> >>> Date: Fri, 18 Oct 2024 18:24:31 +0200 >>> Cc: 73863 <at> debbugs.gnu.org >>> >>> I can reproduce using pyright, starting with emacs -Q: >> >> Thanks, but could you possibly reproduce without any additional >> external packages, such as pyright? > > I can reproduce the problem using the pylsp server (I don't have pyright > installed). If this is a problem that occurs only with eglot when > flymake displays diagnostics at the end of the line, is it even possible > to avoid using an external LSP server (since IIUC managing such a server > is what eglot is for and AFAIK no LSP servers are part of Emacs)? Romain's latest followup, which I saw after posting my followup, answers the question: eglot is not necessary, just flymake; I can also reproduce the issue with his emacs-lisp-mode recipe. Steve Berman
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Fri, 18 Oct 2024 19:27:02 GMT) Full text and rfc822 format available.bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sat, 19 Oct 2024 13:19:01 GMT) Full text and rfc822 format available.Message #29 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> Cc: 73863 <at> debbugs.gnu.org Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sat, 19 Oct 2024 16:15:59 +0300
> From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> > Date: Fri, 18 Oct 2024 21:10:02 +0200 > Cc: 73863 <at> debbugs.gnu.org > > I can reproduce the issue on a C source file with clangd: > > emacs -Q > M-x eglot > (setq flymake-show-diagnostics-at-end-of-line t) > > ``` > unknown_function > void func(); > ``` > Screenshot 2024-10-18 at 21.06.43.png > > I can also reproduce on a elisp file without using eglot or any additional packages: > > emacs -Q /tmp/test.el > M-x flymake-mode > (setq flymake-show-diagnostics-at-end-of-line t) > > ``` > ;;; test.el --- Test for flymake diagnostics -*- lexical-binding: t -*- > ;;; Commentary: > > ;;; Test file > > very_long_variable_name_to_make_flymake_diagnostics_on_multiple_line > > ;;; Code: > > (provide 'test) > ;;; test.el ends here > ``` > > Screenshot 2024-10-18 at 21.02.10.png > > Make sure that the diagnostic is displayed on multiple lines (resize your window if necessary). Place your > cursor on `very_long_variable_name_to_make_flymake_diagnostics_on_multiple_line` and then press down. So this problem only happens when the window is not wide enough, and the diagnostic wraps to the next screen line?
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sat, 19 Oct 2024 13:44:02 GMT) Full text and rfc822 format available.Message #32 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 73863 <at> debbugs.gnu.org Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sat, 19 Oct 2024 15:41:05 +0200
[Message part 1 (text/plain, inline)]
> > So this problem only happens when the window is not wide enough, and > the diagnostic wraps to the next screen line? > Yes that's correct, this happens to me quite often when I have two windows open side by side.
[Message part 2 (text/html, inline)]
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 07:26:02 GMT) Full text and rfc822 format available.Message #35 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com>, João Távora <joaotavora <at> gmail.com> Cc: 73863 <at> debbugs.gnu.org Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 10:25:07 +0300
> From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> > Date: Sat, 19 Oct 2024 15:41:05 +0200 > Cc: 73863 <at> debbugs.gnu.org > > So this problem only happens when the window is not wide enough, and > the diagnostic wraps to the next screen line? > > Yes that's correct, this happens to me quite often when I have two windows open side by side. This is actually what flymake.el requests the display engine to do: it asks it to show the cursor on the first character of the diagnostic's before-string: (put-text-property 0 1 'cursor t summary) So when you use C-n, Emacs moves point to the end of the before-string, but the 'cursor' property tells it to show the cursor on the first character of the before-string, which is on a previous screen line. So the display engine obeys and shows the cursor there. The following simple patch seems to give much better results. João, is the code in question used by any Flymake feature other than this new flymake-show-diagnostics-at-end-of-line option? If so, we'll probably need some condition to move the 'cursor' property to end of string (assuming you don't object to this solution). diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index 9a6b62c..0ef1ed0 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -835,8 +835,12 @@ flymake--eol-overlay-summary (1- (length diags))) 'face 'flymake-eol-information-face))))) (t - (mapconcat #'summarize diags " ")))))) - (put-text-property 0 1 'cursor t summary) + (mapconcat #'summarize diags " "))))) + (last-pos (1- (length summary)))) + ;; Put the 'cursor' property on the last character of the summary, + ;; so that vertical-motion produces the expected results when the + ;; summary wraps to next screen lines. + (put-text-property last-pos (1+ last-pos) 'cursor t summary) summary))) (defun flymake--update-eol-overlays ()
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 09:31:02 GMT) Full text and rfc822 format available.Message #38 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org>, Spencer Baugh <sbaugh <at> janestreet.com> Cc: 73863 <at> debbugs.gnu.org, Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 10:28:50 +0100
Flymake queries should be directed to Spencer Baugh But if this fixes the user's problem and doesn't hurt anyone who does have wide enough windows and on top of that sufficient testing is done, I don't object to this solution. I don't know what that problem is. Does the user want their cursor to show at the end of the intangible overlay? If so, that's odd: I designed this feature to be as little intrusive as possible i.e. so that turning it on has no other effect than some text appearing at the end of line -- and only at the end of line. If there is little space, I would say the right thing to do is to truncate, not wrap to the next line To try and answer your question, I don't think it is used by other Flymake parts (the function name hints at it: flymake--eol- means "end of line"). However, I advise to give it testing (with multiple diagnostics on one line, for example). I remember trying many variations on these things and each had its drawbacks. But possibly (probably?) I didn't test this one. Anyway, do test this out with other flymake eol users and consider the impact to users with wide enough windows: if there's no impact I don't see why this wouldn't be acceptable. But that is for Spencer or you to decide. João On Sun, Oct 20, 2024 at 8:25 AM Eli Zaretskii <eliz <at> gnu.org> wrote: > > > From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> > > Date: Sat, 19 Oct 2024 15:41:05 +0200 > > Cc: 73863 <at> debbugs.gnu.org > > > > So this problem only happens when the window is not wide enough, and > > the diagnostic wraps to the next screen line? > > > > Yes that's correct, this happens to me quite often when I have two windows open side by side. > > This is actually what flymake.el requests the display engine to do: it > asks it to show the cursor on the first character of the diagnostic's > before-string: > > (put-text-property 0 1 'cursor t summary) > > So when you use C-n, Emacs moves point to the end of the > before-string, but the 'cursor' property tells it to show the cursor > on the first character of the before-string, which is on a previous > screen line. So the display engine obeys and shows the cursor there. > > The following simple patch seems to give much better results. João, > is the code in question used by any Flymake feature other than this > new flymake-show-diagnostics-at-end-of-line option? If so, we'll > probably need some condition to move the 'cursor' property to end of > string (assuming you don't object to this solution). > > diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el > index 9a6b62c..0ef1ed0 100644 > --- a/lisp/progmodes/flymake.el > +++ b/lisp/progmodes/flymake.el > @@ -835,8 +835,12 @@ flymake--eol-overlay-summary > (1- (length diags))) > 'face 'flymake-eol-information-face))))) > (t > - (mapconcat #'summarize diags " ")))))) > - (put-text-property 0 1 'cursor t summary) > + (mapconcat #'summarize diags " "))))) > + (last-pos (1- (length summary)))) > + ;; Put the 'cursor' property on the last character of the summary, > + ;; so that vertical-motion produces the expected results when the > + ;; summary wraps to next screen lines. > + (put-text-property last-pos (1+ last-pos) 'cursor t summary) > summary))) > > (defun flymake--update-eol-overlays () -- João Távora
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 11:23:02 GMT) Full text and rfc822 format available.Message #41 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: sbaugh <at> janestreet.com, João Távora <joaotavora <at> gmail.com> Cc: 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 14:22:24 +0300
> From: João Távora <joaotavora <at> gmail.com> > Date: Sun, 20 Oct 2024 10:28:50 +0100 > Cc: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com>, 73863 <at> debbugs.gnu.org > > Flymake queries should be directed to Spencer Baugh Sorry, I keep forgetting that. > But if this fixes the user's problem and doesn't hurt anyone who does > have wide enough windows and on top of that sufficient testing is done, > I don't object to this solution. I don't know what that problem is. Does > the user want their cursor to show at the end of the intangible overlay? > If so, that's odd: I designed this feature to be as little intrusive as possible > i.e. so that turning it on has no other effect than some text appearing > at the end of line -- and only at the end of line. If there is little space, I > would say the right thing to do is to truncate, not wrap to the next line When the diagnostic overlay wraps to the next screen line, it is strange to see the cursor at the beginning of the diagnostic after C-n, since users generally expect C-n to move to the next screen line. But if we decide that the current behavior is more reasonable, and this is just a matter of users getting used to it, I don't mind leaving the current behavior alone. > To try and answer your question, I don't think it is used by other Flymake > parts (the function name hints at it: flymake--eol- means "end of line"). > However, I advise to give it testing (with multiple diagnostics on one > line, for example). I remember trying many variations on these things > and each had its drawbacks. But possibly (probably?) I didn't test > this one. Anyway, do test this out with other flymake eol users and > consider the impact to users with wide enough windows: if there's no > impact I don't see why this wouldn't be acceptable. But that is for > Spencer or you to decide. Thanks. Spencer, what say you?
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 11:39:02 GMT) Full text and rfc822 format available.Message #44 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 12:38:33 +0100
On Sun, Oct 20, 2024 at 12:22 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > When the diagnostic overlay wraps to the next screen line, it is > strange to see the cursor at the beginning of the diagnostic after > C-n, since users generally expect C-n to move to the next screen line. That may be so, and probably it is so. But I'd make sure to keep the current behaviour (or at least unsurprising behaviour) when the diagnostic(s) overlay (overlays?) _doesn't_ (don't?) wrap to the next screen line. João
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 11:50:02 GMT) Full text and rfc822 format available.Message #47 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: João Távora <joaotavora <at> gmail.com> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 14:49:11 +0300
> From: João Távora <joaotavora <at> gmail.com> > Date: Sun, 20 Oct 2024 12:38:33 +0100 > Cc: sbaugh <at> janestreet.com, romain.ouabdelkader <at> gmail.com, > 73863 <at> debbugs.gnu.org > > On Sun, Oct 20, 2024 at 12:22 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > > > When the diagnostic overlay wraps to the next screen line, it is > > strange to see the cursor at the beginning of the diagnostic after > > C-n, since users generally expect C-n to move to the next screen line. > > That may be so, and probably it is so. But I'd make sure to keep the > current behaviour (or at least unsurprising behaviour) when the > diagnostic(s) overlay (overlays?) _doesn't_ (don't?) wrap to the next > screen line. That would mean a non-trivial code in flymake.el, because it would need to decide in advance whether the diagnostic will fit on the same screen line. Moreover, if the user then makes the window wider or narrower, the cursor will jump between two screen positions, something that I think is highly undesirable (and will look like a bug).
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 14:44:02 GMT) Full text and rfc822 format available.Message #50 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 15:42:15 +0100
On Sun, Oct 20, 2024 at 12:49 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > That would mean a non-trivial code in flymake.el, because it would > need to decide in advance whether the diagnostic will fit on the same > screen line. Moreover, if the user then makes the window wider or > narrower, the cursor will jump between two screen positions, something > that I think is highly undesirable (and will look like a bug). Yes, you're right, but the solution you propose is arguably harmful for the current case. If I'm at line n, column c and I move down to line n+1 with less than c columns, and that line n+1 has a wrapping diagnostic at eol, I now see that a single 'down' makes the cursor jump multiple screen lines to the end of said diagnostic, and that's not really pretty either. And even closer to this report's scenario, your solution only makes some sense if the overlays happen to only wrap one line: it ceases to make sense in very narrow windows where the overlays wrap multiple lines. IMO, wrapping these annotations is more distracting than useful. They're meant to be minimally intrusive auxiliary visual aids, and causing screen line increase violates that. Note that the full diagnostic info can be viewed via eldoc in the echo area for example, where there are options to control length and jumping (and where window width isn't an issue). So I advise to turn on line truncation when using them, or to live with the current idiosyncrasy instead of another equivalent (IMO slightly worse) idiosyncrasy. João
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 15:04:02 GMT) Full text and rfc822 format available.Message #53 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> To: João Távora <joaotavora <at> gmail.com> Cc: sbaugh <at> janestreet.com, Eli Zaretskii <eliz <at> gnu.org>, 73863 <at> debbugs.gnu.org Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 17:01:44 +0200
[Message part 1 (text/plain, inline)]
Sorry, I realized I wasn't clear about the behavior I was expecting. I would expect the cursor behavior to remain consistent whether diagnostics are present or not, especially since diagnostics can appear and disappear during editing. For example: [image: Screenshot 2024-10-20 at 16.56.48.png] Here, when press C-n once, I expect the cursor to go here: [image: Screenshot 2024-10-20 at 16.57.59.png] I.e. the behavior would be the same as if there were no diagnostics in the buffer. I'm not sure if that's actually feasible or if there is an issue with this behavior. I tried your patch but it makes the cursor go on the diagnostic which i find surprising, I believe the cursor should not be able to move into a diagnostic: [image: Screenshot 2024-10-20 at 17.00.18.png] What do you think? On Sun, Oct 20, 2024 at 4:42 PM João Távora <joaotavora <at> gmail.com> wrote: > On Sun, Oct 20, 2024 at 12:49 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > > > That would mean a non-trivial code in flymake.el, because it would > > need to decide in advance whether the diagnostic will fit on the same > > screen line. Moreover, if the user then makes the window wider or > > narrower, the cursor will jump between two screen positions, something > > that I think is highly undesirable (and will look like a bug). > > Yes, you're right, but the solution you propose is arguably harmful for > the current case. If I'm at line n, column c and I move down to line n+1 > with > less than c columns, and that line n+1 has a wrapping diagnostic at eol, I > now > see that a single 'down' makes the cursor jump multiple screen lines > to the end > of said diagnostic, and that's not really pretty either. And even > closer to this > report's scenario, your solution only makes some sense if the overlays > happen > to only wrap one line: it ceases to make sense in very narrow windows > where the overlays wrap multiple lines. > > IMO, wrapping these annotations is more distracting than useful. > They're meant to be minimally intrusive auxiliary visual aids, and causing > screen line increase violates that. Note that the full diagnostic info > can be > viewed via eldoc in the echo area for example, where there are options to > control length and jumping (and where window width isn't an issue). > > So I advise to turn on line truncation when using them, or to live with the > current idiosyncrasy instead of another equivalent (IMO slightly worse) > idiosyncrasy. > > João >
[Message part 2 (text/html, inline)]
[Screenshot 2024-10-20 at 16.56.48.png (image/png, inline)]
[Screenshot 2024-10-20 at 16.57.59.png (image/png, inline)]
[Screenshot 2024-10-20 at 17.00.18.png (image/png, inline)]
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 15:33:02 GMT) Full text and rfc822 format available.Message #56 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: João Távora <joaotavora <at> gmail.com> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 18:31:40 +0300
> From: João Távora <joaotavora <at> gmail.com> > Date: Sun, 20 Oct 2024 15:42:15 +0100 > Cc: sbaugh <at> janestreet.com, romain.ouabdelkader <at> gmail.com, > 73863 <at> debbugs.gnu.org > > On Sun, Oct 20, 2024 at 12:49 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > > > That would mean a non-trivial code in flymake.el, because it would > > need to decide in advance whether the diagnostic will fit on the same > > screen line. Moreover, if the user then makes the window wider or > > narrower, the cursor will jump between two screen positions, something > > that I think is highly undesirable (and will look like a bug). > > Yes, you're right, but the solution you propose is arguably harmful for > the current case. If I'm at line n, column c and I move down to line n+1 with > less than c columns, and that line n+1 has a wrapping diagnostic at eol, I now > see that a single 'down' makes the cursor jump multiple screen lines > to the end > of said diagnostic, and that's not really pretty either. And even > closer to this > report's scenario, your solution only makes some sense if the overlays happen > to only wrap one line: it ceases to make sense in very narrow windows > where the overlays wrap multiple lines. Emacs can only display the cursor either before or after the overlay string. Anything else requires the 'cursor' property to be placed dynamically, depending on what is column c in your scenario, and I don't think it's reasonable to require flymake.el to jump through such hoops. > IMO, wrapping these annotations is more distracting than useful. > They're meant to be minimally intrusive auxiliary visual aids, and causing > screen line increase violates that. Note that the full diagnostic info can be > viewed via eldoc in the echo area for example, where there are options to > control length and jumping (and where window width isn't an issue). > > So I advise to turn on line truncation when using them, or to live with the > current idiosyncrasy instead of another equivalent (IMO slightly worse) > idiosyncrasy. That is also fine by me. But note that the code itself could have lines that wrap, and in that case, line truncation will make some of the code invisible until horizontally-scrolled into view. So it's a difficult situation. Was displaying the diagnostic in a tooltip ever considered as the alternative to this past-EOL display?
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 15:41:01 GMT) Full text and rfc822 format available.Message #59 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 16:39:02 +0100
On Sun, Oct 20, 2024 at 4:31 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > So it's a difficult situation. Was displaying the diagnostic in a > tooltip ever considered as the alternative to this past-EOL display? No, not as a viable alternative since it doesn't work in non-GUI emacs afaik. i was really trying to emulate what I think is originally a neovim feature (that seems to work exactly like a tooltip but in text mode).
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 15:51:01 GMT) Full text and rfc822 format available.Message #62 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, joaotavora <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 18:49:27 +0300
> From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> > Date: Sun, 20 Oct 2024 17:01:44 +0200 > Cc: Eli Zaretskii <eliz <at> gnu.org>, sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org > > Sorry, I realized I wasn't clear about the behavior I was expecting. > > I would expect the cursor behavior to remain consistent whether diagnostics are present or not, especially > since diagnostics can appear and disappear during editing. That's not possible, because the diagnostic is displayed using an overlay string, and Emacs cannot show a cursor inside such a string unless a Lisp program tells it exactly where to put the cursor. IOW, for the cursor-positioning purposes, overlay strings are considered as indivisible chunks of display. > For example: > Screenshot 2024-10-20 at 16.56.48.png > Here, when press C-n once, I expect the cursor to go here: > Screenshot 2024-10-20 at 16.57.59.png Under the default value of line-move-visual, this is not possible: Emacs is required to show the cursor inside the next _screen_ line, not the next _logical_ line. Compare that with the situation where the diagnostic string is part of buffer text -- in that case you'd want the cursor to end up inside the next screen line, which is wrapped from the long line starting with "unknown_function". > I.e. the behavior would be the same as if there were no diagnostics in the buffer. > I'm not sure if that's actually feasible or if there is an issue with this behavior. It isn't feasible. > I tried your patch but it makes the cursor go on the diagnostic which i find surprising, I believe the cursor > should not be able to move into a diagnostic: > Screenshot 2024-10-20 at 17.00.18.png We could have the cursor after the diagnostic, if we don't put the 'cursor' property at all. So these are the possible solutions for this situation: . don't change anything and live with the minor irregularity in the cursor positioning in what I consider to be rare cases - variation: turn on truncate-lines in such cases . don't put the 'cursor' property on the diagnostic, in which case C-n will place the cursor after the end of the diagnostic on the screen line where the diagnostic ends . put the 'cursor' property at the last character of the diagnostic string, and have it displayed there . calculate the character on which to put the 'cursor' property dynamically using some convoluted logic . implement display of diagnostics in a tooltip instead Any other suggestions?
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 16:25:02 GMT) Full text and rfc822 format available.Message #65 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: romain.ouabdelkader <at> gmail.com Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, joaotavora <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 19:23:26 +0300
> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, joaotavora <at> gmail.com > Date: Sun, 20 Oct 2024 18:49:27 +0300 > From: Eli Zaretskii <eliz <at> gnu.org> > > > For example: > > Screenshot 2024-10-20 at 16.56.48.png > > Here, when press C-n once, I expect the cursor to go here: > > Screenshot 2024-10-20 at 16.57.59.png > > Under the default value of line-move-visual, this is not possible: Unless, of course, Flymake redefines C-n and C-p to skip the screen lines that are occupied in their entirety by a diagnostic overlay. When I said "not possible" I had in mind the default behavior of C-n and C-p when overlay strings are around.
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 16:32:02 GMT) Full text and rfc822 format available.Message #68 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: João Távora <joaotavora <at> gmail.com> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 19:30:31 +0300
> From: João Távora <joaotavora <at> gmail.com> > Date: Sun, 20 Oct 2024 16:39:02 +0100 > Cc: sbaugh <at> janestreet.com, romain.ouabdelkader <at> gmail.com, > 73863 <at> debbugs.gnu.org > > On Sun, Oct 20, 2024 at 4:31 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > > > So it's a difficult situation. Was displaying the diagnostic in a > > tooltip ever considered as the alternative to this past-EOL display? > > No, not as a viable alternative since it doesn't work in non-GUI emacs > afaik. i was really trying to emulate what I think is originally a neovim > feature (that seems to work exactly like a tooltip but in text mode). The advantage of a tooltip is that its width is not limited by the window. If neovim shows this in text mode, how does it deal with too-long diagnostics? Another alternative is to display the diagnostic as buffer text, but make it read-only. This should solve the cursor-movement issues, I think. Do you see any obstacles for this alternative?
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 17:01:02 GMT) Full text and rfc822 format available.Message #71 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 17:58:41 +0100
On Sun, Oct 20, 2024 at 5:30 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > The advantage of a tooltip is that its width is not limited by the > window. If neovim shows this in text mode, how does it deal with > too-long diagnostics? No idea, but if I were to guess I think it has a completely different display engine that allows text-mode tooltips that behave like our window system tooptips (and likely get truncated) > Another alternative is to display the diagnostic as buffer text, but > make it read-only. This should solve the cursor-movement issues, I > think. Do you see any obstacles for this alternative? So would you change the buffer contents for displaying diagnostics, then somehow quickly undo and redo that on save and whenever the buffer text is needed, say, for sending to LSP?
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 17:52:01 GMT) Full text and rfc822 format available.Message #74 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: João Távora <joaotavora <at> gmail.com> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 20:50:59 +0300
> From: João Távora <joaotavora <at> gmail.com> > Date: Sun, 20 Oct 2024 17:58:41 +0100 > Cc: sbaugh <at> janestreet.com, romain.ouabdelkader <at> gmail.com, > 73863 <at> debbugs.gnu.org > > On Sun, Oct 20, 2024 at 5:30 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > > > Another alternative is to display the diagnostic as buffer text, but > > make it read-only. This should solve the cursor-movement issues, I > > think. Do you see any obstacles for this alternative? > > So would you change the buffer contents for displaying > diagnostics, then somehow quickly undo and redo that on save > and whenever the buffer text is needed, say, for sending to LSP? Something like that, yes.
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 18:08:02 GMT) Full text and rfc822 format available.Message #77 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 19:05:56 +0100
On Sun, Oct 20, 2024 at 6:51 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > Something like that, yes. Sounds absolutely hellish to implement. Even the most basic isearch need to be aware of that somehow. Anything that works with buffer text in Emacs would have to somehow cause that undo/redo. João Távora
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 18:29:02 GMT) Full text and rfc822 format available.Message #80 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: João Távora <joaotavora <at> gmail.com> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 21:28:22 +0300
> From: João Távora <joaotavora <at> gmail.com> > Date: Sun, 20 Oct 2024 19:05:56 +0100 > Cc: sbaugh <at> janestreet.com, romain.ouabdelkader <at> gmail.com, > 73863 <at> debbugs.gnu.org > > On Sun, Oct 20, 2024 at 6:51 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > > > Something like that, yes. > > Sounds absolutely hellish to implement. I wouldn't be so sure. The infrastructure for, for example, removing portions of buffer text when saving to a file already exists, and we use it in some modes. > Even the most basic isearch need to be aware of that somehow. I'm not sure. Why shouldn't Isearch find matches in the diagnostics? Searching an Office document does find matches in comments, for example. > Anything that works with buffer text in Emacs would have to somehow > cause that undo/redo. Not anything, IMO. Anyway, I'm not going to work on this, so it's an idea, no more, no less. My point is that all the tricky display issues are completely gone once we use buffer text. So an additional effort in Lisp programming could be justified.
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 20 Oct 2024 19:19:02 GMT) Full text and rfc822 format available.Message #83 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 20 Oct 2024 20:18:31 +0100
On Sun, Oct 20, 2024 at 7:28 PM Eli Zaretskii <eliz <at> gnu.org> wrote: > I'm not sure. Why shouldn't Isearch find matches in the diagnostics? > Searching an Office document does find matches in comments, for > example. A comment and a diagnostic are not the same. Diagnostics change in a volatile manner just by changing some piece of code somewhere in the buffer, comments don't. > > Anything that works with buffer text in Emacs would have to somehow > > cause that undo/redo. > > Not anything, IMO. Indentation rules, sexp navigation, any user code that uses buffer-string > Anyway, I'm not going to work on this Good call!
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Sun, 27 Oct 2024 10:58:01 GMT) Full text and rfc822 format available.Message #86 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: sbaugh <at> janestreet.com Cc: 73863 <at> debbugs.gnu.org, joaotavora <at> gmail.com, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sun, 27 Oct 2024 12:56:35 +0200
Ping! > Cc: 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com > Date: Sun, 20 Oct 2024 14:22:24 +0300 > From: Eli Zaretskii <eliz <at> gnu.org> > > > From: João Távora <joaotavora <at> gmail.com> > > Date: Sun, 20 Oct 2024 10:28:50 +0100 > > Cc: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com>, 73863 <at> debbugs.gnu.org > > > > Flymake queries should be directed to Spencer Baugh > > Sorry, I keep forgetting that. > > > But if this fixes the user's problem and doesn't hurt anyone who does > > have wide enough windows and on top of that sufficient testing is done, > > I don't object to this solution. I don't know what that problem is. Does > > the user want their cursor to show at the end of the intangible overlay? > > If so, that's odd: I designed this feature to be as little intrusive as possible > > i.e. so that turning it on has no other effect than some text appearing > > at the end of line -- and only at the end of line. If there is little space, I > > would say the right thing to do is to truncate, not wrap to the next line > > When the diagnostic overlay wraps to the next screen line, it is > strange to see the cursor at the beginning of the diagnostic after > C-n, since users generally expect C-n to move to the next screen line. > > But if we decide that the current behavior is more reasonable, and > this is just a matter of users getting used to it, I don't mind > leaving the current behavior alone. > > > To try and answer your question, I don't think it is used by other Flymake > > parts (the function name hints at it: flymake--eol- means "end of line"). > > However, I advise to give it testing (with multiple diagnostics on one > > line, for example). I remember trying many variations on these things > > and each had its drawbacks. But possibly (probably?) I didn't test > > this one. Anyway, do test this out with other flymake eol users and > > consider the impact to users with wide enough windows: if there's no > > impact I don't see why this wouldn't be acceptable. But that is for > > Spencer or you to decide. > > Thanks. > > Spencer, what say you? > > > >
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Thu, 31 Oct 2024 00:00:02 GMT) Full text and rfc822 format available.Message #89 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, joaotavora <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Thu, 31 Oct 2024 00:57:20 +0100
[Message part 1 (text/plain, inline)]
I don't use neovim but from what I have seen from screenshots, the diagnostics are truncated if they are larger than the window. Maybe there could be a way to have diagnostics truncated by default and only show the full diagnostics when the cursor is in the error line. But I'm not sure how that would work. For myself, I'll use sideline (https://github.com/emacs-sideline/sideline) instead of flymake-show-diagnostics-at-end-of-line. After thinking about it, I actually prefer to only view diagnostics for the current line (which is what sideline can do) On Sun, Oct 27, 2024 at 11:56 AM Eli Zaretskii <eliz <at> gnu.org> wrote: > Ping! > > > Cc: 73863 <at> debbugs.gnu.org, romain.ouabdelkader <at> gmail.com > > Date: Sun, 20 Oct 2024 14:22:24 +0300 > > From: Eli Zaretskii <eliz <at> gnu.org> > > > > > From: João Távora <joaotavora <at> gmail.com> > > > Date: Sun, 20 Oct 2024 10:28:50 +0100 > > > Cc: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com>, > 73863 <at> debbugs.gnu.org > > > > > > Flymake queries should be directed to Spencer Baugh > > > > Sorry, I keep forgetting that. > > > > > But if this fixes the user's problem and doesn't hurt anyone who does > > > have wide enough windows and on top of that sufficient testing is done, > > > I don't object to this solution. I don't know what that problem is. > Does > > > the user want their cursor to show at the end of the intangible > overlay? > > > If so, that's odd: I designed this feature to be as little intrusive > as possible > > > i.e. so that turning it on has no other effect than some text appearing > > > at the end of line -- and only at the end of line. If there is little > space, I > > > would say the right thing to do is to truncate, not wrap to the next > line > > > > When the diagnostic overlay wraps to the next screen line, it is > > strange to see the cursor at the beginning of the diagnostic after > > C-n, since users generally expect C-n to move to the next screen line. > > > > But if we decide that the current behavior is more reasonable, and > > this is just a matter of users getting used to it, I don't mind > > leaving the current behavior alone. > > > > > To try and answer your question, I don't think it is used by other > Flymake > > > parts (the function name hints at it: flymake--eol- means "end of > line"). > > > However, I advise to give it testing (with multiple diagnostics on one > > > line, for example). I remember trying many variations on these things > > > and each had its drawbacks. But possibly (probably?) I didn't test > > > this one. Anyway, do test this out with other flymake eol users and > > > consider the impact to users with wide enough windows: if there's no > > > impact I don't see why this wouldn't be acceptable. But that is for > > > Spencer or you to decide. > > > > Thanks. > > > > Spencer, what say you? > > > > > > > > >
[Message part 2 (text/html, inline)]
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Thu, 31 Oct 2024 07:41:02 GMT) Full text and rfc822 format available.Message #92 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, joaotavora <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Thu, 31 Oct 2024 09:40:23 +0200
> From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> > Date: Thu, 31 Oct 2024 00:57:20 +0100 > Cc: sbaugh <at> janestreet.com, joaotavora <at> gmail.com, 73863 <at> debbugs.gnu.org > > I don't use neovim but from what I have seen from screenshots, the diagnostics are truncated if they are > larger than the window. Is this really better than the minor annoyance we have now? If it's better, we could add a feature whereby an overlay can request its text to be truncated at the window edge, even if truncate-lines is not in effect. But good UI practices would then require us to have a tooltip with the full text on the overlay, I think, since otherwise the user will not be able to see the full text, and the important part might be at the end. > Maybe there could be a way to have diagnostics truncated by default and only show the full diagnostics > when the cursor is in the error line. But I'm not sure how that would work. This is much harder to implement (unless Flymake itself implements this, i.e., it truncates the overlay text when point is on another line). It will also cause an annoying vertical movement of the rest of buffer text when cursor moves. > For myself, I'll use sideline (https://github.com/emacs-sideline/sideline) instead of > flymake-show-diagnostics-at-end-of-line. It is not clear to me what that does, but it looks like it displays the diagnostic on a different screen line, not on the line to which the diagnostic belongs? > After thinking about it, I actually prefer to only view diagnostics for the current line (which is what sideline can > do) That is strange to hear, because it doesn't allow to have an overview of the diagnostics at a glance. Spencer, any comments or suggestions?
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Thu, 31 Oct 2024 19:21:02 GMT) Full text and rfc822 format available.Message #95 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: sbaugh <at> janestreet.com, 73863 <at> debbugs.gnu.org, joaotavora <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Thu, 31 Oct 2024 20:18:44 +0100
[Message part 1 (text/plain, inline)]
> It is not clear to me what that does, but it looks like it displays > the diagnostic on a different screen line, not on the line to which > the diagnostic belongs? > Yes exactly. It shows diagnostics on different screen lines, based on where space is available. > That is strange to hear, because it doesn't allow to have an overview > of the diagnostics at a glance. > Yeah I'm not advocating for this behavior to be included in emacs, just sharing my experience.
[Message part 2 (text/html, inline)]
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Tue, 12 Nov 2024 21:39:02 GMT) Full text and rfc822 format available.Message #98 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Spencer Baugh <sbaugh <at> janestreet.com> To: Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> Cc: Eli Zaretskii <eliz <at> gnu.org>, 73863 <at> debbugs.gnu.org, João Távora <joaotavora <at> gmail.com> Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Tue, 12 Nov 2024 16:38:43 -0500
Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com> writes: > Sorry, I realized I wasn't clear about the behavior I was expecting. > > I would expect the cursor behavior to remain consistent whether diagnostics are present or not, especially since diagnostics can > appear and disappear during editing. > > For example: > Screenshot 2024-10-20 at 16.56.48.png > Here, when press C-n once, I expect the cursor to go here: > Screenshot 2024-10-20 at 16.57.59.png > > I.e. the behavior would be the same as if there were no diagnostics in the buffer. > I'm not sure if that's actually feasible or if there is an issue with this behavior. I think that's indeed the ideal. > I tried your patch but it makes the cursor go on the diagnostic which i find surprising, I believe the cursor should not be able to > move into a diagnostic: > Screenshot 2024-10-20 at 17.00.18.png > > What do you think? I think this behavior is bad, so I don't think this is a good patch. Note especially that C-e puts point after the diagnostic, then DEL deletes characters before the diagnostic! Unexpected and confusing IMO. That's equivalent to the behavior without the 'cursor property: point goes to the end of the displayed diagnostic, both on C-e and C-n. There are two conflicting issues here: A. Having "point is at EOL" be displayed as "the cursor is after the diagnostic" is unacceptable because it means DEL deletes characters at a distance, and other similar bad issues. So we want "point is at EOL" to be displayed as "the cursor is before the diagnostic", which the existing 'cursor property achieves. B. (vertical-motion 1) tries to move the cursor to after the diagnostic, since that's the next screen line. Then the cursor property displays the cursor back to before the diagnostic. Since that ends up moving point to the end of the current line, which is the same visual line, this is unexpected. A is more important than B, so if we want to fix B we can't break A. Here's a self-contained demonstration without flymake: (with-current-buffer (get-buffer-create "*overlay-demonstration*") (erase-buffer) (remove-overlays) (insert (make-string 80 ?x)) (save-excursion (newline) (insert (make-string 80 ?y))) (let ((ol (make-overlay (point) (1+ (point)))) (s (propertize (make-string 80 ?s) 'face 'warning))) (put-text-property 0 1 'cursor t s) (overlay-put ol 'before-string s)) (delete-other-windows) (let ((win (split-window-right -62))) (set-window-buffer win (current-buffer))) (other-window 1)) If you run this then you'll observe behavior B when moving with C-n and C-p. There's actually another symmetric issue to B: after moving to the end of the line with C-e, if you hit C-p that moves to the start of the current screen line, instead of moving to the previous screen line. This is because vertical-motion acts as if the cursor is on screen line 3, when it's actually on screen line 2 because of the 'cursor property. Arguably this is a bug in vertical-motion: if you run (vertical-motion 1) or (vertical-motion -1) in the appropriate places, it returns 1 or -1, claiming that it moved by a screen line even though it actually stayed on the same screen line. I'm not sure how to fix this. IMO, vertical-motion should try harder to move by screen lines. In the C-p case, there's an obviously correct thing to do: move to the same column of the previous screen line. But for some reason, vertical-motion doesn't do it: it stays on the same screen line. Maybe fixing this should start there?
bug-gnu-emacs <at> gnu.org
:bug#73863
; Package emacs
.
(Wed, 13 Nov 2024 14:49:02 GMT) Full text and rfc822 format available.Message #101 received at 73863 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Spencer Baugh <sbaugh <at> janestreet.com> Cc: 73863 <at> debbugs.gnu.org, joaotavora <at> gmail.com, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Wed, 13 Nov 2024 16:45:27 +0200
> From: Spencer Baugh <sbaugh <at> janestreet.com> > Cc: João Távora <joaotavora <at> gmail.com>, Eli Zaretskii > <eliz <at> gnu.org>, > 73863 <at> debbugs.gnu.org > Date: Tue, 12 Nov 2024 16:38:43 -0500 > > There's actually another symmetric issue to B: after moving to the end > of the line with C-e, if you hit C-p that moves to the start of the > current screen line, instead of moving to the previous screen line. > This is because vertical-motion acts as if the cursor is on screen line > 3, when it's actually on screen line 2 because of the 'cursor property. > > Arguably this is a bug in vertical-motion: if you run (vertical-motion > 1) or (vertical-motion -1) in the appropriate places, it returns 1 or > -1, claiming that it moved by a screen line even though it actually > stayed on the same screen line. No, it isn't a bug: vertical-motion works with point, not with the screen position of the cursor. And point is on the next screen line, because the diagnostic overlay "covers" the newline at EOL. > I'm not sure how to fix this. IMO, vertical-motion should try harder to > move by screen lines. Feel free to teach vertical-motion about the 'cursor' property. I don't plan on doing that any time soon, having spent numerous hours on making that function cater to quite a few complications. > In the C-p case, there's an obviously correct thing to do: move to the > same column of the previous screen line. But for some reason, > vertical-motion doesn't do it: it stays on the same screen line. Maybe > fixing this should start there? See above: vertical-motion works perfectly correctly in that case, you are just tricked by the fact that the 'cursor' property forces us to show the cursor not where point is.
Eli Zaretskii <eliz <at> gnu.org>
:Romain Ouabdelkader <romain.ouabdelkader <at> gmail.com>
:Message #106 received at 73863-done <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: sbaugh <at> janestreet.com Cc: 73863-done <at> debbugs.gnu.org, joaotavora <at> gmail.com, romain.ouabdelkader <at> gmail.com Subject: Re: bug#73863: 30.0.91; Unexpected cursor movement with flymake-show-diagnostics-at-end-of-line Date: Sat, 30 Nov 2024 11:45:22 +0200
> Cc: 73863 <at> debbugs.gnu.org, joaotavora <at> gmail.com, romain.ouabdelkader <at> gmail.com > Date: Wed, 13 Nov 2024 16:45:27 +0200 > From: Eli Zaretskii <eliz <at> gnu.org> > > > From: Spencer Baugh <sbaugh <at> janestreet.com> > > Cc: João Távora <joaotavora <at> gmail.com>, Eli Zaretskii > > <eliz <at> gnu.org>, > > 73863 <at> debbugs.gnu.org > > Date: Tue, 12 Nov 2024 16:38:43 -0500 > > > > There's actually another symmetric issue to B: after moving to the end > > of the line with C-e, if you hit C-p that moves to the start of the > > current screen line, instead of moving to the previous screen line. > > This is because vertical-motion acts as if the cursor is on screen line > > 3, when it's actually on screen line 2 because of the 'cursor property. > > > > Arguably this is a bug in vertical-motion: if you run (vertical-motion > > 1) or (vertical-motion -1) in the appropriate places, it returns 1 or > > -1, claiming that it moved by a screen line even though it actually > > stayed on the same screen line. > > No, it isn't a bug: vertical-motion works with point, not with the > screen position of the cursor. And point is on the next screen line, > because the diagnostic overlay "covers" the newline at EOL. > > > I'm not sure how to fix this. IMO, vertical-motion should try harder to > > move by screen lines. > > Feel free to teach vertical-motion about the 'cursor' property. I > don't plan on doing that any time soon, having spent numerous hours on > making that function cater to quite a few complications. > > > In the C-p case, there's an obviously correct thing to do: move to the > > same column of the previous screen line. But for some reason, > > vertical-motion doesn't do it: it stays on the same screen line. Maybe > > fixing this should start there? > > See above: vertical-motion works perfectly correctly in that case, you > are just tricked by the fact that the 'cursor' property forces us to > show the cursor not where point is. No further comments within more than 2 weeks, so I'm no closing this bug.
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Sat, 28 Dec 2024 12:24:13 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.