Subject: 29.0.60; java-ts-mode - Wrong indentation for the body of multiple lines conditions

From: 太阳 <[email-masked]>
Date: Sun, 29 Jan 2023 04:00:46 +0000

Hi
I mean for code like this:

```

public class T {
    public void F(String s) {
        if ("abc".equals(s)           // if condition occupies two lines.
            || "bcd".equals(s)) {
                return;                      // <==== this line has one more level of indentation
            }
    }
}
```
It seems that the body is indented according to the last line of the condition.

If the `if` condition is rewritten to one line, `return;` is indented correctly.

This also happens to multiple-line `while` (I haven't only tested `if` and `while`).

Thanks for your hard work. :)

In GNU Emacs 29.0.60 (build 14, x86_64-pc-linux-gnu, X toolkit, Xaw3d
 scroll bars) of 2023-01-29 built on tux-manjaro
Repository revision: 2bd0b9475384adfb4dd2cc794bbe1d8621546717
Repository branch: makepkg
Windowing system distributor 'The X.Org Foundation', version 11.0.12101006
System Description: Manjaro Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-modules --without-libotf --without-m17n-flt --without-gconf
 --with-native-compilation=no --with-xinput2 --with-x-toolkit=lucid
 --with-xft --with-xaw3d --without-cairo --with-sound=no
 --with-tree-sitter --without-gpm --without-compress-install
 '--program-transform-name=s/\([ec]tags\)/\1.emacs/'
 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection'
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
ACL DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LCMS2
LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XAW3D XDBE
XFT XIM XINPUT2 XPM LUCID ZLIB

Important settings:
  value of $LC_MONETARY: zh_CN.UTF-8
  value of $LC_NUMERIC: zh_CN.UTF-8
  value of $LC_TIME: zh_CN.UTF-8
  value of $LANG: zh_CN.UTF-8
  value of $XMODIFIERS: @im=fcitx
  locale-coding-system: utf-8

Major mode: Java

Minor modes in effect:
  yas-global-mode: t
  yas-minor-mode: t
  winner-mode: t
  recentf-mode: t
  helm--remap-mouse-mode: t
  async-bytecomp-package-mode: t
  which-function-mode: t
  hl-todo-mode: t
  dumb-jump-mode: t
  yafolding-mode: t
  auto-dim-other-buffers-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  global-so-long-mode: t
  global-hl-line-mode: t
  super-save-mode: t
  ctags-global-auto-update-mode: t
  ctags-auto-update-mode: t
  highlight-symbol-mode: t
  hungry-delete-mode: t
  corfu-history-mode: t
  corfu-popupinfo-mode: t
  global-corfu-mode: t
  corfu-mode: t
  evil-escape-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  shell-dirtrack-mode: t
  evil-local-mode: t
  windmove-mode: t
  eww-plus-mode: t
  all-the-icons-ivy-rich-mode: t
  ivy-rich-project-root-cache-mode: t
  ivy-rich-mode: t
  ivy-mode: t
  global-highlight-parentheses-mode: t
  highlight-parentheses-mode: t
  electric-pair-mode: t
  which-key-mode: t
  psessionm-mode: t
  psessionm-savehist-mode: t
  ace-pinyin-global-mode: t
  ace-pinyin-mode: t
  global-anzu-mode: t
  anzu-mode: t
  amx-mode: t
  auto-compile-on-load-mode: t
  auto-compile-on-save-mode: t
  override-global-mode: t
  save-place-mode: t
  display-time-mode: t
  global-auto-revert-mode: t
  gcmh-mode: t
  tooltip-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
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/lucency/.emacs.d/data/unsync/elpa29/transient-20230124.2013/transient hides /usr/share/emacs/29.0.60/lisp/transient
/home/lucency/.emacs.d/data/unsync/elpa29/use-package-20221209.2013/use-package-bind-key hides /usr/share/emacs/29.0.60/lisp/use-package/use-package-bind-key
/home/lucency/.emacs.d/data/unsync/elpa29/use-package-20221209.2013/use-package-diminish hides /usr/share/emacs/29.0.60/lisp/use-package/use-package-diminish
/home/lucency/.emacs.d/data/unsync/elpa29/use-package-20221209.2013/use-package-lint hides /usr/share/emacs/29.0.60/lisp/use-package/use-package-lint
/home/lucency/.emacs.d/data/unsync/elpa29/use-package-20221209.2013/use-package hides /usr/share/emacs/29.0.60/lisp/use-package/use-package
/home/lucency/.emacs.d/data/unsync/elpa29/use-package-20221209.2013/use-package-ensure hides /usr/share/emacs/29.0.60/lisp/use-package/use-package-ensure
/home/lucency/.emacs.d/data/unsync/elpa29/use-package-20221209.2013/use-package-core hides /usr/share/emacs/29.0.60/lisp/use-package/use-package-core
/home/lucency/.emacs.d/data/unsync/elpa29/use-package-20221209.2013/use-package-delight hides /usr/share/emacs/29.0.60/lisp/use-package/use-package-delight
/home/lucency/.emacs.d/data/unsync/elpa29/use-package-20221209.2013/use-package-jump hides /usr/share/emacs/29.0.60/lisp/use-package/use-package-jump
/home/lucency/.emacs.d/data/unsync/elpa29/bind-key-20221209.2013/bind-key hides /usr/share/emacs/29.0.60/lisp/use-package/bind-key

