* 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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.