GNU bug report logs - #28448
26.0.50; js-mode missing some functions for imenu

Previous Next

Package: emacs;

Reported by: Tom Tromey <tom <at> tromey.com>

Date: Wed, 13 Sep 2017 17:56:02 UTC

Severity: minor

Merged with 41676

Found in versions 26.0.50, 27.0.91

To reply to this bug, email your comments to 28448 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


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#28448; Package emacs. (Wed, 13 Sep 2017 17:56:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Tom Tromey <tom <at> tromey.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 13 Sep 2017 17:56:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Tom Tromey <tom <at> tromey.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 26.0.50; js-mode missing some functions for imenu
Date: Wed, 13 Sep 2017 11:54:30 -0600
Consider this pared-down but relatively normal js file:

================================================================
function StyleSheetEditor(styleSheet, win, file, isNew, walker, highlighter) {
}
StyleSheetEditor.prototype = {
    get unsaved() {
    },
    updateLinkedStyleSheet: function () {
    },
    checkLinkedFileForChanges: function () {
	this.unsaved().updateLinkedStyleSheet();
    },
}
================================================================

Here it would be great to have imenu entries for "unsaved" and
"updateLinkedStyleSheet".

Currently js-mode doesn't find these.

Tom




In GNU Emacs 26.0.50 (build 8, x86_64-pc-linux-gnu, GTK+ Version 3.22.17)
 of 2017-08-28 built on pokyo
Repository revision: 433cf5b2046f9b0a9f500dae1d072cc53f2a3c10
Windowing system distributor 'Fedora Project', version 11.0.11903000
System Description:	Fedora release 25 (Twenty Five)

Recent messages:
funcall-interactively: End of buffer
Saving file /tmp/r.js...
Wrote /tmp/r.js
No more miss-spelled word!
C-x C-g is undefined
imenu-find-default: Wrong type argument: stringp, nil
Undo! [2 times]
imenu-find-default: Wrong type argument: stringp, nil
Saving file /tmp/r.js...
Wrote /tmp/r.js

Configured using:
 'configure --prefix=/home/tromey/Emacs/install --with-modules'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY
LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 MODULES LIBSYSTEMD

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: JS

Minor modes in effect:
  erc-spelling-mode: t
  erc-truncate-mode: t
  shell-dirtrack-mode: t
  diff-auto-refine-mode: t
  flyspell-mode: t
  which-function-mode: t
  projectile-global-mode: t
  projectile-mode: t
  erc-notify-mode: t
  erc-notifications-mode: t
  erc-services-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-netsplit-mode: t
  erc-hl-nicks-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  flycheck-mode: t
  savehist-mode: t
  cl-old-struct-compat-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  auto-fill-function: js-do-auto-fill
  transient-mark-mode: t

Load-path shadows:
/home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Emacs/install/share/emacs/26.0.50/lisp/play/bubbles

