GNU bug report logs -
#59979
30.0.50; dockerfile-ts-mode imenu issue
Previous Next
Reported by: Eshel Yaron <me <at> eshelyaron.com>
Date: Sun, 11 Dec 2022 23:01:02 UTC
Severity: normal
Found in version 30.0.50
Done: Randy Taylor <dev <at> rjt.dev>
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 59979 in the body.
You can then email your comments to 59979 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#59979
; Package
emacs
.
(Sun, 11 Dec 2022 23:01:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Eshel Yaron <me <at> eshelyaron.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Sun, 11 Dec 2022 23:01:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
I stumbled upon the following issue while checking out the new
dockerfile-ts-mode.
1. emacs -Q
2. C-x C-f /tmp/Dockerfile
3. Insert the following contents (taken from
https://docs.docker.com/build/building/multi-stage/#use-a-previous-stage-as-a-new-stage):
FROM ubuntu AS base
RUN echo "base"
FROM base AS stage1
RUN echo "stage1"
FROM base AS stage2
RUN echo "stage2"
4. Try to use M-x imenu to navigate to the last build stage
4.a. We get the following imenu--index-alist:
(("Stage"
("ubuntu" . #<marker at 1 in Dockerfile>)
("base" . #<marker at 42 in Dockerfile>)
("base" . #<marker at 81 in Dockerfile>)))
4.b. Consequently, we can't choose and jump to the last stage, because
dockerfile-ts-mode calls both of the last two stages by the same name
("base").
The crux of the issue is that dockerfile-ts-mode uses a stage's base
image as its name, which seems kinda wrong and leads to ambiguity since
many stages can have a common base image. Instead, it would be
preferable IMO to use the index of the stage or, when available, its
unique name (such as "stage1" in the example above).
Thanks!
In GNU Emacs 30.0.50 (build 9, x86_64-apple-darwin22.1.0, NS
appkit-2299.00 Version 13.0 (Build 22A380)) of 2022-12-11 built on
esmac.lan
Repository revision: 85108d541217f0333860c4f86c3b16b4349f85a4
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2299
System Description: macOS 13.0
Configured using:
'configure --with-native-compilation --enable-link-time-optimization
--with-json --with-xwidgets --with-mailutils --with-imagemagick
--without-dbus'
Configured features:
ACL GIF GLIB GMP GNUTLS IMAGEMAGICK JPEG JSON LCMS2 LIBXML2 MODULES
NATIVE_COMP NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM XWIDGETS ZLIB
Important settings:
value of $LC_CTYPE: UTF-8
locale-coding-system: utf-8-unix
Major mode: Dockerfile
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-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:
None found.
Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils pp cl-print
byte-opt help-fns radix-tree thingatpt imenu comp comp-cstr warnings
icons subr-x rx cl-macs gv cl-extra help-mode bytecomp byte-compile
dockerfile-ts-mode treesit cl-seq cl-loaddefs cl-lib 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 xwidget-internal kqueue cocoa ns lcms2 multi-tty
make-network-process native-compile emacs)
Memory information:
((conses 16 111634 8544)
(symbols 48 7501 0)
(strings 32 31342 3006)
(string-bytes 1 961129)
(vectors 16 23207)
(vector-slots 8 403727 9539)
(floats 8 60 40)
(intervals 56 396 0)
(buffers 984 14))
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#59979
; Package
emacs
.
(Sun, 11 Dec 2022 23:58:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 59979 <at> debbugs.gnu.org (full text, mbox):
On Sunday, December 11th, 2022 at 15:39, Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote:
>
> I stumbled upon the following issue while checking out the new
> dockerfile-ts-mode.
>
> 1. emacs -Q
> 2. C-x C-f /tmp/Dockerfile
> 3. Insert the following contents (taken from
> https://docs.docker.com/build/building/multi-stage/#use-a-previous-stage-as-a-new-stage):
>
> FROM ubuntu AS base
> RUN echo "base"
>
> FROM base AS stage1
> RUN echo "stage1"
>
> FROM base AS stage2
> RUN echo "stage2"
>
> 4. Try to use M-x imenu to navigate to the last build stage
> 4.a. We get the following imenu--index-alist:
>
> (("Stage"
> ("ubuntu" . #<marker at 1 in Dockerfile>)
>
> ("base" . #<marker at 42 in Dockerfile>)
>
> ("base" . #<marker at 81 in Dockerfile>)))
>
>
> 4.b. Consequently, we can't choose and jump to the last stage, because
> dockerfile-ts-mode calls both of the last two stages by the same name
> ("base").
>
> The crux of the issue is that dockerfile-ts-mode uses a stage's base
> image as its name, which seems kinda wrong and leads to ambiguity since
> many stages can have a common base image. Instead, it would be
> preferable IMO to use the index of the stage or, when available, its
> unique name (such as "stage1" in the example above).
>
> Thanks!
>
Thanks, I'll take a look and hopefully reply back with a patch in a bit.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#59979
; Package
emacs
.
(Mon, 12 Dec 2022 02:31:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 59979 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Sunday, December 11th, 2022 at 18:57, Randy Taylor <dev <at> rjt.dev> wrote:
>
> On Sunday, December 11th, 2022 at 15:39, Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text editors" bug-gnu-emacs <at> gnu.org wrote:
>
> > I stumbled upon the following issue while checking out the new
> > dockerfile-ts-mode.
> >
> > 1. emacs -Q
> > 2. C-x C-f /tmp/Dockerfile
> > 3. Insert the following contents (taken from
> > https://docs.docker.com/build/building/multi-stage/#use-a-previous-stage-as-a-new-stage):
> >
> > FROM ubuntu AS base
> > RUN echo "base"
> >
> > FROM base AS stage1
> > RUN echo "stage1"
> >
> > FROM base AS stage2
> > RUN echo "stage2"
> >
> > 4. Try to use M-x imenu to navigate to the last build stage
> > 4.a. We get the following imenu--index-alist:
> >
> > (("Stage"
> > ("ubuntu" . #<marker at 1 in Dockerfile>)
> >
> > ("base" . #<marker at 42 in Dockerfile>)
> >
> > ("base" . #<marker at 81 in Dockerfile>)))
> >
> > 4.b. Consequently, we can't choose and jump to the last stage, because
> > dockerfile-ts-mode calls both of the last two stages by the same name
> > ("base").
> >
> > The crux of the issue is that dockerfile-ts-mode uses a stage's base
> > image as its name, which seems kinda wrong and leads to ambiguity since
> > many stages can have a common base image. Instead, it would be
> > preferable IMO to use the index of the stage or, when available, its
> > unique name (such as "stage1" in the example above).
> >
> > Thanks!
>
>
> Thanks, I'll take a look and hopefully reply back with a patch in a bit.
>
I didn't notice this because I use conult-imenu, which will add an index for any duplicates. imenu doesn't do this, and for other modes like c-mode, c++-mode, org-mode, etc., only the first entry gets shown.
I've attached a patch which will use the stage name if it's available, otherwise use the base image.
[0001-Improve-dockerfile-ts-mode-imenu-generation-Bug-5997.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#59979
; Package
emacs
.
(Mon, 12 Dec 2022 08:29:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 59979 <at> debbugs.gnu.org (full text, mbox):
Randy Taylor <dev <at> rjt.dev> writes:
> On Sunday, December 11th, 2022 at 18:57, Randy Taylor <dev <at> rjt.dev> wrote:
>
> I didn't notice this because I use conult-imenu, which will add an
> index for any duplicates. imenu doesn't do this, and for other modes
> like c-mode, c++-mode, org-mode, etc., only the first entry gets
> shown.
>
> I've attached a patch which will use the stage name if it's available,
> otherwise use the base image.
Great :) That's certainly an improvement.
I still maintain that using the base image as an identifier of the build
stage is not that useful, it doesn't really identify the stage in any
way, like identifying functions their arguments doesn't make a lot of
sense. I do see how in practice that'll probably be fine in most cases.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#59979
; Package
emacs
.
(Mon, 12 Dec 2022 20:17:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 59979 <at> debbugs.gnu.org (full text, mbox):
On Monday, December 12th, 2022 at 03:28, Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote:
>
> Randy Taylor dev <at> rjt.dev writes:
>
> > On Sunday, December 11th, 2022 at 18:57, Randy Taylor dev <at> rjt.dev wrote:
> >
> > I didn't notice this because I use conult-imenu, which will add an
> > index for any duplicates. imenu doesn't do this, and for other modes
> > like c-mode, c++-mode, org-mode, etc., only the first entry gets
> > shown.
> >
> > I've attached a patch which will use the stage name if it's available,
> > otherwise use the base image.
>
>
> Great :) That's certainly an improvement.
>
> I still maintain that using the base image as an identifier of the build
> stage is not that useful, it doesn't really identify the stage in any
> way, like identifying functions their arguments doesn't make a lot of
> sense. I do see how in practice that'll probably be fine in most cases.
>
We don't get any information about which stage is which beyond the base image and potential alias (which is all Dockerfiles themselves have anyway), so we would need to track that stuff ourselves, and I don't think it's worth the complexity. Dockerfiles give us a solution to this anyway: use aliases.
Perhaps consider trying a different imenu implementation? I use consult-imenu which gives indexes for any duplicates (it also flattens imenu which I really like). Maybe someone could add something like that to imenu.
Can someone install the patch? Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#59979
; Package
emacs
.
(Mon, 12 Dec 2022 23:00:01 GMT)
Full text and
rfc822 format available.
Message #20 received at 59979 <at> debbugs.gnu.org (full text, mbox):
Randy Taylor <dev <at> rjt.dev> writes:
> On Monday, December 12th, 2022 at 03:28, Eshel Yaron via "Bug reports
> for GNU Emacs, the Swiss army knife of text editors"
> <bug-gnu-emacs <at> gnu.org> wrote:
>>
>> Randy Taylor dev <at> rjt.dev writes:
>>
>> > On Sunday, December 11th, 2022 at 18:57, Randy Taylor dev <at> rjt.dev wrote:
>> >
>> > I didn't notice this because I use conult-imenu, which will add an
>> > index for any duplicates. imenu doesn't do this, and for other modes
>> > like c-mode, c++-mode, org-mode, etc., only the first entry gets
>> > shown.
>> >
>> > I've attached a patch which will use the stage name if it's available,
>> > otherwise use the base image.
>>
>>
>> Great :) That's certainly an improvement.
>>
>> I still maintain that using the base image as an identifier of the build
>> stage is not that useful, it doesn't really identify the stage in any
>> way, like identifying functions their arguments doesn't make a lot of
>> sense. I do see how in practice that'll probably be fine in most cases.
>>
>
> We don't get any information about which stage is which beyond the
> base image and potential alias (which is all Dockerfiles themselves
> have anyway), so we would need to track that stuff ourselves, and I
> don't think it's worth the complexity. Dockerfiles give us a solution
> to this anyway: use aliases.
>
> Perhaps consider trying a different imenu implementation? I use
> consult-imenu which gives indexes for any duplicates (it also flattens
> imenu which I really like). Maybe someone could add something like
> that to imenu.
>
> Can someone install the patch? Thanks.
Applied, thanks! I’ll leave closing the report to one of you guys :-)
Yuan
Reply sent
to
Randy Taylor <dev <at> rjt.dev>
:
You have taken responsibility.
(Tue, 13 Dec 2022 00:42:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Eshel Yaron <me <at> eshelyaron.com>
:
bug acknowledged by developer.
(Tue, 13 Dec 2022 00:42:02 GMT)
Full text and
rfc822 format available.
Message #25 received at 59979-done <at> debbugs.gnu.org (full text, mbox):
On Monday, December 12th, 2022 at 17:59, Yuan Fu <casouri <at> gmail.com> wrote:
>
> Applied, thanks! I’ll leave closing the report to one of you guys :-)
>
> Yuan
Thanks! Closing.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Tue, 10 Jan 2023 12:24:12 GMT)
Full text and
rfc822 format available.
This bug report was last modified 2 years and 221 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.