GNU bug report logs - #30225
27.0.50; jsx: Arrow function in attribute breaks indentation

Previous Next

Package: emacs;

Reported by: Mitchel Humpherys <mitch.special <at> gmail.com>

Date: Tue, 23 Jan 2018 01:30:01 UTC

Severity: minor

Merged with 24896, 26001, 32158

Found in versions 26.1, 27.0.50

Done: Dmitry Gutov <dgutov <at> yandex.ru>

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 30225 in the body.
You can then email your comments to 30225 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


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#30225; Package emacs. (Tue, 23 Jan 2018 01:30:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Mitchel Humpherys <mitch.special <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 23 Jan 2018 01:30:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Mitchel Humpherys <mitch.special <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.50; jsx: Arrow function in attribute breaks indentation
Date: Mon, 22 Jan 2018 17:27:53 -0800
I've noticed an indentation bug in js-jsx-mode.

The following code doesn't indent properly (note the `value` attribute on the `select`):

class MySelect extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            value: "",
        };
    }

    render() {
        return (
            <select style={{paddingRight: "10px"}}
                    onChange={e => this.setState({value: e.target.value})}
              value={this.state.value}>
              <option>Hi</option>
            </select>
        );
    }
}

However, when I move the `onChange` arrow function out it indents fine:

class MySelect extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            value: "",
        };
        this.onChange = this.onChange.bind(this);
    }

    render() {
        return (
            <select style={{paddingRight: "10px"}}
                    onChange={this.onChange}
                    value={this.state.value}>
              <option>Hi</option>
            </select>
        );
    }

    onChange(e) {
        this.setState({value: e.target.value});
    }
}




In GNU Emacs 27.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
 of 2018-01-22 built on grinchel
Repository revision: 2df391c202eeee0d575980555443a5e81b8f6b1f
Windowing system distributor 'Fedora Project', version 11.0.11906000
System Description: Fedora release 27 (Twenty Seven)

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Mark set [2 times]
Indenting region...done
user-error: Beginning of history; no preceding item
Making completion list...
user-error: Beginning of history; no preceding item

Configured using:
 'configure --prefix=/home/mgalgs/opt/emacs-git'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 THREADS LCMS2

Important settings:
  value of $LC_CTYPE: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: JSX

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-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
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml mml-sec password-cache epa derived epg epg-config
gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils js advice sgml-mode dom json
map seq byte-opt gv bytecomp byte-compile cconv imenu thingatpt cc-mode
cc-fonts easymenu cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs cl-loaddefs cl-lib elec-pair time-date mule-util tooltip
eldoc electric uniquify ediff-hook vc-hooks lisp-float-type 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 elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame 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 charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 121749 8471)
 (symbols 48 23352 1)
 (miscs 40 54 97)
 (strings 32 37829 1944)
 (string-bytes 1 1118347)
 (vectors 16 17941)
 (vector-slots 8 534418 8920)
 (floats 8 52 297)
 (intervals 56 243 0)
 (buffers 992 13))




Forcibly Merged 24896 26001 30225. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Tue, 23 Jan 2018 01:55:01 GMT) Full text and rfc822 format available.

Forcibly Merged 24896 26001 30225 32158. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Sat, 14 Jul 2018 16:20:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#30225; Package emacs. (Wed, 05 Jun 2019 03:06:02 GMT) Full text and rfc822 format available.

Message #12 received at 30225 <at> debbugs.gnu.org (full text, mbox):

From: Jackson Ray Hamilton <jackson <at> jacksonrayhamilton.com>
To: 30225 <at> debbugs.gnu.org
Cc: mitch.special <at> gmail.com
Subject: Re: bug#30225: 27.0.50; jsx: Arrow function in attribute breaks
 indentation
Date: Tue, 4 Jun 2019 20:05:42 -0700
Hi Mitchell,

A set of changes I pushed to the Emacs master branch 2 months ago should 
resolve this issue.  (First fixed in be86ece42c, but there were several 
commits after that when I broke/fixed it again.  The master branch is 
your best bet.)

Note that you might not need to use js-jsx-mode any more, either; 
support for JSX should be enabled in js-mode if you include the “React” 
library in a file, or if the file ends in “.jsx”.

Jackson





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 04 Jul 2019 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 269 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.