Features:
(shadow mail-extr emacsbug message yank-media rfc822 mml mml-sec epa epg
rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils sendmail rfc2047 rfc2045 ietf-drums mule-util
dabbrev helm-command helm-mode modern-cpp-font-lock cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
yasnippet-snippets yasnippet winner ffap recentf tree-widget
tramp-archive tramp-gvfs dbus helm-x-files helm-for-files helm-bookmark
helm-adaptive helm-external helm-net helm-misc helm-elisp helm-files
image-dired image-dired-tags image-dired-external image-dired-util
helm-buffers helm-occur helm-tags helm-locate helm-grep helm-regexp
helm-eval helm-info helm-utils helm-types helm-help helm
helm-global-bindings helm-easymenu helm-core async-bytecomp helm-source
helm-multi-match helm-lib which-func imenu hl-todo dumb-jump yafolding
auto-dim-other-buffers display-line-numbers so-long hl-line super-save
ivy-stock stock-analyze stock-leek stock stock-baostock stock-tushare
stock-db stock-db-tushare stock-db-baostock stock-util stock-struct csv
gitec gnuplot info-look aggressive-indent java-ts-mode c-ts-common
ob-rust cmake-mode rst flymake-cursor ctags-update etags fileloop
highlight-symbol hungry-delete topsy treesit pb corfu-history
corfu-popupinfo cape corfu cal-china-x cal-china lunar solar cal-dst
holidays holiday-loaddefs language-chunk lc-memo lc-corpus lc-storage
lc-db emacsql-sqlite3 emacsql emacsql-compiler lc-util lc-struct
lc-const ivy-anotes anotes anotes-struct counsel-deft f f-shortdoc
dash-docs gnutls doc-view jka-compr image-mode exif vterm vc-git
diff-mode vc-dispatcher bookmark tramp tramp-loaddefs trampver
tramp-integration tramp-compat parse-time iso8601 ls-lisp term
disp-table ehelp vterm-module term/xterm xterm evil-god-state god-mode
evil-escape evil-surround evil-anzu evil evil-keybindings evil-maps
evil-commands reveal evil-jumps evil-command-window evil-search evil-ex
shell evil-types evil-macros evil-repeat evil-states evil-core
evil-common windmove calc calc-loaddefs calc-macs rect evil-digraphs
evil-vars diminish eww-plus eww url-queue shr-tag-pre-highlight
language-detection shrface shr pixel-fill kinsoku url-file svg xml dom
puny mm-url gnus nnheader gnus-util range mm-util mail-prsvr request
mailheader mail-utils bm ivy-xref ivy-hydra hydra lv
all-the-icons-ivy-rich all-the-icons all-the-icons-faces data-material
data-weathericons data-octicons data-fileicons data-faicons
data-alltheicons ivy-rich ivy-plus pulse flymake-proc flymake warnings
heap counsel xref project dired-open dired-hacks-utils dired-x dired
dired-loaddefs compile text-property-search swiper ivy ivy-faces
ivy-overlay colir color weblorg templatel em-glob esh-util cus-edit
wid-edit files-x ox-odt rng-loc rng-uri rng-parse rng-match rng-dt
rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex
ox-icalendar org-agenda ox-html table ox-ascii ox-publish ox org-appear
org-element org-persist xdg org-id org-refile avl-tree generator
diary-lib diary-loaddefs org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-src ob-comint org-pcomplete pcomplete comint ansi-osc
ansi-color org-list org-footnote org-faces org-entities time-date
noutline outline icons ob-emacs-lisp ob-core ob-eval org-cycle org-table
ol org-fold org-fold-core org-keys oc org-loaddefs cal-menu calendar
cal-loaddefs org-version org-compat org-macs highlight-parentheses
log4j-mode elec-pair which-key psessionm gitignore-mode vundo pcase
pyim-cstring-utils pyim-cregexp-utils pyim pyim-cloudim pyim-probe
pyim-preview pyim-page popup posframe-plus posframe pyim-indicator
pyim-dregcache pyim-dhashcache sort pyim-dict async pyim-autoselector
pyim-process pyim-punctuation pyim-outcome pyim-candidates pyim-cstring
pyim-cregexp xr rx pyim-codes pyim-imobjs pyim-pinyin pyim-entered
pyim-dcache pyim-pymap pyim-scheme pyim-common ace-pinyin avy ring
pinyinlib anzu thingatpt amx s transient format-spec compat ht dash
use-package-diminish auto-compile ispell edmacro kmacro
use-package-bind-key bind-key easy-mmode conf-mode saveplace time server
pinentry autorevert filenotify tab-line doom-vibrant-theme
doom-themes-ext-org doom-themes-ext-visual-bell face-remap doom-themes
doom-themes-base gcmh cl-extra use-package-core delsel cus-load
finder-inf amx-autoloads all-the-icons-ivy-rich-autoloads
corfu-doc-autoloads dired-open-autoloads helm-autoloads
helm-core-autoloads auto-compile-autoloads evil-surround-autoloads
use-package-autoloads rainbow-mode-autoloads alert-autoloads
cal-china-x-autoloads posframe-autoloads hungry-delete-autoloads
counsel-autoloads sdcv-autoloads smart-compile-autoloads
eww-lnum-autoloads elfeed-autoloads jsonian-autoloads corfu-autoloads
expand-region-autoloads hide-lines-autoloads php-mode-autoloads
magit-autoloads magit-section-autoloads ivy-rich-autoloads
crontab-mode-autoloads yaml-mode-autoloads topsy-autoloads
company-box-autoloads frame-local-autoloads dumb-jump-autoloads
ivy-hydra-autoloads sql-indent-autoloads highlight-symbol-autoloads
git-modes-autoloads cape-autoloads evil-tutor-autoloads
pinentry-autoloads request-autoloads heap-autoloads showtip-autoloads
go-mode-autoloads highlight-parentheses-autoloads powerline-autoloads
ascii-table-autoloads vundo-autoloads shr-tag-pre-highlight-autoloads
log4j-mode-autoloads youdao-dictionary-autoloads derived pp names edebug
debug backtrace help-mode find-func names-autoloads advice
gcmh-autoloads hl-todo-autoloads hydra-autoloads lv-autoloads
ob-rust-autoloads rust-mode-autoloads git-commit-autoloads
with-editor-autoloads chinese-word-at-point-autoloads iedit-autoloads
diminish-autoloads language-detection-autoloads vterm-autoloads
doom-themes-autoloads evil-anzu-autoloads anzu-autoloads popup-autoloads
packed-autoloads evil-escape-autoloads evil-autoloads
emacsql-sqlite3-autoloads emacsql-autoloads ace-pinyin-autoloads
pinyinlib-autoloads avy-autoloads auto-dim-other-buffers-autoloads
pos-tip-autoloads async-autoloads ht-autoloads
yasnippet-snippets-autoloads yasnippet-autoloads templatel-autoloads
gntp-autoloads eshell-toggle-autoloads xr-autoloads org-appear-autoloads
gnuplot-autoloads cargo-autoloads markdown-mode-autoloads
htmlize-autoloads sqlup-mode-autoloads modern-cpp-font-lock-autoloads
unicad-autoloads super-save-autoloads queue-autoloads bind-key-autoloads
aggressive-indent-autoloads which-key-autoloads
company-statistics-autoloads company-autoloads log4e-autoloads
transient-autoloads compat-autoloads csv-mode-autoloads
helpful-autoloads elisp-refs-autoloads f-autoloads s-autoloads
rfc-mode-autoloads web-mode-autoloads swiper-autoloads ivy-autoloads
dired-hacks-utils-autoloads info dash-autoloads
dockerfile-mode-autoloads all-the-icons-autoloads kv-autoloads
goto-chg-autoloads bm-autoloads package-installer-package package
browse-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache
json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs
cl-lib china-util rmc iso-transl tooltip cconv 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 nadvice seq simple cl-generic
indonesian philippine 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 abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting x-toolkit
xinput2 x multi-tty make-network-process emacs)

Memory information:
((conses 16 868713 194867)
 (symbols 48 55153 0)
 (strings 32 258665 59271)
 (string-bytes 1 7565062)
 (vectors 16 286268)
 (vector-slots 8 2047867 360407)
 (floats 8 92581 819)
 (intervals 56 5305 1112)
 (buffers 984 19))

-- 
发送自 Vivaldi 邮件。访问 vivaldi.com 免费下载