unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#72402: 28.2; Etags does not parse correctly Java source code
@ 2024-07-31 15:27 Daniel Głowacki
  2024-08-01  8:16 ` Eli Zaretskii
  0 siblings, 1 reply; 5+ messages in thread
From: Daniel Głowacki @ 2024-07-31 15:27 UTC (permalink / raw)
  To: 72402


Hello,

I have found a bug while using 'etags' program for parsing Java files.
Some of Java files are not parsed as they should be. Important parts
of the code is missing.

Some example below:
===================
JAVA VERSION: OpendJDK version 22
SOURCE FILE: $(JAVA_HOME)/lib/src/java.base/java/util/HashMap.java

...

public class HashMap<K,V> extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable {

    @java.io.Serial
    private static final long serialVersionUID = 362498820763181265L;

...

'TAGS' FILE CREATED BY 'ETAGS':

...

src/java.base/java/util/HashMap.java,2267
    implements Map<\x7fMap%1140,6932
    implements Map<K,V>, Cloneable,\x7f140,6932
    final class KeySet \x7f988,39333
        public final int size(\x7f989,39381
        public final void clear(\x7f990,39446
        public final Iterator<K> iterator(\x7f991,39520
        public final boolean contains(\x7f992,39598
        public final boolean remove(\x7f993,39673
        public final Spliterator<K> spliterator(\x7f996,39807
        public Object[] toArray(\x7f1000,39938
        public <T> T[] toArray(\x7f1004,40035
        public final void forEach(\x7f1008,40135
    final class Values \x7f1048,41686
        public final int size(\x7f1049,41741
        public final void clear(\x7f1050,41806
        public final Iterator<V> iterator(\x7f1051,41880
        public final boolean contains(\x7f1052,41960
        public final Spliterator<V> spliterator(\x7f1053,42037
        public Object[] toArray(\x7f1057,42170
        public <T> T[] toArray(\x7f1061,42269
        public final void forEach(\x7f1065,42371
    final class EntrySet \x7f1102,43948
        public final int size(\x7f1103,44011
        public final void clear(\x7f1104,44076
        public final Iterator<Map.Entry<K,V>> iterator(\x7f1105,44150
        public final boolean contains(\x7f1108,44259
        public final boolean remove(\x7f1115,44546
        public final Spliterator<Map.Entry<K,V>> spliterator(\x7f1123,44858
        public final void forEach(\x7f1126,45003
    private static final class UnsafeHolder \x7f1567,60383
        private UnsafeHolder(\x7f1568,60429
        static void putLoadFactor(\x7f1573,60725
    abstract class HashIterator \x7f1581,60945
        Node<\x7fNode%11582,60979
        Node<K,V> next;\x7f1582,60979
        Node<\x7fNode%11583,61034
        Node<K,V> current;\x7f1583,61034
        int expectedModCount;\x7f1584,61082
        int index;\x7f1585,61130
        HashIterator(\x7f1587,61178
        public final boolean hasNext(\x7f1597,61508
        final Node<\x7fNode%11601,61593
        final Node<K,V> nextNode(\x7f1601,61593
        public final void remove(\x7f1614,62079
    final class KeyIterator \x7f1626,62481
        public final K next(\x7f1628,62563
    final class ValueIterator \x7f1631,62627
        public final V next(\x7f1633,62711
    final class EntryIterator \x7f1636,62777
        public final Map.Entry<\x7fEntry%11638,62874
        public final Map.Entry<K,V> next(\x7f1638,62874

....

The class declaration of HashMap is missing. It works for other files,
e.g. ArrayJava.java

...

public class ArrayList<\x7fArrayList%1110,5454
    private static final long serialVersionUID \x7f114,5600
    private static final int DEFAULT_CAPACITY \x7f119,5721
    private static final Object[] EMPTY_ELEMENTDATA \x7f124,5851
    private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA \x7f131,6115
    transient Object[] elementData;\x7f139,6514
    private int size;\x7f146,6707
    public ArrayList(\x7f155,6988
    public ArrayList(\x7f169,7469
    public ArrayList(\x7f181,7889
    public void trimToSize(\x7f200,8539
    public void ensureCapacity(\x7f216,9045

...

Best regards,
Daniel Głowacki


In GNU Emacs 28.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.16.0)
 of 2024-06-25, modified by Debian built on x86-conova-01
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux 12 (bookworm)

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/28.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils
 --with-native-compilation --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/28.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils
 --with-native-compilation --with-cairo --with-x=yes
 --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
 -ffile-prefix-map=/build/reproducible-path/emacs-28.2+1=. -fstack-protector-strong
 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES
NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM GTK3 ZLIB

Important settings:
  value of $LANG: pl_PL.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Dired by name

Minor modes in effect:
  shell-dirtrack-mode: t
  auto-insert-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t

Load-path shadows:
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-section hides /usr/share/emacs/site-lisp/elpa/magit-section-3.3.0/magit-section
/usr/share/emacs/site-lisp/elpa/ace-window-0.10.0/ace-window-pkg hides /usr/share/emacs/site-lisp/elpa-src/ace-window-0.10.0/ace-window-pkg
/usr/share/emacs/site-lisp/elpa/ace-window-0.10.0/ace-window-autoloads hides /usr/share/emacs/site-lisp/elpa-src/ace-window-0.10.0/ace-window-autoloads
/usr/share/emacs/site-lisp/elpa/ace-window-0.10.0/ace-window hides /usr/share/emacs/site-lisp/elpa-src/ace-window-0.10.0/ace-window
/usr/share/emacs/site-lisp/elpa/avy-0.5.0/avy-pkg hides /usr/share/emacs/site-lisp/elpa-src/avy-0.5.0/avy-pkg
/usr/share/emacs/site-lisp/elpa/avy-0.5.0/avy hides /usr/share/emacs/site-lisp/elpa-src/avy-0.5.0/avy
/usr/share/emacs/site-lisp/elpa/avy-0.5.0/avy-autoloads hides /usr/share/emacs/site-lisp/elpa-src/avy-0.5.0/avy-autoloads
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui-info hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui-info
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui-button hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui-button
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui-utils hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui-utils
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui-pkg hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui-pkg
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui-autoloads hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui-autoloads
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui-list hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui-list
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui-core hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui-core
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui-entry hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui-entry
/usr/share/emacs/site-lisp/elpa/bui-1.2.1/bui-history hides /usr/share/emacs/site-lisp/elpa-src/bui-1.2.1/bui-history
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-pwsh hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-pwsh
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dapui hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dapui
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-edge hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-edge
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-chrome hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-chrome
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-lldb hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-lldb
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-netcore hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-netcore
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-cpptools hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-cpptools
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-mode-autoloads
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-hydra hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-hydra
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-gdb-lldb hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-gdb-lldb
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-mode-pkg
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-python hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-python
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-launch hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-launch
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-mode hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-mode
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-node hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-node
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-utils hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-utils
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-elixir hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-elixir
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-codelldb hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-codelldb
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-ui hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-ui
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-firefox hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-firefox
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-mouse hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-mouse
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-overlays hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-overlays
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-go hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-go
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-ruby hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-ruby
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-php hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-php
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-erlang hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-erlang
/usr/share/emacs/site-lisp/elpa/dap-mode-0.7/dap-variables hides /usr/share/emacs/site-lisp/elpa-src/dap-mode-0.7/dap-variables
/usr/share/emacs/site-lisp/elpa/dash-2.19.1/dash hides /usr/share/emacs/site-lisp/elpa-src/dash-2.19.1/dash
/usr/share/emacs/site-lisp/elpa/dash-2.19.1/dash-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dash-2.19.1/dash-autoloads
/usr/share/emacs/site-lisp/elpa/dash-2.19.1/dash-pkg hides /usr/share/emacs/site-lisp/elpa-src/dash-2.19.1/dash-pkg
/usr/share/emacs/site-lisp/elpa/deferred-0.5.1/deferred-pkg hides /usr/share/emacs/site-lisp/elpa-src/deferred-0.5.1/deferred-pkg
/usr/share/emacs/site-lisp/elpa/deferred-0.5.1/deferred-autoloads hides /usr/share/emacs/site-lisp/elpa-src/deferred-0.5.1/deferred-autoloads
/usr/share/emacs/site-lisp/elpa/deferred-0.5.1/deferred hides /usr/share/emacs/site-lisp/elpa-src/deferred-0.5.1/deferred
/usr/share/emacs/site-lisp/elpa/dockerfile-mode-1.7/dockerfile-mode hides /usr/share/emacs/site-lisp/elpa-src/dockerfile-mode-1.7/dockerfile-mode
/usr/share/emacs/site-lisp/elpa/dockerfile-mode-1.7/dockerfile-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/dockerfile-mode-1.7/dockerfile-mode-pkg
/usr/share/emacs/site-lisp/elpa/dockerfile-mode-1.7/dockerfile-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dockerfile-mode-1.7/dockerfile-mode-autoloads
/usr/share/emacs/site-lisp/elpa/eglot-1.9/eglot-autoloads hides /usr/share/emacs/site-lisp/elpa-src/eglot-1.9/eglot-autoloads
/usr/share/emacs/site-lisp/elpa/eglot-1.9/eglot-pkg hides /usr/share/emacs/site-lisp/elpa-src/eglot-1.9/eglot-pkg
/usr/share/emacs/site-lisp/elpa/eglot-1.9/eglot hides /usr/share/emacs/site-lisp/elpa-src/eglot-1.9/eglot
/usr/share/emacs/site-lisp/elpa/f-0.20.0/f-pkg hides /usr/share/emacs/site-lisp/elpa-src/f-0.20.0/f-pkg
/usr/share/emacs/site-lisp/elpa/f-0.20.0/f-autoloads hides /usr/share/emacs/site-lisp/elpa-src/f-0.20.0/f-autoloads
/usr/share/emacs/site-lisp/elpa/f-0.20.0/f hides /usr/share/emacs/site-lisp/elpa-src/f-0.20.0/f
/usr/share/emacs/site-lisp/elpa/git-commit-3.3.0/git-commit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/git-commit-3.3.0/git-commit-autoloads
/usr/share/emacs/site-lisp/elpa/git-commit-3.3.0/git-commit-pkg hides /usr/share/emacs/site-lisp/elpa-src/git-commit-3.3.0/git-commit-pkg
/usr/share/emacs/site-lisp/elpa/git-commit-3.3.0/git-commit hides /usr/share/emacs/site-lisp/elpa-src/git-commit-3.3.0/git-commit
/usr/share/emacs/site-lisp/elpa/ht-2.3/ht-pkg hides /usr/share/emacs/site-lisp/elpa-src/ht-2.3/ht-pkg
/usr/share/emacs/site-lisp/elpa/ht-2.3/ht-autoloads hides /usr/share/emacs/site-lisp/elpa-src/ht-2.3/ht-autoloads
/usr/share/emacs/site-lisp/elpa/ht-2.3/ht hides /usr/share/emacs/site-lisp/elpa-src/ht-2.3/ht
/usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-examples hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-examples
/usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra
/usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-ox hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-ox
/usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-pkg hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-pkg
/usr/share/emacs/site-lisp/elpa/hydra-0.15.0/hydra-autoloads hides /usr/share/emacs/site-lisp/elpa-src/hydra-0.15.0/hydra-autoloads
/usr/share/emacs/site-lisp/elpa/lsp-java-3.0/lsp-jt hides /usr/share/emacs/site-lisp/elpa-src/lsp-java-3.0/lsp-jt
/usr/share/emacs/site-lisp/elpa/lsp-java-3.0/lsp-java-autoloads hides /usr/share/emacs/site-lisp/elpa-src/lsp-java-3.0/lsp-java-autoloads
/usr/share/emacs/site-lisp/elpa/lsp-java-3.0/dap-java hides /usr/share/emacs/site-lisp/elpa-src/lsp-java-3.0/dap-java
/usr/share/emacs/site-lisp/elpa/lsp-java-3.0/lsp-java-boot hides /usr/share/emacs/site-lisp/elpa-src/lsp-java-3.0/lsp-java-boot
/usr/share/emacs/site-lisp/elpa/lsp-java-3.0/lsp-java-pkg hides /usr/share/emacs/site-lisp/elpa-src/lsp-java-3.0/lsp-java-pkg
/usr/share/emacs/site-lisp/elpa/lsp-java-3.0/lsp-java hides /usr/share/emacs/site-lisp/elpa-src/lsp-java-3.0/lsp-java
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-nix hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-nix
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-terraform hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-terraform
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-lua hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-lua
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-semantic-tokens hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-semantic-tokens
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-kotlin hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-kotlin
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-hack hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-hack
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-lens hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-lens
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-php hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-php
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-erlang hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-erlang
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-mode hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-mode
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-haxe hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-haxe
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-eslint hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-eslint
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-headerline hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-headerline
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-dhall hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-dhall
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-diagnostics hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-diagnostics
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-r hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-r
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-pyls hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-pyls
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-angular hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-angular
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-pylsp hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-pylsp
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-crystal hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-crystal
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-csharp hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-csharp
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-verilog hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-verilog
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-modeline hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-modeline
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-mode-autoloads
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-ocaml hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-ocaml
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-steep hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-steep
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-ido hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-ido
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-clangd hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-clangd
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-dockerfile hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-dockerfile
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-sqls hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-sqls
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-rust hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-rust
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-vala hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-vala
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-solargraph hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-solargraph
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-nim hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-nim
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-protocol hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-protocol
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-ada hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-ada
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-elm hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-elm
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-cmake hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-cmake
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-fortran hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-fortran
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-svelte hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-svelte
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-markdown hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-markdown
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-vetur hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-vetur
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-completion hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-completion
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-zig hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-zig
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-d hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-d
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-go hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-go
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-prolog hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-prolog
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-gdscript hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-gdscript
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-pwsh hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-pwsh
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-iedit hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-iedit
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-sorbet hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-sorbet
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-purescript hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-purescript
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-v hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-v
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-elixir hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-elixir
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-actionscript hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-actionscript
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-beancount hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-beancount
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-racket hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-racket
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-dired hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-dired
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-yaml hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-yaml
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-vimscript hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-vimscript
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-groovy hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-groovy
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-clojure hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-clojure
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-bash hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-bash
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-json hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-json
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-mode-pkg
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-vhdl hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-vhdl
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-tex hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-tex
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-xml hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-xml
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-html hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-html
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-icons hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-icons
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-perl hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-perl
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-javascript hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-javascript
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-fsharp hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-fsharp
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-rf hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-rf
/usr/share/emacs/site-lisp/elpa/lsp-mode-8.0.0/lsp-css hides /usr/share/emacs/site-lisp/elpa-src/lsp-mode-8.0.0/lsp-css
/usr/share/emacs/site-lisp/elpa/lsp-treemacs-0.4/lsp-treemacs-autoloads hides /usr/share/emacs/site-lisp/elpa-src/lsp-treemacs-0.4/lsp-treemacs-autoloads
/usr/share/emacs/site-lisp/elpa/lsp-treemacs-0.4/lsp-treemacs-pkg hides /usr/share/emacs/site-lisp/elpa-src/lsp-treemacs-0.4/lsp-treemacs-pkg
/usr/share/emacs/site-lisp/elpa/lsp-treemacs-0.4/lsp-treemacs-themes hides /usr/share/emacs/site-lisp/elpa-src/lsp-treemacs-0.4/lsp-treemacs-themes
/usr/share/emacs/site-lisp/elpa/lsp-treemacs-0.4/lsp-treemacs hides /usr/share/emacs/site-lisp/elpa-src/lsp-treemacs-0.4/lsp-treemacs
/usr/share/emacs/site-lisp/elpa/lv-0.15.0/lv hides /usr/share/emacs/site-lisp/elpa-src/lv-0.15.0/lv
/usr/share/emacs/site-lisp/elpa/lv-0.15.0/lv-autoloads hides /usr/share/emacs/site-lisp/elpa-src/lv-0.15.0/lv-autoloads
/usr/share/emacs/site-lisp/elpa/lv-0.15.0/lv-pkg hides /usr/share/emacs/site-lisp/elpa-src/lv-0.15.0/lv-pkg
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-clone hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-clone
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-commit hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-commit
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-reset hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-reset
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-margin hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-margin
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-imenu hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-imenu
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-branch hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-branch
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-pkg hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-pkg
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-autoloads
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-notes hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-notes
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-sequence hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-sequence
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-transient hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-transient
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-push hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-push
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-core hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-core
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-reflog hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-reflog
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-submodule hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-submodule
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-fetch hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-fetch
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-log hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-log
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-extras hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-extras
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-gitignore hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-gitignore
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-merge hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-merge
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-subtree hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-subtree
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-mode hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-mode
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-apply hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-apply
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-diff hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-diff
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-worktree hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-worktree
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-obsolete hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-obsolete
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-status hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-status
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-files hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-files
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/git-rebase hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/git-rebase
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-process hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-process
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-bookmark hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-bookmark
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-utils hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-utils
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-ediff hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-ediff
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-stash hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-stash
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-autorevert hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-autorevert
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-git hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-git
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-bisect hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-bisect
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-pull hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-pull
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-wip hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-wip
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-remote hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-remote
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-section hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-section
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-tag hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-tag
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-refs hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-refs
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-repos hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-repos
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-blame hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-blame
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-patch hides /usr/share/emacs/site-lisp/elpa-src/magit-3.3.0/magit-patch
/usr/share/emacs/site-lisp/elpa/magit-section-3.3.0/magit-section-pkg hides /usr/share/emacs/site-lisp/elpa-src/magit-section-3.3.0/magit-section-pkg
/usr/share/emacs/site-lisp/elpa/magit-section-3.3.0/magit-section-autoloads hides /usr/share/emacs/site-lisp/elpa-src/magit-section-3.3.0/magit-section-autoloads
/usr/share/emacs/site-lisp/elpa/magit-3.3.0/magit-section hides /usr/share/emacs/site-lisp/elpa-src/magit-section-3.3.0/magit-section
/usr/share/emacs/site-lisp/elpa/markdown-mode-2.5/markdown-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/markdown-mode-2.5/markdown-mode-autoloads
/usr/share/emacs/site-lisp/elpa/markdown-mode-2.5/markdown-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/markdown-mode-2.5/markdown-mode-pkg
/usr/share/emacs/site-lisp/elpa/markdown-mode-2.5/markdown-mode hides /usr/share/emacs/site-lisp/elpa-src/markdown-mode-2.5/markdown-mode
/usr/share/emacs/site-lisp/elpa/pfuture-1.9/pfuture-pkg hides /usr/share/emacs/site-lisp/elpa-src/pfuture-1.9/pfuture-pkg
/usr/share/emacs/site-lisp/elpa/pfuture-1.9/pfuture-autoloads hides /usr/share/emacs/site-lisp/elpa-src/pfuture-1.9/pfuture-autoloads
/usr/share/emacs/site-lisp/elpa/pfuture-1.9/pfuture hides /usr/share/emacs/site-lisp/elpa-src/pfuture-1.9/pfuture
/usr/share/emacs/site-lisp/elpa/posframe-1.1.7/posframe hides /usr/share/emacs/site-lisp/elpa-src/posframe-1.1.7/posframe
/usr/share/emacs/site-lisp/elpa/posframe-1.1.7/posframe-autoloads hides /usr/share/emacs/site-lisp/elpa-src/posframe-1.1.7/posframe-autoloads
/usr/share/emacs/site-lisp/elpa/posframe-1.1.7/posframe-pkg hides /usr/share/emacs/site-lisp/elpa-src/posframe-1.1.7/posframe-pkg
/usr/share/emacs/site-lisp/elpa/project-0.8.1/project-pkg hides /usr/share/emacs/site-lisp/elpa-src/project-0.8.1/project-pkg
/usr/share/emacs/site-lisp/elpa/project-0.8.1/project-autoloads hides /usr/share/emacs/site-lisp/elpa-src/project-0.8.1/project-autoloads
/usr/share/emacs/site-lisp/elpa/project-0.8.1/project hides /usr/share/emacs/site-lisp/elpa-src/project-0.8.1/project
/usr/share/emacs/site-lisp/elpa/request-0.3.3/request-autoloads hides /usr/share/emacs/site-lisp/elpa-src/request-0.3.3/request-autoloads
/usr/share/emacs/site-lisp/elpa/request-0.3.3/request hides /usr/share/emacs/site-lisp/elpa-src/request-0.3.3/request
/usr/share/emacs/site-lisp/elpa/request-0.3.3/request-pkg hides /usr/share/emacs/site-lisp/elpa-src/request-0.3.3/request-pkg
/usr/share/emacs/site-lisp/elpa/request-0.3.3/request-deferred hides /usr/share/emacs/site-lisp/elpa-src/request-0.3.3/request-deferred
/usr/share/emacs/site-lisp/elpa/s-1.12.0/s-pkg hides /usr/share/emacs/site-lisp/elpa-src/s-1.12.0/s-pkg
/usr/share/emacs/site-lisp/elpa/s-1.12.0/s-autoloads hides /usr/share/emacs/site-lisp/elpa-src/s-1.12.0/s-autoloads
/usr/share/emacs/site-lisp/elpa/s-1.12.0/s hides /usr/share/emacs/site-lisp/elpa-src/s-1.12.0/s
/usr/share/emacs/site-lisp/elpa/seq-2.23/seq-24 hides /usr/share/emacs/site-lisp/elpa-src/seq-2.23/seq-24
/usr/share/emacs/site-lisp/elpa/seq-2.23/seq-25 hides /usr/share/emacs/site-lisp/elpa-src/seq-2.23/seq-25
/usr/share/emacs/site-lisp/elpa/seq-2.23/seq-autoloads hides /usr/share/emacs/site-lisp/elpa-src/seq-2.23/seq-autoloads
/usr/share/emacs/site-lisp/elpa/seq-2.23/seq hides /usr/share/emacs/site-lisp/elpa-src/seq-2.23/seq
/usr/share/emacs/site-lisp/elpa/seq-2.23/seq-pkg hides /usr/share/emacs/site-lisp/elpa-src/seq-2.23/seq-pkg
/usr/share/emacs/site-lisp/elpa/spinner-1.7.4/spinner-autoloads hides /usr/share/emacs/site-lisp/elpa-src/spinner-1.7.4/spinner-autoloads
/usr/share/emacs/site-lisp/elpa/spinner-1.7.4/spinner-pkg hides /usr/share/emacs/site-lisp/elpa-src/spinner-1.7.4/spinner-pkg
/usr/share/emacs/site-lisp/elpa/spinner-1.7.4/spinner hides /usr/share/emacs/site-lisp/elpa-src/spinner-1.7.4/spinner
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-macros hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-macros
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-faces hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-faces
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-visuals hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-visuals
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-workspaces hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-workspaces
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-diagnostics hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-diagnostics
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-tags hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-tags
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-themes hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-themes
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-persistence hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-persistence
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-tag-follow-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-tag-follow-mode
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-pkg hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-pkg
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-mouse-interface hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-mouse-interface
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-follow-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-follow-mode
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-interface hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-interface
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-mode
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-extensions hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-extensions
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-filewatch-mode hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-filewatch-mode
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-fringe-indicator hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-fringe-indicator
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-rendering hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-rendering
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-async hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-async
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-core-utils hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-core-utils
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-customization hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-customization
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-compatibility hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-compatibility
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-icons-dired hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-icons-dired
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-dom hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-dom
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-autoloads hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-autoloads
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-scope hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-scope
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-icons hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-icons
/usr/share/emacs/site-lisp/elpa/treemacs-2.8/treemacs-bookmarks hides /usr/share/emacs/site-lisp/elpa-src/treemacs-2.8/treemacs-bookmarks
/usr/share/emacs/site-lisp/elpa/with-editor-3.0.5/with-editor hides /usr/share/emacs/site-lisp/elpa-src/with-editor-3.0.5/with-editor
/usr/share/emacs/site-lisp/elpa/with-editor-3.0.5/with-editor-pkg hides /usr/share/emacs/site-lisp/elpa-src/with-editor-3.0.5/with-editor-pkg
/usr/share/emacs/site-lisp/elpa/with-editor-3.0.5/with-editor-autoloads hides /usr/share/emacs/site-lisp/elpa-src/with-editor-3.0.5/with-editor-autoloads
/usr/share/emacs/site-lisp/elpa/xref-1.6.0/xref-pkg hides /usr/share/emacs/site-lisp/elpa-src/xref-1.6.0/xref-pkg
/usr/share/emacs/site-lisp/elpa/xref-1.6.0/xref-autoloads hides /usr/share/emacs/site-lisp/elpa-src/xref-1.6.0/xref-autoloads
/usr/share/emacs/site-lisp/elpa/xref-1.6.0/xref hides /usr/share/emacs/site-lisp/elpa-src/xref-1.6.0/xref
/usr/share/emacs/site-lisp/elpa/xref-1.6.0/xref hides /usr/share/emacs/28.2/lisp/progmodes/xref
/usr/share/emacs/site-lisp/elpa/project-0.8.1/project hides /usr/share/emacs/28.2/lisp/progmodes/project
/usr/share/emacs/site-lisp/elpa/seq-2.23/seq hides /usr/share/emacs/28.2/lisp/emacs-lisp/seq

Features:
(shadow mail-extr emacsbug message puny rfc822 mml mml-sec epa derived
epg rfc6068 epg-config gnus-util rmail rmail-loaddefs mm-decode
mm-bodies mm-encode mailabbrev gmm-utils mailheader sendmail mail-utils
tabify imenu man term disp-table ehelp find-dired ffap autoload checkdoc
lisp-mnt mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr flymake-proc flymake dabbrev time-date pcmpl-unix pcmpl-gnu
facemenu two-column shell pcomplete sort macros apropos files-x
semantic/symref/grep grep compile comint ansi-color semantic/symref
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-svn
vc-cvs vc-rcs vc misearch multi-isearch locate comp comp-cstr warnings
rx cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs rmc cl-print debug backtrace pulse color
jka-compr thingatpt eieio-opt cl-extra speedbar ezimage dframe find-func
shortdoc text-property-search help-fns radix-tree help-mode vc-git
diff-mode easy-mmode vc-dispatcher etags fileloop generator xref project
ring dired-aux dired dired-loaddefs edmacro kmacro cus-edit pp cus-start
cus-load wid-edit autoinsert display-line-numbers finder-inf package
browse-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json subr-x map url-vars seq seq-25 byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib iso-transl tooltip eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode 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 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 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 emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice
button loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit x multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 604022 117681)
 (symbols 48 22813 4)
 (strings 32 277881 206990)
 (string-bytes 1 9562408)
 (vectors 16 40922)
 (vector-slots 8 908532 37737)
 (floats 8 188 277)
 (intervals 56 12579 1250)
 (buffers 992 49))





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

* bug#72402: 28.2; Etags does not parse correctly Java source code
  2024-07-31 15:27 bug#72402: 28.2; Etags does not parse correctly Java source code Daniel Głowacki
@ 2024-08-01  8:16 ` Eli Zaretskii
       [not found]   ` <875xsirir2.fsf@hpg6>
  0 siblings, 1 reply; 5+ messages in thread
From: Eli Zaretskii @ 2024-08-01  8:16 UTC (permalink / raw)
  To: Daniel Głowacki; +Cc: 72402

> From: Daniel Głowacki <dglowacki4@gmail.com>
> Date: Wed, 31 Jul 2024 17:27:33 +0200
> 
> I have found a bug while using 'etags' program for parsing Java files.
> Some of Java files are not parsed as they should be. Important parts
> of the code is missing.
> 
> Some example below:
> ===================
> JAVA VERSION: OpendJDK version 22
> SOURCE FILE: $(JAVA_HOME)/lib/src/java.base/java/util/HashMap.java
> 
> ...
> 
> public class HashMap<K,V> extends AbstractMap<K,V>
>     implements Map<K,V>, Cloneable, Serializable {
> 
>     @java.io.Serial
>     private static final long serialVersionUID = 362498820763181265L;
> 
> ...
> 
> 'TAGS' FILE CREATED BY 'ETAGS':
> 
> ...
> 
> src/java.base/java/util/HashMap.java,2267
>     implements Map<\x7fMap%1140,6932
>     implements Map<K,V>, Cloneable,\x7f140,6932
>     final class KeySet \x7f988,39333
>         public final int size(\x7f989,39381
>         public final void clear(\x7f990,39446
>         public final Iterator<K> iterator(\x7f991,39520
>         public final boolean contains(\x7f992,39598
>         public final boolean remove(\x7f993,39673
>         public final Spliterator<K> spliterator(\x7f996,39807
>         public Object[] toArray(\x7f1000,39938
>         public <T> T[] toArray(\x7f1004,40035
>         public final void forEach(\x7f1008,40135
>     final class Values \x7f1048,41686
>         public final int size(\x7f1049,41741
>         public final void clear(\x7f1050,41806
>         public final Iterator<V> iterator(\x7f1051,41880
>         public final boolean contains(\x7f1052,41960
>         public final Spliterator<V> spliterator(\x7f1053,42037
>         public Object[] toArray(\x7f1057,42170
>         public <T> T[] toArray(\x7f1061,42269
>         public final void forEach(\x7f1065,42371
>     final class EntrySet \x7f1102,43948
>         public final int size(\x7f1103,44011
>         public final void clear(\x7f1104,44076
>         public final Iterator<Map.Entry<K,V>> iterator(\x7f1105,44150
>         public final boolean contains(\x7f1108,44259
>         public final boolean remove(\x7f1115,44546
>         public final Spliterator<Map.Entry<K,V>> spliterator(\x7f1123,44858
>         public final void forEach(\x7f1126,45003
>     private static final class UnsafeHolder \x7f1567,60383
>         private UnsafeHolder(\x7f1568,60429
>         static void putLoadFactor(\x7f1573,60725
>     abstract class HashIterator \x7f1581,60945
>         Node<\x7fNode%11582,60979
>         Node<K,V> next;\x7f1582,60979
>         Node<\x7fNode%11583,61034
>         Node<K,V> current;\x7f1583,61034
>         int expectedModCount;\x7f1584,61082
>         int index;\x7f1585,61130
>         HashIterator(\x7f1587,61178
>         public final boolean hasNext(\x7f1597,61508
>         final Node<\x7fNode%11601,61593
>         final Node<K,V> nextNode(\x7f1601,61593
>         public final void remove(\x7f1614,62079
>     final class KeyIterator \x7f1626,62481
>         public final K next(\x7f1628,62563
>     final class ValueIterator \x7f1631,62627
>         public final V next(\x7f1633,62711
>     final class EntryIterator \x7f1636,62777
>         public final Map.Entry<\x7fEntry%11638,62874
>         public final Map.Entry<K,V> next(\x7f1638,62874
> 
> ....
> 
> The class declaration of HashMap is missing. It works for other files,
> e.g. ArrayJava.java

Hmm... "etags --help" doesn't seem to indicate that classes are
tagged:

  etags --help --lang=c --lang=c++ --lang=java
  In C code, any C function or typedef is a tag, and so are
  definitions of 'struct', 'union' and 'enum'.  '#define' macro
  definitions and 'enum' constants are tags unless you specify
  '--no-defines'.  Global variables are tags unless you specify
  '--no-globals' and so are struct members unless you specify
  '--no-members'.  Use of '--no-globals', '--no-defines' and
  '--no-members' can make the tags table file much smaller.
  You can tag function declarations and external variables by
  using '--declarations'.

  In C++ code, all the tag constructs of C code are tagged.  (Use
  --help --lang=c --lang=c++ for full help.)
  In addition to C tags, member functions are also recognized.  Member
  variables are recognized unless you use the '--no-members' option.
  Tags for variables and functions in classes are named 'CLASS::VARIABLE'
  and 'CLASS::FUNCTION'.  'operator' definitions have tag names like
  'operator+'.

  In Java code, all the tags constructs of C and C++ code are
  tagged.  (Use --help --lang=c --lang=c++ --lang=java for full help.)

It says nothing about classes, only about class members?

Can you post a Java file which has more-or-less complete class
declarations, including the problematic one, and where some classes
are tagged while others aren't?  I'd like to try to figure out why
some are tagged, but not others, and it's hard without an example.
Please post the minimal example, to make stepping through the code
easier.

Thanks.





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

* bug#72402: 28.2; Etags does not parse correctly Java source code
       [not found]   ` <875xsirir2.fsf@hpg6>
