* 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
[parent not found: <875xsirir2.fsf@hpg6>]
* 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).