Features:
(shadow emacsbug thai-util thai-word gud python tramp-sh nnregistry
sh-script executable make-mode ix grapnel footnote cl-print debug
url-about url-dav url-dired webjump org-rmail org-mhe org-irc org-info
org-gnus org-docview doc-view image-mode org-bibtex bibtex org-bbdb
org-w3m org-element avl-tree generator org org-macro org-footnote
org-pcomplete org-list org-faces org-entities noutline outline
org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table
ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs cursor-sensor mhtml-mode novice mode-local descr-text
iso-transl tabify man eieio-opt speedbar sb-image ezimage dframe ffap
gnus-fun idutils find-file erc-spelling erc-truncate mailalias bbdb-sc
supercite regi mail-hist nnir js cc-mode cc-fonts cc-guess cc-menus
cc-cmds gnus-html help-fns radix-tree url-cache css-mode smie sgml-mode
eww url-queue gnus-draft git-rebase-mode vc-annotate tramp tramp-compat
tramp-loaddefs trampver ucs-normalize jka-compr flow-fill url-http
url-auth url-gw bbdb-gui bbdb-hooks bbdb-rmail rmailsum vc-mtn vc-hg
sort gnus-cite smiley shr-color shr svg dom mm-archive gnus-bcklg
git-commit-mode log-edit term/xterm xterm gnus-async qp gnus-ml
disp-table gnus-topic nndraft nnmh nnfolder utf-7 bbdb-gnus bbdb-snarf
mail-extr bbdb-com network-stream nsm starttls gnus-agent gnus-srvr
gnus-score score-mode nnvirtual gnus-msg nntp gnus-cache gnus-registry
registry eieio-base gnus-art mm-uu mml2015 mm-view mml-smime smime dig
gnus-sum gnus-group gnus-undo smtpmail sendmail gnus-start gnus-cloud
nnimap nnmail mail-source tls gnutls utf7 netrc nnoo parse-time
gnus-spec gnus-int gnus-range message puny rfc822 mml mml-sec epa
derived epg mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader gnus-win conf-mode etags xref project shell
browse-url dxr mm-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util mailcap gnus nnheader
gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils
mm-util mail-prsvr bug-reference copyright find-dired dabbrev misearch
multi-isearch smerge-mode log-view pcvs-util vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs add-log vc-git diff-mode rust-mode elec-pair
flyspell ispell diminish appt diary-lib diary-loaddefs cal-menu calendar
cal-loaddefs which-func imenu edmacro kmacro projectile grep compile
ibuf-ext ibuffer ibuffer-loaddefs autorevert filenotify desktop frameset
cus-start cus-load erc-notify erc-desktop-notifications erc-services
notifications dbus xml erc-list erc-menu erc-join erc-ring erc-networks
erc-pcomplete pcomplete erc-track erc-match erc-netsplit erc-hl-nicks
easy-mmode color erc-button erc-fill erc-stamp wid-edit erc-goodies erc
erc-backend erc-compat format-spec thingatpt pp dired-aux dired-x dired
dired-loaddefs warnings advice vc-dir ewoc vc vc-dispatcher flycheck
cl-extra json map find-func help-mode rx subr-x dash cc-styles cc-align
cc-engine cc-vars cc-defs bbdb cl timezone ange-ftp comint ansi-color
ring server savehist finder-inf bbdb-autoloads dwarf-mode-autoloads
lisppaste-autoloads pydoc-info-autoloads info-look weblogger-autoloads
info package easymenu epg-config url-handlers url-parse auth-source
cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars
seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib time-date
mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame cl-generic 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 charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote dbusbind inotify
dynamic-setting system-font-setting font-render-setting move-toolbar gtk
x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 5900075 3437281)
 (symbols 48 136519 43)
 (miscs 40 38707 31985)
 (strings 32 1568492 177118)
 (string-bytes 1 69419422)
 (vectors 16 226053)
 (vector-slots 8 5530804 389348)
 (floats 8 915 3920)
 (intervals 56 475093 29216)
 (buffers 992 647))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#28448; Package emacs. (Fri, 15 Sep 2017 15:44:02 GMT) Full text and rfc822 format available.

Message #8 received at 28448 <at> debbugs.gnu.org (full text, mbox):

From: Hariharan  <hariharanrangasamy <at> gmail.com>
To: Tom Tromey <tom <at> tromey.com>
Cc: 28448 <at> debbugs.gnu.org
Subject: Re: bug#28448: 26.0.50; js-mode missing some functions for imenu
Date: Fri, 15 Sep 2017 21:13:27 +0530
Tom Tromey <tom <at> tromey.com> writes:

I'm not sure whether this is any useful information but
with the below code, M-x imenu gives *Rescan* and StyleSheetEditor.

Selecting StyleSheetEditor, shows list of items StyleSheetEditor,
updateLinkedStyleSheet and checkLinkedFileForChanges. And selecting
anyof the items takes me to the corresponding functions.

I think imenu shows entries based on the function keyword?

