all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#76064: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line
       [not found] <87ikpp5m4v.fsf.ref@aol.com>
@ 2025-02-04 23:24 ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2025-02-05 13:46   ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2025-02-04 23:24 UTC (permalink / raw)
  To: 76064


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))





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#76064: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line
  2025-02-04 23:24 ` bug#76064: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2025-02-05 13:46   ` Eli Zaretskii
  2025-02-05 15:45     ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 4+ messages in thread
From: Eli Zaretskii @ 2025-02-05 13:46 UTC (permalink / raw)
  To: Ergus, sbaugh; +Cc: 76064

> 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@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.





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#76064: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line
  2025-02-05 13:46   ` Eli Zaretskii
@ 2025-02-05 15:45     ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2025-02-05 16:31       ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2025-02-05 15:45 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: sbaugh, 76064

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@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.





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#76064: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line
  2025-02-05 15:45     ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2025-02-05 16:31       ` Eli Zaretskii
  0 siblings, 0 replies; 4+ messages in thread
From: Eli Zaretskii @ 2025-02-05 16:31 UTC (permalink / raw)
  To: Ergus; +Cc: sbaugh, 76064

> Date: Wed, 5 Feb 2025 16:45:07 +0100
> From: Ergus <spacibba@aol.com>
> Cc: sbaugh@janestreet.com, 76064@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.





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-02-05 16:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <87ikpp5m4v.fsf.ref@aol.com>
2025-02-04 23:24 ` bug#76064: 31.0.50; Display issue with flymake-show-diagnostics-at-end-of-line Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-02-05 13:46   ` Eli Zaretskii
2025-02-05 15:45     ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2025-02-05 16:31       ` Eli Zaretskii

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.