Subject: Re: bug#28448: 26.0.50; js-mode missing some functions for imenu

From: Hariharan <[email-masked]>
Date: Fri, 15 Sep 2017 21:13:27 +0530

Tom Tromey <[email-masked]> 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))