> Consider this pared-down but relatively normal js file:
>
> ================================================================
> function StyleSheetEditor(styleSheet, win, file, isNew, walker, highlighter) {
> }
> StyleSheetEditor.prototype = {
>     get unsaved() {
>     },
>     updateLinkedStyleSheet: function () {
>     },
>     checkLinkedFileForChanges: function () {
> 	this.unsaved().updateLinkedStyleSheet();
>     },
> }
> ================================================================
>
> Here it would be great to have imenu entries for "unsaved" and
> "updateLinkedStyleSheet".
>
> Currently js-mode doesn't find these.
>
> Tom
>
>
>
>
> In GNU Emacs 26.0.50 (build 8, x86_64-pc-linux-gnu, GTK+ Version 3.22.17)
>  of 2017-08-28 built on pokyo
> Repository revision: 433cf5b2046f9b0a9f500dae1d072cc53f2a3c10
> Windowing system distributor 'Fedora Project', version 11.0.11903000
> System Description:	Fedora release 25 (Twenty Five)
>
> Recent messages:
> funcall-interactively: End of buffer
> Saving file /tmp/r.js...
> Wrote /tmp/r.js
> No more miss-spelled word!
> C-x C-g is undefined
> imenu-find-default: Wrong type argument: stringp, nil
> Undo! [2 times]
> imenu-find-default: Wrong type argument: stringp, nil
> Saving file /tmp/r.js...
> Wrote /tmp/r.js
>
> Configured using:
>  'configure --prefix=/home/tromey/Emacs/install --with-modules'
>
> Configured features:
> XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY
> LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
> GTK3 X11 MODULES LIBSYSTEMD
>
> Important settings:
>   value of $LANG: en_US.UTF-8
>   value of $XMODIFIERS: @im=ibus
>   locale-coding-system: utf-8-unix
>
> Major mode: JS
>
> Minor modes in effect:
>   erc-spelling-mode: t
>   erc-truncate-mode: t
>   shell-dirtrack-mode: t
>   diff-auto-refine-mode: t
>   flyspell-mode: t
>   which-function-mode: t
>   projectile-global-mode: t
>   projectile-mode: t
>   erc-notify-mode: t
>   erc-notifications-mode: t
>   erc-services-mode: t
>   erc-list-mode: t
>   erc-menu-mode: t
>   erc-autojoin-mode: t
>   erc-ring-mode: t
>   erc-networks-mode: t
>   erc-pcomplete-mode: t
>   erc-track-mode: t
>   erc-track-minor-mode: t
>   erc-match-mode: t
>   erc-netsplit-mode: t
>   erc-hl-nicks-mode: t
>   erc-button-mode: t
>   erc-fill-mode: t
>   erc-stamp-mode: t
>   erc-irccontrols-mode: t
>   erc-noncommands-mode: t
>   erc-move-to-prompt-mode: t
>   erc-readonly-mode: t
>   flycheck-mode: t
>   savehist-mode: t
>   cl-old-struct-compat-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>   column-number-mode: t
>   line-number-mode: t
>   auto-fill-function: js-do-auto-fill
>   transient-mark-mode: t
>
> Load-path shadows:
> /home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Emacs/install/share/emacs/26.0.50/lisp/play/bubbles
>
> Features:
> (shadow emacsbug thai-util thai-word gud python tramp-sh nnregistry
> sh-script executable make-mode ix grapnel footnote cl-print debug
> url-about url-dav url-dired webjump org-rmail org-mhe org-irc org-info
> org-gnus org-docview doc-view image-mode org-bibtex bibtex org-bbdb
> org-w3m org-element avl-tree generator org org-macro org-footnote
> org-pcomplete org-list org-faces org-entities noutline outline
> org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table
> ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs
> org-loaddefs cursor-sensor mhtml-mode novice mode-local descr-text
> iso-transl tabify man eieio-opt speedbar sb-image ezimage dframe ffap
> gnus-fun idutils find-file erc-spelling erc-truncate mailalias bbdb-sc
> supercite regi mail-hist nnir js cc-mode cc-fonts cc-guess cc-menus
> cc-cmds gnus-html help-fns radix-tree url-cache css-mode smie sgml-mode
> eww url-queue gnus-draft git-rebase-mode vc-annotate tramp tramp-compat
> tramp-loaddefs trampver ucs-normalize jka-compr flow-fill url-http
> url-auth url-gw bbdb-gui bbdb-hooks bbdb-rmail rmailsum vc-mtn vc-hg
> sort gnus-cite smiley shr-color shr svg dom mm-archive gnus-bcklg
> git-commit-mode log-edit term/xterm xterm gnus-async qp gnus-ml
> disp-table gnus-topic nndraft nnmh nnfolder utf-7 bbdb-gnus bbdb-snarf
> mail-extr bbdb-com network-stream nsm starttls gnus-agent gnus-srvr
> gnus-score score-mode nnvirtual gnus-msg nntp gnus-cache gnus-registry
> registry eieio-base gnus-art mm-uu mml2015 mm-view mml-smime smime dig
> gnus-sum gnus-group gnus-undo smtpmail sendmail gnus-start gnus-cloud
> nnimap nnmail mail-source tls gnutls utf7 netrc nnoo parse-time
> gnus-spec gnus-int gnus-range message puny rfc822 mml mml-sec epa
> derived epg mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
> gmm-utils mailheader gnus-win conf-mode etags xref project shell
> browse-url dxr mm-url url url-proxy url-privacy url-expand url-methods
> url-history url-cookie url-domsuf url-util mailcap gnus nnheader
> gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils
> mm-util mail-prsvr bug-reference copyright find-dired dabbrev misearch
> multi-isearch smerge-mode log-view pcvs-util vc-bzr vc-src vc-sccs
> vc-svn vc-cvs vc-rcs add-log vc-git diff-mode rust-mode elec-pair
> flyspell ispell diminish appt diary-lib diary-loaddefs cal-menu calendar
> cal-loaddefs which-func imenu edmacro kmacro projectile grep compile
> ibuf-ext ibuffer ibuffer-loaddefs autorevert filenotify desktop frameset
> cus-start cus-load erc-notify erc-desktop-notifications erc-services
> notifications dbus xml erc-list erc-menu erc-join erc-ring erc-networks
> erc-pcomplete pcomplete erc-track erc-match erc-netsplit erc-hl-nicks
> easy-mmode color erc-button erc-fill erc-stamp wid-edit erc-goodies erc
> erc-backend erc-compat format-spec thingatpt pp dired-aux dired-x dired
> dired-loaddefs warnings advice vc-dir ewoc vc vc-dispatcher flycheck
> cl-extra json map find-func help-mode rx subr-x dash cc-styles cc-align
> cc-engine cc-vars cc-defs bbdb cl timezone ange-ftp comint ansi-color
> ring server savehist finder-inf bbdb-autoloads dwarf-mode-autoloads
> lisppaste-autoloads pydoc-info-autoloads info-look weblogger-autoloads
> info package easymenu epg-config url-handlers url-parse auth-source
> cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars
> seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib time-date
> mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
> lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
> dnd fontset image regexp-opt fringe tabulated-list replace newcomment
> text-mode elisp-mode lisp-mode prog-mode register page menu-bar
> rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
> syntax facemenu font-core term/tty-colors frame cl-generic 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 charscript charprop
> case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
> cl-preloaded nadvice loaddefs button faces cus-face macroexp files
> text-properties overlay sha1 md5 base64 format env code-pages mule
> custom widget hashtable-print-readable backquote dbusbind inotify
> dynamic-setting system-font-setting font-render-setting move-toolbar gtk
> x-toolkit x multi-tty make-network-process emacs)
>
> Memory information:
> ((conses 16 5900075 3437281)
>  (symbols 48 136519 43)
>  (miscs 40 38707 31985)
>  (strings 32 1568492 177118)
>  (string-bytes 1 69419422)
>  (vectors 16 226053)
>  (vector-slots 8 5530804 389348)
>  (floats 8 915 3920)
>  (intervals 56 475093 29216)
>  (buffers 992 647))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#28448; Package emacs. (Fri, 05 Feb 2021 11:20:02 GMT) Full text and rfc822 format available.

