Package: emacs;
Reported by: Ergus <spacibba <at> aol.com>
Date: Tue, 4 Feb 2025 23:26:01 UTC
Severity: normal
Found in version 31.0.50
To reply to this bug, email your comments to 76064 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#76064
; Package emacs
.
(Tue, 04 Feb 2025 23:26:02 GMT) Full text and rfc822 format available.Ergus <spacibba <at> aol.com>
:bug-gnu-emacs <at> gnu.org
.
(Tue, 04 Feb 2025 23:26:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Ergus <spacibba <at> aol.com> To: bug-gnu-emacs <at> gnu.org Subject: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line Date: Wed, 05 Feb 2025 00:24:32 +0100
Hi: I have been using flymake-show-diagnostics-at-end-of-line for a while and I have noticed that the inlined diagnostics behaves wrongly. 1. If I am in a line with a diagnostic at the end, and I do C-e, the cursor goes to the end of the diagnostic instead to the end of the line. 2. If after that I do C-a nothing happens, the cursor "stock" there until I leave the line. Left or right arrow don't work either. 3. If we are in the last line and it has a diagnostic, it is impossible to write at the end of the line because the cursor jumps constantly to the end of the diagnostic when typing. In GNU Emacs 31.0.50 (build 10, x86_64-pc-linux-gnu, GTK+ Version 3.24.48, cairo version 1.18.2) of 2025-02-04 built on RTX Repository revision: b4eb59a6a931a2d2751e155ec1a5082cab5e8509 Repository branch: project System Description: Arch Linux Configured using: 'configure --prefix=/home/ergo/.local/ --with-mailutils --with-pgtk --with-modules --with-cairo --with-harfbuzz --with-native-compilation=aot '--program-transform-name=s/^ctags$/ctags.emacs/'' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: global-auto-revert-mode: t recentf-mode: t electric-pair-mode: t whitespace-mode: t flyspell-mode: t completion-preview-mode: t diff-hl-margin-mode: t global-corfu-mode: t corfu-mode: t project-multi-mode: t gtags-mode: t repeat-mode: t xterm-mouse-mode: t xclip-mode: t override-global-mode: t winner-mode: t save-place-mode: t delete-selection-mode: t savehist-mode: t global-display-fill-column-indicator-mode: t display-fill-column-indicator-mode: t global-display-line-numbers-mode: t display-line-numbers-mode: t which-key-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t context-menu-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t minibuffer-regexp-mode: t size-indication-mode: t column-number-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /mnt/casa/gits/emacs_clones/gtags-mode/gtags-mode hides /home/ergo/.config/emacs/elpa/gtags-mode-1.8.2/gtags-mode /home/ergo/.config/emacs/elpa/transient-20250201.1314/transient hides /home/ergo/.local/share/emacs/31.0.50/lisp/transient Features: (shadow sort mail-extr autorevert filenotify recentf tree-widget wid-edit ffap thingatpt emacsbug elec-pair whitespace flyspell-correct flyspell ispell completion-preview diff-hl-margin diff-hl-dired diff-hl log-view log-edit message sendmail yank-media puny citre-lang-fileref citre-tags citre-ctags citre-readtags citre-readtags-tables citre-backend-interface citre-common-tag rx citre-common-util dired-x dired dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util text-property-search time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader add-log pcvs-util vc-dir ewoc vc vc-dispatcher diff-mode track-changes corfu project-multi-mode gtags-mode files-x xref project term/tmux term/xterm xterm init repeat markdown-ts-mode treesit cape compat use-package-ensure package browse-url xdg url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source eieio eieio-core cl-macs icons password-cache json subr-x map url-vars use-package-diminish xt-mouse xclip edmacro kmacro byte-opt use-package-bind-key bind-key cl-extra help-mode simple-16-theme winner ring saveplace delsel savehist easy-mmode display-fill-column-indicator display-line-numbers diminish which-key cl-seq use-package-core cl-loaddefs cl-lib bytecomp byte-compile gv disp-table info 0blayout-autoloads ac-emoji-autoloads ac-haskell-process-autoloads ac-html-autoloads arduino-cli-mode-autoloads auctex-autoloads tex-site auto-complete-autoloads avy-zap-autoloads avy-autoloads benchmark-init-autoloads better-shell-autoloads caml-autoloads cape-autoloads citre-autoloads clang-format-autoloads cobol-mode-autoloads compile-multi-autoloads compiler-explorer-autoloads corfu-autoloads crdt-autoloads csv-mode-autoloads d-mode-autoloads deadgrep-autoloads debbugs-autoloads diff-hl-autoloads diminish-autoloads dired-sidebar-autoloads dired-subtree-autoloads dired-hacks-utils-autoloads dumb-jump-autoloads e2ansi-autoloads eglot-booster-autoloads emamux-autoloads esup-autoloads evil-collection-autoloads annalist-autoloads evil-leader-autoloads evil-autoloads face-explorer-autoloads fancy-compilation-autoloads flx-autoloads flycheck-julia-autoloads flycheck-rust-autoloads flycheck-autoloads flymake-nasm-autoloads flymake-quickdef-autoloads flyspell-correct-autoloads git-commit-ts-mode-autoloads git-modes-autoloads git-timemachine-autoloads gnuplot-autoloads google-c-style-autoloads goto-chg-autoloads groovy-mode-autoloads gtags-mode-autoloads haskell-mode-autoloads highlight-indent-guides-autoloads i3wm-config-mode-autoloads ibuffer-sidebar-autoloads iedit-autoloads imenu-list-autoloads julia-ts-mode-autoloads julia-mode-autoloads languagetool-autoloads lice-autoloads lorem-ipsum-autoloads lua-mode-autoloads magit-autoloads magit-section-autoloads llama-autoloads markdown-mode-autoloads markdown-ts-mode-autoloads modern-cpp-font-lock-autoloads move-dup-autoloads multiple-cursors-autoloads mutt-mode-autoloads nasm-mode-autoloads neotree-autoloads nftables-mode-autoloads nginx-mode-autoloads notmuch-autoloads objed-autoloads opencl-mode-autoloads paradox-autoloads phi-search-autoloads pkg-info-autoloads epl-autoloads pkgbuild-mode-autoloads platformio-mode-autoloads async-autoloads plz-autoloads popon-autoloads popup-autoloads projectile-autoloads projection-autoloads protobuf-mode-autoloads protobuf-ts-mode-autoloads ptemplate-templates-autoloads ptemplate-autoloads py-vterm-interaction-autoloads scopeline-autoloads shell-command+-autoloads slime-autoloads macrostep-autoloads sphinx-mode-autoloads f-autoloads dash-autoloads s-autoloads spinner-autoloads ssh-config-mode-autoloads string-inflection-autoloads sudo-edit-autoloads systemd-autoloads tmux-mode-autoloads transient-autoloads tsc-autoloads urgrep-autoloads vdiff-autoloads hydra-autoloads lv-autoloads vterm-toggle-autoloads vterm-autoloads vundo-autoloads which-key-posframe-autoloads posframe-autoloads with-editor-autoloads xclip-autoloads yasnippet-snippets-autoloads yasnippet-autoloads early-init rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win term/common-win touch-screen pgtk-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify dynamic-setting system-font-setting font-render-setting cairo gtk pgtk lcms2 multi-tty move-toolbar make-network-process tty-child-frames native-compile emacs) Memory information: ((conses 16 192993 61392) (symbols 48 15750 2) (strings 32 55861 16121) (string-bytes 1 1888131) (vectors 16 20259) (vector-slots 8 236738 29574) (floats 8 108 60) (intervals 56 1234 0) (buffers 992 11))
bug-gnu-emacs <at> gnu.org
:bug#76064
; Package emacs
.
(Wed, 05 Feb 2025 13:47:02 GMT) Full text and rfc822 format available.Message #8 received at 76064 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Ergus <spacibba <at> aol.com>, sbaugh <at> janestreet.com Cc: 76064 <at> debbugs.gnu.org Subject: Re: bug#76064: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line Date: Wed, 05 Feb 2025 15:46:45 +0200
> Date: Wed, 05 Feb 2025 00:24:32 +0100 > From: Ergus via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> > > I have been using flymake-show-diagnostics-at-end-of-line for a while > and I have noticed that the inlined diagnostics behaves wrongly. > > 1. If I am in a line with a diagnostic at the end, and I do C-e, the > cursor goes to the end of the diagnostic instead to the end of the line. > > 2. If after that I do C-a nothing happens, the cursor "stock" there > until I leave the line. Left or right arrow don't work either. > > 3. If we are in the last line and it has a diagnostic, it is impossible > to write at the end of the line because the cursor jumps constantly to > the end of the diagnostic when typing. This is bug#73863. I explained why this happens in that bug, see https://debbugs.gnu.org/cgi/bugreport.cgi?bug=73863#35 I proposed several potential solutions for that here: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=73863#62 (and a couple of other ideas elsewhere in that discussion). But AFAIU, none of the suggestions were acceptable, so here we are.
bug-gnu-emacs <at> gnu.org
:bug#76064
; Package emacs
.
(Wed, 05 Feb 2025 15:46:02 GMT) Full text and rfc822 format available.Message #11 received at 76064 <at> debbugs.gnu.org (full text, mbox):
From: Ergus <spacibba <at> aol.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: sbaugh <at> janestreet.com, 76064 <at> debbugs.gnu.org Subject: Re: bug#76064: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line Date: Wed, 5 Feb 2025 16:45:07 +0100
Hi Eli: Looking at your suggestions I have my opinion I will share just in case you care: . 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 Given that flymake has the new feature this is not an option. The issue is pretty annoying and not infrequent at all. I think that this feature was added because vscode and other editors around already have it, so I expect it to become popular. . 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 Maybe we need an extra property like at-end or something similar, to indicate that the overlay does not belong to the line at all for navigation purposes. . 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 I don't understand how these two may fix the issue. At least not the 3 symptoms I described in the bug report. . implement display of diagnostics in a tooltip instead IIUC this may be very slow right? How many tooltips will be needed? I think that we are just missing some property in the overlay that basically means "this text doesn't exist at all". Is it really that hard? On Wed, Feb 05, 2025 at 03:46:45PM +0200, Eli Zaretskii wrote: >> Date: Wed, 05 Feb 2025 00:24:32 +0100 >> From: Ergus via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> >> >> I have been using flymake-show-diagnostics-at-end-of-line for a while >> and I have noticed that the inlined diagnostics behaves wrongly. >> >> 1. If I am in a line with a diagnostic at the end, and I do C-e, the >> cursor goes to the end of the diagnostic instead to the end of the line. >> >> 2. If after that I do C-a nothing happens, the cursor "stock" there >> until I leave the line. Left or right arrow don't work either. >> >> 3. If we are in the last line and it has a diagnostic, it is impossible >> to write at the end of the line because the cursor jumps constantly to >> the end of the diagnostic when typing. > >This is bug#73863. I explained why this happens in that bug, see > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=73863#35 > >I proposed several potential solutions for that here: > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=73863#62 > >(and a couple of other ideas elsewhere in that discussion). But >AFAIU, none of the suggestions were acceptable, so here we are.
bug-gnu-emacs <at> gnu.org
:bug#76064
; Package emacs
.
(Wed, 05 Feb 2025 16:33:01 GMT) Full text and rfc822 format available.Message #14 received at 76064 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Ergus <spacibba <at> aol.com> Cc: sbaugh <at> janestreet.com, 76064 <at> debbugs.gnu.org Subject: Re: bug#76064: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line Date: Wed, 05 Feb 2025 18:31:54 +0200
> Date: Wed, 5 Feb 2025 16:45:07 +0100 > From: Ergus <spacibba <at> aol.com> > Cc: sbaugh <at> janestreet.com, 76064 <at> debbugs.gnu.org > > I think that we are just missing some property in the overlay that > basically means "this text doesn't exist at all". > > Is it really that hard? I think you don't realize the root cause of these problems. The root cause is cursor position, not anything else. The overlay itself is not the problem, the problem is that it tells the display engine to show the cursor on the first character of the overlay string, when point is actually _on_the_next_line_. That's why cursor motion misbehaves. IOW, it isn't about the overlay string text, it's about where to show the cursor.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.