X-Loop: help-debbugs@HIDDEN
Subject: bug#79426: diagnostic with empty range => preceding char is highlighted
Resent-From: Alan Donovan <adonovan@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 10 Sep 2025 22:09:01 +0000
Resent-Message-ID: <handler.79426.B.17575421047198 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 79426
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords:
To: 79426 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.17575421047198
(code B ref -1); Wed, 10 Sep 2025 22:09:01 +0000
Received: (at submit) by debbugs.gnu.org; 10 Sep 2025 22:08:24 +0000
Received: from localhost ([127.0.0.1]:40659 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uwSzH-0001ry-Mr
for submit <at> debbugs.gnu.org; Wed, 10 Sep 2025 18:08:24 -0400
Received: from lists.gnu.org ([2001:470:142::17]:60208)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <adonovan@HIDDEN>)
id 1uwSzF-0001r2-QJ
for submit <at> debbugs.gnu.org; Wed, 10 Sep 2025 18:08:22 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <adonovan@HIDDEN>)
id 1uwSz6-00040t-H6
for bug-gnu-emacs@HIDDEN; Wed, 10 Sep 2025 18:08:12 -0400
Received: from mail-il1-x130.google.com ([2607:f8b0:4864:20::130])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.90_1) (envelope-from <adonovan@HIDDEN>)
id 1uwSz4-0007eH-Ro
for bug-gnu-emacs@HIDDEN; Wed, 10 Sep 2025 18:08:12 -0400
Received: by mail-il1-x130.google.com with SMTP id
e9e14a558f8ab-408c236c500so34885ab.1
for <bug-gnu-emacs@HIDDEN>; Wed, 10 Sep 2025 15:08:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1757542088; x=1758146888; darn=gnu.org;
h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
:date:message-id:reply-to;
bh=Mx2djxGyS4ylj0LD0cE3FVxEaQpFq2VFmZfqECF9xZY=;
b=bRRL3badftoCduJa1/rCnhUYl8ykghA628o30VDuvJWd5l2ESeyw+0WXeMbVL6eKRH
6fReGcqcXzzWc6UhN/H8m4GODvmiD2RDso2qFKL4Q8dC05DUcIy5vsUy7zAgpiaNAL4P
EvGsztoE0liC1oJRzR++p0yiiY73lqnwe3xXOohXpulKXtI+nltJr5Gg9L0kZrPpELKL
3LlAGMMaEWaKcu6iJgtyiQEABThuYZAnI1OYcLrZeZD/UOfncmcKdfljn5fRor1BLfgq
ImtXR/gGEDtgO4Pftdrnd0EsnstlD1EZXl9nHzOL7vwiBbmd9ATeJBMb9jd7QMKGDC49
eHYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1757542088; x=1758146888;
h=to:subject:message-id:date:from:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=Mx2djxGyS4ylj0LD0cE3FVxEaQpFq2VFmZfqECF9xZY=;
b=gAjRS6O5ew9PIvvJmqC5ohjXXw0Sc3ItMnB/GH8PR7lS4hnYzxZ40G//vVMaun6Frv
ljyI7II3WUL0dB0UdWwecG3kCg+IwknGd0ytDCR2+F5OPOF7Sxqe3x9urGR1FXGB4m2N
LtHDfxIVtFdgOfTCGRHKZ5tPASPiYQG8BE4DiCdBCbfvb3RvHmc/0lyiGn3JF6SRtyiv
nQw9FvgPtTiBTYX6Ln1T64zwWJz63OwLUxOdQkZeFyqOzYqxOGhsCJ2uFHewOCtL6PYU
KxSpc6VN9TsO53GLs1+PoYpDVdkLPA8RGn9DgJFl2s96vAKnyyI/dXVn2lD4vrLTBQc2
9lsw==
X-Gm-Message-State: AOJu0YyI6EszeDyyM+fQBaeuWkTU/VgfP7fVI57GcrBAkuJv0yZRXoLf
pJwiHNCUfZwvBOGA8U4s6O0sFsOEfZ/IiYbIQGLxWHYJNfnMgeE5Kqc8EbczMbVn90M876PG1LX
BYCjeb0E8qWvfGNbfgDuvOjwU18oTaR1exzXJKYrHl//tLeZXwlyrjrj9UW4=
X-Gm-Gg: ASbGnctetExxKsnaIWDi82itsUz5QeCEE8UXw6Xd1smTEDCShieNpQdF3gjD7pBgRvB
HjS54NhFBiRGYWSJDlOFumRXKjyKychuZTwSdK3+H7umhjAB0wE4dpUJfcIEOArcLQBJGeWhoRh
n3kUvuwNiWIQU8v9BWX64Ga0qhb7mUPheo+chVTMBo6FwT86VP0F77kiVozY4Sib/iUrXpWZDsM
Z6xL8x4qAVaO+JSxOEoZl6QLw==
X-Google-Smtp-Source: AGHT+IGN/AhSsB8FZx4GGfr6aR9PEF5WqJ2bZnK4OwcRRhhNZ/9PTR6Nlge2s0XIapnzsqvAK6E5sMan5RwwYEXcds4=
X-Received: by 2002:a05:6e02:b2f:b0:405:3b66:9a92 with SMTP id
e9e14a558f8ab-4170e5ad87dmr7574165ab.7.1757542087442; Wed, 10 Sep 2025
15:08:07 -0700 (PDT)
MIME-Version: 1.0
From: Alan Donovan <adonovan@HIDDEN>
Date: Wed, 10 Sep 2025 18:07:56 -0400
X-Gm-Features: Ac12FXyrZzZxP2bHucb629ME73x3mPDxe-VJrOOW1WtL0h5Eh0JySOvKHAvaHks
Message-ID: <CAPVWWDWORKGynC=jcq80J2ZJEEwmO=dCtZN8OVvYPH0uEWL7PA@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
Received-SPF: pass client-ip=2607:f8b0:4864:20::130;
envelope-from=adonovan@HIDDEN; helo=mail-il1-x130.google.com
X-Spam_score_int: -175
X-Spam_score: -17.6
X-Spam_bar: -----------------
X-Spam_report: (-17.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001,
DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
ENV_AND_HDR_SPF_MATCH=-0.5, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5,
USER_IN_DEF_SPF_WL=-7.5 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)
(from https://github.com/joaotavora/eglot/issues/27#issuecomment-3275571619)
The fix for issue #27 (zero-width ranges) included this code:
;; Fallback to `flymake-diag-region' if server
;; botched the range
(when (= beg end)
(if-let* ((st (plist-get range :start))
(diag-region
(flymake-diag-region
(current-buffer) (1+ (plist-get st :line))
(plist-get st :character))))
(setq beg (car diag-region) end (cdr diag-region))
(eglot--widening
(goto-char (point-min))
(setq beg
(eglot--bol
(1+ (plist-get (plist-get range :start) :line))))
(setq end
(line-end-position
(1+ (plist-get (plist-get range :end) :line)))))))
This causes Emacs to highlight the character before the indicated
range, which is often an irrelevant blank space, instead of the
character after, which is the token of interest. (Gopls' nilness
analyzers publishes zero-width diagnostics.)
Why is that the appropriate fix, as opposed to something as simple as this?
(when (= beg end)
(setq end (1+ end)))
(Aside: "botched" seems like an unnecessarily pejorative: an empty
range is what it is, and sometimes all the information the server has
is the start point of a token.)
There have been two minor changes to that logic since #27 was fixed,
but neither seems relevant to this question:
- 3d9a6f1 Handle case when diagnostic :character is out of range
- 5b62d00 Enable lsp project-wide diagnostics via flymake
I couldn't check for related issues because
https://lists.gnu.org/archive/html/bug-gnu-emacs/ appears to be down.
thanks
alan
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Alan Donovan <adonovan@HIDDEN> Subject: bug#79426: Acknowledgement (diagnostic with empty range => preceding char is highlighted) Message-ID: <handler.79426.B.17575421047198.ack <at> debbugs.gnu.org> References: <CAPVWWDWORKGynC=jcq80J2ZJEEwmO=dCtZN8OVvYPH0uEWL7PA@HIDDEN> X-Gnu-PR-Message: ack 79426 X-Gnu-PR-Package: emacs Reply-To: 79426 <at> debbugs.gnu.org Date: Wed, 10 Sep 2025 22:09:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-gnu-emacs@HIDDEN If you wish to submit further information on this problem, please send it to 79426 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 79426: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D79426 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN
Subject: bug#79426: diagnostic with empty range => preceding char is highlighted
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 11 Sep 2025 04:50:02 +0000
Resent-Message-ID: <handler.79426.B79426.17575662021443 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 79426
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords:
To: Alan Donovan <adonovan@HIDDEN>, =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= <joaotavora@HIDDEN>
Cc: 79426 <at> debbugs.gnu.org
Received: via spool by 79426-submit <at> debbugs.gnu.org id=B79426.17575662021443
(code B ref 79426); Thu, 11 Sep 2025 04:50:02 +0000
Received: (at 79426) by debbugs.gnu.org; 11 Sep 2025 04:50:02 +0000
Received: from localhost ([127.0.0.1]:41602 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uwZFx-0000NB-Cv
for submit <at> debbugs.gnu.org; Thu, 11 Sep 2025 00:50:01 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:49866)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uwZFv-0000Mm-Qi
for 79426 <at> debbugs.gnu.org; Thu, 11 Sep 2025 00:50:00 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1uwZFq-0003DE-Ay; Thu, 11 Sep 2025 00:49:54 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
Date; bh=mDTrAS+sIJZlCMWos6AjSE6ebOJM5FC6IzRcRJxpiEM=; b=TXCpzwC0M9wD9xybTTHS
xLFQtKrvywKAsppLdTvA377NAPaACxuNEy+SbtX0y1wBOo99MC3sAJAXg1FnD/PCVxt8/vBLcEXkt
sa0edW573zswjReWiOfn0Vhg2No7jGLbFYuA3Ul8/0MO01L7/XAvnMrfA8xUBzAg0xMsjtjD/vuuL
kXHUBBKgeuStYNX9zNcjmNDeMM8+j+Jf6PGcFZU+PX/5bpnuEZY6mOgtJqgD+1Zuf/OzK+UFjoE9Q
RQB7jxYQpXSVTfstflCQMJqEerj9aidq7XhHGOv8a7D61K9mdVrV1M7i4KL1ON+z8M0tAybB1mZ+7
ukVqZCZ78xX/rw==;
Date: Thu, 11 Sep 2025 07:49:52 +0300
Message-Id: <86frctvbin.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <CAPVWWDWORKGynC=jcq80J2ZJEEwmO=dCtZN8OVvYPH0uEWL7PA@HIDDEN>
(bug-gnu-emacs@HIDDEN)
References: <CAPVWWDWORKGynC=jcq80J2ZJEEwmO=dCtZN8OVvYPH0uEWL7PA@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Date: Wed, 10 Sep 2025 18:07:56 -0400
> From: Alan Donovan via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>
> (from https://github.com/joaotavora/eglot/issues/27#issuecomment-3275571619)
>
> The fix for issue #27 (zero-width ranges) included this code:
>
> ;; Fallback to `flymake-diag-region' if server
> ;; botched the range
> (when (= beg end)
> (if-let* ((st (plist-get range :start))
> (diag-region
> (flymake-diag-region
> (current-buffer) (1+ (plist-get st :line))
> (plist-get st :character))))
> (setq beg (car diag-region) end (cdr diag-region))
> (eglot--widening
> (goto-char (point-min))
> (setq beg
> (eglot--bol
> (1+ (plist-get (plist-get range :start) :line))))
> (setq end
> (line-end-position
> (1+ (plist-get (plist-get range :end) :line)))))))
>
> This causes Emacs to highlight the character before the indicated
> range, which is often an irrelevant blank space, instead of the
> character after, which is the token of interest. (Gopls' nilness
> analyzers publishes zero-width diagnostics.)
>
> Why is that the appropriate fix, as opposed to something as simple as this?
>
> (when (= beg end)
> (setq end (1+ end)))
>
> (Aside: "botched" seems like an unnecessarily pejorative: an empty
> range is what it is, and sometimes all the information the server has
> is the start point of a token.)
>
> There have been two minor changes to that logic since #27 was fixed,
> but neither seems relevant to this question:
> - 3d9a6f1 Handle case when diagnostic :character is out of range
> - 5b62d00 Enable lsp project-wide diagnostics via flymake
>
> I couldn't check for related issues because
> https://lists.gnu.org/archive/html/bug-gnu-emacs/ appears to be down.
Thanks, I added João to the discussion.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.