@ 2024-08-18  9:06     ` Eli Zaretskii
  2024-08-19 21:21       ` Daniel Głowacki
  0 siblings, 1 reply; 5+ messages in thread
From: Eli Zaretskii @ 2024-08-18  9:06 UTC (permalink / raw)
  To: Daniel Głowacki; +Cc: 72402

[Please use Reply All to reply, to keep the bug tracker CC'ed.]

> From: Daniel Głowacki <dglowacki4@gmail.com>
> Date: Fri, 02 Aug 2024 18:29:05 +0200
> 
> Please take a look at the attachment.
> These are two Java classes from the same 'java.util' package and generated TAGS file.
> 
> ArrayList.java is parsed with 'class' keyword, however the 
> HashMap.java does not have it.
> 
> This is only one example. I don't know how it works with a new Java
> keywords.

Thanks.  The problem was that etags became confused by the comma
inside Java class parameters, as in

  public class HashMap<K,V> extends AbstractMap<K,V>

I fixed that.  While at that, I saw that @SuppressWarnings is also not
supported, and causes the qualified identifier to be skipped, so I
fixed that as well.  The patch for both these improvements is below,
in case you want to apply it locally; it is now installed on the
master branch of the Emacs Git repository (which will eventually
become Emacs 31).

diff --git a/lib-src/etags.c b/lib-src/etags.c
index edadbc2..4684ca8 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -2633,6 +2633,7 @@ DEFUN,		0,			st_C_gnumacro
 ENTRY,		0,			st_C_gnumacro
 PSEUDO,		0,			st_C_gnumacro
 ENUM_BF,	0,			st_C_enum_bf
+@SuppressWarnings,	(C_JAVA & ~C_PLPL),	st_C_attribute
 # These are defined inside C functions, so currently they are not met.
 # EXFUN used in glibc, DEFVAR_* in emacs.
 #EXFUN,		0,			st_C_gnumacro
@@ -2644,44 +2645,44 @@ DEFUN,		0,			st_C_gnumacro
  - make in_word_set static and not inline
  - remove any 'register' qualifications from variable decls. */
 /*%<*/
-/* C code produced by gperf version 3.0.1 */
-/* Command-line: gperf -m 5 */
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: gperf -m 5 gperf.inp  */
 /* Computed positions: -k'2-3' */
 
 struct C_stab_entry { const char *name; int c_ext; enum sym_type type; };
-/* maximum key range = 34, duplicates = 0 */
+/* maximum key range = 36, duplicates = 0 */
 
 static int
 hash (const char *str, int len)
 {
   static char const asso_values[] =
     {
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36,  3,
-      27, 36, 36, 36, 36, 36, 36, 36, 26, 36,
-      36, 36, 36, 25,  0,  0, 36, 36, 36,  0,
-      36, 36, 36, 36, 36,  1, 36, 16, 36,  6,
-      23,  0,  0, 36, 22,  0, 36, 36,  5,  0,
-       0, 15,  1, 36,  6, 36,  8, 19, 36, 16,
-       4,  5, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-      36, 36, 36, 36, 36, 36
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 29,
+       3, 38, 38, 38, 38, 38, 38, 38, 23, 38,
+      38, 38, 38,  0,  5,  4, 38, 38, 38, 24,
+      38, 38, 38, 38, 38,  1, 38, 16, 38,  6,
+      23,  0,  0, 38, 22,  0, 38, 38,  5,  0,
+       0, 15,  1, 38,  6, 38,  8, 19, 38, 16,
+       4,  5, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+      38, 38, 38, 38, 38, 38
     };
   int hval = len;
 
@@ -2702,18 +2703,18 @@ in_word_set (const char *str, ptrdiff_t len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 34,
+      TOTAL_KEYWORDS = 35,
       MIN_WORD_LENGTH = 2,
-      MAX_WORD_LENGTH = 15,
+      MAX_WORD_LENGTH = 17,
       MIN_HASH_VALUE = 2,
-      MAX_HASH_VALUE = 35
+      MAX_HASH_VALUE = 37
     };
 
   static struct C_stab_entry wordlist[] =
     {
       {""}, {""},
       {"if",		0,			st_C_ignore},
-      {"GTY",           0,                      st_C_attribute},
+      {""},
       {"@end",		0,			st_C_objend},
       {"union",		0,			st_C_struct},
       {"define",		0,			st_C_define},
@@ -2741,10 +2742,12 @@ in_word_set (const char *str, ptrdiff_t len)
       {"undef",		0,			st_C_define},
       {"package",	(C_JAVA & ~C_PLPL),	st_C_ignore},
       {"__attribute__",	0,			st_C_attribute},
-      {"ENTRY",		0,			st_C_gnumacro},
       {"SYSCALL",	0,			st_C_gnumacro},
+      {"GTY",            0,                      st_C_attribute},
+      {"ENTRY",		0,			st_C_gnumacro},
       {"ENUM_BF",	0,			st_C_enum_bf},
       {"PSEUDO",		0,			st_C_gnumacro},
+      {"@SuppressWarnings",	(C_JAVA & ~C_PLPL),	st_C_attribute},
       {"DEFUN",		0,			st_C_gnumacro}
     };
 
@@ -3012,7 +3015,6 @@ consider_token (char *str,	      /* IN: token pointer */
   static ptrdiff_t structbracelev;
   static enum sym_type toktype;
 
-
   toktype = C_symtype (str, len, *c_extp);
 
   /*
@@ -4016,7 +4018,9 @@ C_entries (int c_ext,		/* extension of C */
 	    default:
 	      fvdef = fvnone;
 	    }
-	  if (structdef == stagseen)
+	  if (structdef == stagseen
+	      /* class Foo<K,V,T>...  */
+	      && !(cjava && templatelev > 0))
 	    structdef = snone;
 	  break;
 	case ']':





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

* bug#72402: 28.2; Etags does not parse correctly Java source code
  2024-08-18  9:06     ` Eli Zaretskii
@ 2024-08-19 21:21       ` Daniel Głowacki
  2024-08-29 11:30         ` Eli Zaretskii
  0 siblings, 1 reply; 5+ messages in thread
From: Daniel Głowacki @ 2024-08-19 21:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 72402


Hello,

That's great news. Thank you very much for your support.

Eli Zaretskii <eliz@gnu.org> writes:

> [Please use Reply All to reply, to keep the bug tracker CC'ed.]
>
>> From: Daniel Głowacki <dglowacki4@gmail.com> Date: Fri, 02 Aug 2024
>> 18:29:05 +0200
>> 
>> Please take a look at the attachment.  These are two Java classes
>> from the same 'java.util' package and generated TAGS file.
>> 
>> ArrayList.java is parsed with 'class' keyword, however the
>> HashMap.java does not have it.
>> 
>> This is only one example. I don't know how it works with a new Java
>> keywords.
>
> Thanks.  The problem was that etags became confused by the comma
> inside Java class parameters, as in
>
>   public class HashMap<K,V> extends AbstractMap<K,V>
>
> I fixed that.  While at that, I saw that @SuppressWarnings is also not
> supported, and causes the qualified identifier to be skipped, so I
> fixed that as well.  The patch for both these improvements is below,
> in case you want to apply it locally; it is now installed on the
> master branch of the Emacs Git repository (which will eventually
> become Emacs 31).
>
> diff --git a/lib-src/etags.c b/lib-src/etags.c index edadbc2..4684ca8
> 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -2633,6 +2633,7
> @@ DEFUN, 0, st_C_gnumacro ENTRY, 0, st_C_gnumacro PSEUDO, 0,
> st_C_gnumacro ENUM_BF, 0, st_C_enum_bf +@SuppressWarnings, (C_JAVA &
> ~C_PLPL), st_C_attribute # These are defined inside C functions, so
> currently they are not met.  # EXFUN used in glibc, DEFVAR_* in emacs.
> #EXFUN, 0, st_C_gnumacro @@ -2644,44 +2645,44 @@ DEFUN, 0,
> st_C_gnumacro - make in_word_set static and not inline - remove any
> 'register' qualifications from variable decls. */ /*%<*/ -/* C code
> produced by gperf version 3.0.1 */ -/* Command-line: gperf -m 5 */ +/*
> ANSI-C code produced by gperf version 3.1 */ +/* Command-line: gperf
> -m 5 gperf.inp */ /* Computed positions: -k'2-3' */
>  
>  struct C_stab_entry { const char *name; int c_ext; enum sym_type
> type; }; -/* maximum key range = 34, duplicates = 0 */ +/* maximum key
> range = 36, duplicates = 0 */
>  
>  static int hash (const char *str, int len) { static char const
> asso_values[] = { - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36,
> 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36,
> 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36,
> 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36,
> 36, 36, 36, 36, 36, 36, 36, 36, 3, - 27, 36, 36, 36, 36, 36, 36, 36,
> 26, 36, - 36, 36, 36, 25, 0, 0, 36, 36, 36, 0, - 36, 36, 36, 36, 36,
> 1, 36, 16, 36, 6, - 23, 0, 0, 36, 22, 0, 36, 36, 5, 0, - 0, 15, 1, 36,
> 6, 36, 8, 19, 36, 16, - 4, 5, 36, 36, 36, 36, 36, 36, 36, 36, - 36,
> 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36,
> 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36,
> 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, -
> 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36,
> 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36,
> 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
> - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36,
> 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36 + 38, 38, 38, 38, 38, 38, 38,
> 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38,
> 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
> + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38,
> 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 29, + 3, 38, 38,
> 38, 38, 38, 38, 38, 23, 38, + 38, 38, 38, 0, 5, 4, 38, 38, 38, 24, +
> 38, 38, 38, 38, 38, 1, 38, 16, 38, 6, + 23, 0, 0, 38, 22, 0, 38, 38,
> 5, 0, + 0, 15, 1, 38, 6, 38, 8, 19, 38, 16, + 4, 5, 38, 38, 38, 38,
> 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38,
> 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38,
> 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38,
> 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38,
> 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38,
> 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38,
> 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, +
> 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38 };
> int hval = len;
>  
> @@ -2702,18 +2703,18 @@ in_word_set (const char *str, ptrdiff_t len) {
> enum { - TOTAL_KEYWORDS = 34, + TOTAL_KEYWORDS = 35, MIN_WORD_LENGTH =
> 2, - MAX_WORD_LENGTH = 15, + MAX_WORD_LENGTH = 17, MIN_HASH_VALUE = 2,
> - MAX_HASH_VALUE = 35 + MAX_HASH_VALUE = 37 };
>  
>    static struct C_stab_entry wordlist[] = { {""}, {""}, {"if", 0,
> st_C_ignore}, - {"GTY", 0, st_C_attribute}, + {""}, {"@end", 0,
> st_C_objend}, {"union", 0, st_C_struct}, {"define", 0, st_C_define},
> @@ -2741,10 +2742,12 @@ in_word_set (const char *str, ptrdiff_t len)
> {"undef", 0, st_C_define}, {"package", (C_JAVA & ~C_PLPL),
> st_C_ignore}, {"__attribute__", 0, st_C_attribute}, - {"ENTRY", 0,
> st_C_gnumacro}, {"SYSCALL", 0, st_C_gnumacro}, + {"GTY", 0,
> st_C_attribute}, + {"ENTRY", 0, st_C_gnumacro}, {"ENUM_BF", 0,
> st_C_enum_bf}, {"PSEUDO", 0, st_C_gnumacro}, + {"@SuppressWarnings",
> (C_JAVA & ~C_PLPL), st_C_attribute}, {"DEFUN", 0, st_C_gnumacro} };
>  
> @@ -3012,7 +3015,6 @@ consider_token (char *str, /* IN: token pointer
> */ static ptrdiff_t structbracelev; static enum sym_type toktype;
>  
> - toktype = C_symtype (str, len, *c_extp);
>  
>    /* @@ -4016,7 +4018,9 @@ C_entries (int c_ext, /* extension of C */
> default: fvdef = fvnone; } - if (structdef == stagseen) + if
> (structdef == stagseen + /* class Foo<K,V,T>...  */ + && !(cjava &&
> templatelev > 0)) structdef = snone; break; case ']':

-- 
Best regards,
Daniel Głowacki





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

* bug#72402: 28.2; Etags does not parse correctly Java source code
  2024-08-19 21:21       ` Daniel Głowacki
@ 2024-08-29 11:30         ` Eli Zaretskii
  0 siblings, 0 replies; 5+ messages in thread
From: Eli Zaretskii @ 2024-08-29 11:30 UTC (permalink / raw)
  To: Daniel Głowacki; +Cc: 72402-done

> From: Daniel Głowacki <dglowacki4@gmail.com>
> Cc: 72402@debbugs.gnu.org
> Date: Mon, 19 Aug 2024 23:21:31 +0200
> 
> 
> Hello,
> 
> That's great news. Thank you very much for your support.

No further comments, so I presume the bug is fixed, and I'm closing
it.





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

end of thread, other threads:[~2024-08-29 11:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-31 15:27 bug#72402: 28.2; Etags does not parse correctly Java source code Daniel Głowacki
2024-08-01  8:16 ` Eli Zaretskii
     [not found]   ` <875xsirir2.fsf@hpg6>
2024-08-18  9:06     ` Eli Zaretskii
2024-08-19 21:21       ` Daniel Głowacki
2024-08-29 11:30         ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).