Reported by: Patrick Brinich-Langlois <pbrinichlanglois <at> gmail.com>
Date: Tue, 11 Jun 2013 22:43:02 UTC
Severity: normal
Found in version 24.3
Done: Alex <agrambot <at> gmail.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 14593 in the body.
You can then email your comments to 14593 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#14593
; Package emacs
.
(Tue, 11 Jun 2013 22:43:02 GMT) Full text and rfc822 format available.Patrick Brinich-Langlois <pbrinichlanglois <at> gmail.com>
:bug-gnu-emacs <at> gnu.org
.
(Tue, 11 Jun 2013 22:43:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Patrick Brinich-Langlois <pbrinichlanglois <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Subject: 24.3; java-mode indentation of try-with-resources statement Date: Tue, 11 Jun 2013 14:24:13 -0800
[Message part 1 (text/plain, inline)]
Java's try-with-resources statement (new in version 1.7) is indented incorrectly in java-mode. Steps to reproduce: * Create a new file. Enable java-mode and electric-indent-mode. * Type the following: public class Test { public static void main(String[] args) { Path dir = Paths.get(System.getProperty("user.home")); try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) { System.out.println("test"); } } } The two lines after the try statement are indented an additional four spaces. The final two closing braces are indented properly. Somebody else has the same problem: http://stackoverflow.com/questions/16554232/why-does-try-with-resources-break-indentation-in-emacs I submitted this bug report a couple of weeks ago, but I didn't receive a reply, so I'm trying again. I hope I'm not creating a duplicate. If Emacs crashed, and you have the Emacs process in the gdb debugger, please include the output from the following gdb commands: `bt full' and `xbacktrace'. For information about debugging Emacs, please read the file /usr/share/emacs/24.3/etc/DEBUG. In GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.6.4) of 2013-04-14 on marid, modified by Debian Windowing system distributor `The X.Org Foundation', version 11.0.11303000 System Description: Ubuntu 13.04 Configured using: `configure '--build' 'x86_64-linux-gnu' '--build' 'x86_64-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.3/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.3/site-lisp:/usr/share/emacs/site-lisp' '--with-crt-dir=/usr/lib/x86_64-linux-gnu' '--with-x=yes' '--with-x-toolkit=gtk3' '--with-toolkit-scroll-bars' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro' 'CPPFLAGS=-D_FORTIFY_SOURCE=2'' Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Emacs-Lisp Minor modes in effect: paredit-mode: t my-keys-minor-mode: t recentf-mode: t show-paren-mode: t global-auto-revert-mode: t iswitchb-mode: t ido-everywhere: t global-linum-mode: t linum-mode: t global-auto-complete-mode: t auto-complete-mode: t highlight-sexps-mode: t electric-indent-mode: t global-edit-server-edit-mode: t workgroups-mode: t desktop-save-mode: t global-surround-mode: t surround-mode: t volatile-highlights-mode: t yas-global-mode: t yas-minor-mode: t evil-leader-mode: t global-evil-leader-mode: t evil-mode: t evil-local-mode: t global-undo-tree-mode: t tooltip-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t global-visual-line-mode: t visual-line-mode: t transient-mark-mode: t Recent input: b u t SPC I SPC d i d n ' t SPC r e c e i v e SPC a SPC r e p l y , SPC s o SPC I ' m SPC t r y i n SPC <backspace> g SPC a SPC g <backspace> <backspace> g a i n e n . t z M-z M-z M-z M-Y . e n J u u , s u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u y y y y y y w r < M-z n e w r M-k M-a e m a i l <M-backspace> a d d r e s s C-g M-a m a i l - h o s t <M-backspace> t o <return> u <f1> f <escape> C-g e C-g m a i e e <f1> f m a i l - t o <return> M-r q M-a <return> e e M-a m a i l - f o <backspace> r o <backspace> r <backspace> o m <M-backspace> C-g <f1> v m a i l - h <tab> o s t - a d <tab> <return> C-x r j e G <backspace> <backspace> o ( t e <backspace> <backspace> s t e <backspace> <backspace> e t q SPC m a i l - h o s t <return> SPC " p b r i n i c h l a n g l o i r <backspace> s @ g m a i l . c o m M-Y C-x C-e s t <return> e e u u e e u u e a ] ] ] ] ] c , w M-a M-i <return> Recent messages: Type "q" in help window to restore its previous buffer. ~/.emacs and /home/pat/.emacs.d/.emacs are the same file Executing: ~/apps/eclipse/eclim -command project_list [2 times] Mark set [yas] Cyclic parenthood: mode text-mode has already seen as a parent of mode emacs-lisp-mode Auto-saving...done "pbrinichlanglois <at> gmail.com" Executing: ~/apps/eclipse/eclim -command project_list user-error: Beginning of history; no preceding item [2 times] user-error: End of history; no default available [15 times] Load-path shadows: /home/pat/.emacs.d/elpa/company-20130604.316/.dir-locals hides /home/pat/.emacs.d/elpa/magit-20130604.1754/.dir-locals /home/pat/.emacs.d/elpa/color-theme-solarized-20130307.1350/solarized-dark-theme hides /home/pat/.emacs.d/elpa/solarized-theme-20130531.2020/solarized-dark-theme /home/pat/.emacs.d/elpa/color-theme-solarized-20130307.1350/solarized-light-theme hides /home/pat/.emacs.d/elpa/solarized-theme-20130531.2020/solarized-light-theme /home/pat/.emacs.d/elpa/pylint-20121112.1335/pylint hides /usr/share/emacs24/site-lisp/pylint/pylint /home/pat/.emacs.d/elpa/ipython-2927/ipython hides /usr/share/emacs/site-lisp/ipython /usr/share/emacs/24.3/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup /usr/share/emacs24/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/24.3/lisp/textmodes/ispell /usr/share/emacs24/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/24.3/lisp/textmodes/flyspell /home/pat/.emacs.d/elpa/company-20130604.316/.dir-locals hides /usr/share/emacs/24.3/lisp/gnus/.dir-locals Features: (find-func shadow sort mail-extr emacsbug message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mail-utils cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs executable two-column misearch multi-isearch ffap url-parse auth-source gnus-util mm-util mail-prsvr password-cache url-vars smex server vc-git paredit dropdown-list helm-config helm-aliases recentf tree-widget wid-edit solarized-light-theme solarized-definitions paren ruby-end autorevert iswitchb ido linum dired+ dired-x dired-aux dired edit-server-htmlize html2text ac-emacs-eclim-source eclim-completion auto-complete-config auto-complete popup time-date help-at-pt eclimd eclim eclim-problems eclim-maven eclim-ant eclim-java json eclim-project highlight-sexps multi-term term disp-table ehelp electric edit-server workgroups desktop surround cl-macs gv buffer-stack smooth-scrolling etags volatile-highlights key-chord smarter-compile yasnippet help-mode evil-leader evil evil-integration evil-maps evil-commands evil-types evil-search evil-ex evil-macros evil-repeat evil-states evil-core evil-common undo-tree diff windmove rect evil-digraphs evil-vars slime easy-mmode pp hyperspec thingatpt browse-url cl pallet carton melpa fill-column-indicator ac-dabbrev-autoloads ace-jump-mode-autoloads ack-and-a-half-autoloads browse-kill-ring-autoloads buffer-move-autoloads color-theme-solarized-autoloads color-theme-autoloads company-autoloads diff-hl-autoloads dired+-autoloads dropdown-list-autoloads edit-server-htmlize-autoloads edit-server-autoloads emacs-eclim-autoloads evil-leader-autoloads evil-autoloads expand-region-autoloads feature-mode-autoloads fill-column-indicator-autoloads find-file-in-project-autoloads fold-this-autoloads geiser-autoloads gist-autoloads gh-autoloads eieio goto-chg-autoloads haml-mode-autoloads helm-autoloads htmlize-autoloads idle-highlight-mode-autoloads ido-ubiquitous-autoloads ipython-autoloads jedi-autoloads auto-complete-autoloads epc-autoloads ctable-autoloads concurrent-autoloads deferred-autoloads key-chord-autoloads logito-autoloads magit-autoloads info easymenu markdown-mode-autoloads maxframe-autoloads melpa-autoloads byte-opt warnings bytecomp byte-compile cconv multi-term-autoloads noctilux-theme-autoloads pallet-autoloads carton-autoloads paredit-autoloads pcache-autoloads pep8-autoloads popup-autoloads projectile-autoloads dash-autoloads pylint-autoloads python-mode-autoloads quack-autoloads rainbow-delimiters-autoloads rainbow-mode-autoloads revive-autoloads rinari-autoloads jump-autoloads inflections-autoloads findr-autoloads finder-inf ruby-block-autoloads ruby-compilation-autoloads edmacro kmacro inf-ruby-autoloads inf-ruby ruby-mode ruby-end-autoloads ruby-tools-autoloads s-autoloads scss-mode-autoloads slime-autoloads smarter-compile-autoloads smex-autoloads sml-mode-autoloads smooth-scrolling-autoloads advice help-fns cl-lib advice-preload solarized-theme-autoloads surround-autoloads thesaurus-autoloads tidy-autoloads unbound-autoloads undo-tree-autoloads volatile-highlights-autoloads websocket-autoloads workgroups-autoloads yari-autoloads yasnippet-autoloads package compile comint ansi-color ring tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)
[Message part 2 (text/html, inline)]
bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org
:bug#14593
; Package emacs,cc-mode
.
(Sat, 13 Jul 2013 19:21:02 GMT) Full text and rfc822 format available.Message #8 received at 14593 <at> debbugs.gnu.org (full text, mbox):
From: Alan Mackenzie <acm <at> muc.de> To: 14593 <at> debbugs.gnu.org Cc: Patrick Brinich-Langlois <pbrinichlanglois <at> gmail.com> Subject: Re: bug#14593: 24.3; java-mode indentation of try-with-resources statement Date: Sat, 13 Jul 2013 19:19:36 +0000
Hello, Patrick. On Wed, 12 Jun 2013 00:24:13, Patrick Brinich-Langlois <pbrinichlanglois <at> gmail.com> wrote: > Java's try-with-resources statement (new in version 1.7) is indented > incorrectly in java-mode. Steps to reproduce: > * Create a new file. Enable java-mode and electric-indent-mode. > * Type the following: > public class Test { > public static void main(String[] args) { > Path dir = Paths.get(System.getProperty("user.home")); > try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) { > System.out.println("test"); > } > } > } > The two lines after the try statement are indented an additional four > spaces. The final two closing braces are indented properly. This is indeed the case. The following patch should hopefully handle this case properly. After applying it, either recompile all the cc-*.el files, or just recompile cc-langs.el, cc-engine.el, cc-fonts.el, and cc-mode.el. Please confirm to me that the patch does indeed fix the bug, or report any further problems which aren't fixed. Thanks! diff -r a86a481f7a63 cc-engine.el --- a/cc-engine.el Mon May 27 12:17:11 2013 +0000 +++ b/cc-engine.el Sun Jul 07 14:15:36 2013 +0000 @@ -1140,9 +1140,13 @@ (not (memq sym '(boundary ignore nil)))) ;; Need to investigate closer whether we've crossed ;; between a substatement and its containing statement. - (if (setq saved (if (looking-at c-block-stmt-1-key) - ptok - pptok)) + (if (setq saved + (cond ((and (looking-at c-block-stmt-1-2-key) + (eq (char-after ptok) ?\()) + pptok) + ((looking-at c-block-stmt-1-key) + ptok) + (t pptok))) (cond ((> start saved) (setq pos saved)) ((= start saved) (setq ret 'up))))) @@ -8026,7 +8030,8 @@ (or (looking-at c-block-stmt-1-key) (and (eq (char-after) ?\() (zerop (c-backward-token-2 1 t lim)) - (looking-at c-block-stmt-2-key))) + (or (looking-at c-block-stmt-2-key) + (looking-at c-block-stmt-1-2-key)))) (point)))) (defun c-after-special-operator-id (&optional lim) diff -r a86a481f7a63 cc-fonts.el --- a/cc-fonts.el Mon May 27 12:17:11 2013 +0000 +++ b/cc-fonts.el Sun Jul 07 14:15:36 2013 +0000 @@ -1274,7 +1274,8 @@ (goto-char match-pos) (backward-char) (c-backward-token-2) - (looking-at c-block-stmt-2-key))) + (or (looking-at c-block-stmt-2-key) + (looking-at c-block-stmt-1-2-key)))) (setq context nil c-restricted-<>-arglists t)) ;; Near BOB. diff -r a86a481f7a63 cc-langs.el --- a/cc-langs.el Mon May 27 12:17:11 2013 +0000 +++ b/cc-langs.el Sun Jul 07 14:15:36 2013 +0000 @@ -2181,6 +2181,18 @@ t (c-make-keywords-re t (c-lang-const c-block-stmt-1-kwds))) (c-lang-defvar c-block-stmt-1-key (c-lang-const c-block-stmt-1-key)) +(c-lang-defconst c-block-stmt-1-2-kwds + "Statement keywords optionally followed by a paren sexp. +Keywords here should also be in `c-block-stmt-1-key'." + t nil + java '("try")) + +(c-lang-defconst c-block-stmt-1-2-key + ;; Regexp matching the start of a statement which may be followed by a + ;; paren sexp and will then be followed by a substatement. + t (c-make-keywords-re t (c-lang-const c-block-stmt-1-2-kwds))) +(c-lang-defvar c-block-stmt-1-2-key (c-lang-const c-block-stmt-1-2-key)) + (c-lang-defconst c-block-stmt-2-kwds "Statement keywords followed by a paren sexp and then by a substatement." t '("for" "if" "switch" "while") -- Alan Mackenzie (Nuremberg, Germany).
Alex <agrambot <at> gmail.com>
:Patrick Brinich-Langlois <pbrinichlanglois <at> gmail.com>
:Message #13 received at 14593-done <at> debbugs.gnu.org (full text, mbox):
From: Alex <agrambot <at> gmail.com> To: Alan Mackenzie <acm <at> muc.de> Cc: 14593-done <at> debbugs.gnu.org, Patrick Brinich-Langlois <pbrinichlanglois <at> gmail.com> Subject: Re: bug#14593: 24.3; java-mode indentation of try-with-resources statement Date: Sun, 21 Aug 2016 21:39:41 -0600
Alan Mackenzie <acm <at> muc.de> writes: > Hello, Patrick. > > On Wed, 12 Jun 2013 00:24:13, Patrick Brinich-Langlois > <pbrinichlanglois <at> gmail.com> wrote: > >> Java's try-with-resources statement (new in version 1.7) is indented >> incorrectly in java-mode. Steps to reproduce: > >> * Create a new file. Enable java-mode and electric-indent-mode. >> * Type the following: > >> public class Test { >> public static void main(String[] args) { >> Path dir = Paths.get(System.getProperty("user.home")); >> try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) { >> System.out.println("test"); >> } >> } >> } > >> The two lines after the try statement are indented an additional four >> spaces. The final two closing braces are indented properly. > > This is indeed the case. > > The following patch should hopefully handle this case properly. After > applying it, either recompile all the cc-*.el files, or just recompile > cc-langs.el, cc-engine.el, cc-fonts.el, and cc-mode.el. > > Please confirm to me that the patch does indeed fix the bug, or report > any further problems which aren't fixed. Thanks! I'm closing this as the patch was applied in 5ab78d3d6a7efcb49d2a9be5b4bdb8eaf78f7a14 and it appears to fix the bug.
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Mon, 19 Sep 2016 11:24:04 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.