Message #11 received at 28448 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Tom Tromey <tom <at> tromey.com>
Cc: 28448 <at> debbugs.gnu.org
Subject: Re: bug#28448: 26.0.50; js-mode missing some functions for imenu
Date: Fri, 05 Feb 2021 12:19:26 +0100
[Message part 1 (text/plain, inline)]
Tom Tromey <tom <at> tromey.com> writes:

> Consider this pared-down but relatively normal js file:
>
> ================================================================
> function StyleSheetEditor(styleSheet, win, file, isNew, walker, highlighter) {
> }
> StyleSheetEditor.prototype = {
>     get unsaved() {
>     },
>     updateLinkedStyleSheet: function () {
>     },
>     checkLinkedFileForChanges: function () {
> 	this.unsaved().updateLinkedStyleSheet();
>     },
> }
> ================================================================
>
> Here it would be great to have imenu entries for "unsaved" and
> "updateLinkedStyleSheet".
>
> Currently js-mode doesn't find these.

I tried this in Emacs 26.1 (and on the trunk), and

M-x imenu RET StyleSheetEditor RET TAB

gave me

[Message part 2 (image/png, inline)]
[Message part 3 (text/plain, inline)]
So the only thing it didn't find was the "unsaved"?  So I guess the
problem here is that js--imenu-create-index doesn't know the "get" thing
in JS prototypes?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#28448; Package emacs. (Fri, 05 Feb 2021 13:26:01 GMT) Full text and rfc822 format available.

Message #14 received at 28448 <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Lars Ingebrigtsen <larsi <at> gnus.org>, Tom Tromey <tom <at> tromey.com>
Cc: 28448 <at> debbugs.gnu.org
Subject: Re: bug#28448: 26.0.50; js-mode missing some functions for imenu
Date: Fri, 5 Feb 2021 15:25:16 +0200
On 05.02.2021 13:19, Lars Ingebrigtsen wrote:
> Tom Tromey <tom <at> tromey.com> writes:
> 
>> Consider this pared-down but relatively normal js file:
>>
>> ================================================================
>> function StyleSheetEditor(styleSheet, win, file, isNew, walker, highlighter) {
>> }
>> StyleSheetEditor.prototype = {
>>      get unsaved() {
>>      },
>>      updateLinkedStyleSheet: function () {
>>      },
>>      checkLinkedFileForChanges: function () {
>> 	this.unsaved().updateLinkedStyleSheet();
>>      },
>> }
>> ================================================================
>>
>> Here it would be great to have imenu entries for "unsaved" and
>> "updateLinkedStyleSheet".
>>
>> Currently js-mode doesn't find these.
> 
> I tried this in Emacs 26.1 (and on the trunk), and
> 
> M-x imenu RET StyleSheetEditor RET TAB
> 
> gave me
> 
> 
> 
> So the only thing it didn't find was the "unsaved"?  So I guess the
> problem here is that js--imenu-create-index doesn't know the "get" thing
> in JS prototypes?

Also see bug#41676 which mentions more modern constructs which js-mode's 
imenu doesn't handle.




Forcibly Merged 28448 41676. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sun, 08 May 2022 12:39:02 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 44 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.