all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
@ 2024-07-18 21:05 Jostein Kjønigsen
  2024-07-18 21:30 ` Andrea Corallo
  0 siblings, 1 reply; 10+ messages in thread
From: Jostein Kjønigsen @ 2024-07-18 21:05 UTC (permalink / raw)
  To: 72184

[-- Attachment #1: Type: text/plain, Size: 9961 bytes --]


When using typescript-ts-mode in a bare config without any custom hooks defined,
RET ends up being bound (by default) to `newline`.

This is suboptimal, given that users typically want newlines to be indented.

RET should instead be bound to `newline-and-indent`.



In GNU Emacs 31.0.50 (build 4, aarch64-apple-darwin23.4.0, NS
 appkit-2487.50 Version 14.4.1 (Build 23E224)) of 2024-07-18 built on
 SOK67R3KWV97
Repository revision: 14bfa9edeb2ba47d0fb930cc708c5e4033100a54
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2487
System Description:  macOS 14.4.1

Configured using:
 'configure --with-json --with-tree-sitter --with-native-compilation
 PKG_CONFIG_PATH=:/usr/local/lib/pkgconfig:/opt/local/lib/pkgconfig'

Configured features:
ACL GLIB GNUTLS LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY KQUEUE NS
PDUMPER PNG RSVG SQLITE3 THREADS TOOLKIT_SCROLL_BARS TREE_SITTER WEBP
XIM ZLIB

Important settings:
  value of $LC_ALL: en_US.UTF-8
  value of $LC_CTYPE: UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  bug-reference-prog-mode: t
  elisp-slime-nav-mode: t
  highlight-symbol-mode: t
  flycheck-mode: t
  company-mode: t
  which-function-mode: t
  copilot-mode: t
  editorconfig-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  async-bytecomp-package-mode: t
  delete-selection-mode: t
  global-auto-revert-mode: t
  paredit-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  global-nlinum-mode: t
  nlinum-mode: t
  ido-yes-or-no-mode: t
  override-global-mode: t
  server-mode: t
  global-hl-line-mode: t
  pixel-scroll-precision-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-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
  hs-minor-mode: t

Load-path shadows:
/Users/josteink/.emacs.d/elpa/transient-20240421.1327/transient hides /Users/josteink/build/emacs/lisp/transient
/Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig hides /Users/josteink/build/emacs/lisp/editorconfig
/Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig-conf-mode hides /Users/josteink/build/emacs/lisp/editorconfig-conf-mode
/Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig-core hides /Users/josteink/build/emacs/lisp/editorconfig-core
/Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig-core-handle hides /Users/josteink/build/emacs/lisp/editorconfig-core-handle
/Users/josteink/.emacs.d/elpa/editorconfig-20240318.2049/editorconfig-fnmatch hides /Users/josteink/build/emacs/lisp/editorconfig-fnmatch

Features:
(shadow sort mail-extr emacsbug em-unix em-term term ehelp em-script
em-prompt em-pred em-ls em-hist em-glob em-extpipe em-cmpl em-dirs
em-basic em-banner em-alias esh-mode esh-var eshell esh-cmd esh-ext
esh-proc esh-opt esh-io esh-arg esh-module esh-module-loaddefs esh-util
helm-command helm-elisp helm-eval edebug helm-info dired-aux image-file
image-converter helm-external helm-net ffap bug-reference two-column
misearch multi-isearch help-fns radix-tree markdown-mode color add-log
combobulate combobulate-yaml combobulate-css combobulate-js-ts
combobulate-python combobulate-html combobulate-ui transient
combobulate-display let-alist combobulate-contrib multiple-cursors
mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines
mc-hide-unmatched-lines-mode mc-mark-more sgml-mode facemenu
mc-cycle-cursors multiple-cursors-core rect combobulate-manipulation
python combobulate-navigation combobulate-misc combobulate-interface
combobulate-rules combobulate-settings tempo elec-pair
typescript-ts-mode js c-ts-common cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs vc-git
vc-dispatcher winner tramp-archive tramp-gvfs ido-completing-read+
memoize cus-edit cus-start cus-load minibuf-eldef org-duration diary-lib
diary-loaddefs cal-iso disp-table oc-basic ol-eww ol-rmail ol-mhe ol-irc
ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime
gnutls dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus dbus
gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int
gnus-range message sendmail yank-media rfc822 mml mml-sec epa derived
epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus-win
ol-docview doc-view jka-compr ol-bibtex bibtex ol-bbdb ol-w3m ol-doi
org-link-doi face-remap org-agenda org-element org-persist org-id
org-element-ast inline avl-tree org-refile elisp-slime-nav
highlight-symbol flycheck company-oddmuse company-keywords company-etags
etags fileloop generator company-gtags company-dabbrev-code
company-dabbrev company-files company-clang company-capf company-cmake
company-semantic company-template company-bbdb company eglot
external-completion flymake compat diff diff-mode track-changes ert pp
ewoc debug backtrace which-func hideshow copilot copilot-balancer
editorconfig editorconfig-core editorconfig-core-handle
editorconfig-fnmatch f dash s jsonrpc eww url-queue shr pixel-fill
kinsoku url-file svg xml dom puny mm-url gnus nnheader gnus-util
mail-utils range wid-edit mm-util mail-prsvr helm-imenu helm-mode
helm-misc helm-files image-dired image-dired-tags image-dired-external
image-dired-util image-mode dired dired-loaddefs exif tramp trampver
tramp-integration files-x tramp-message tramp-compat xdg shell
parse-time iso8601 tramp-loaddefs helm-buffers helm-occur helm-tags
helm-locate helm-grep helm-regexp helm-utils helm-help helm-types helm
helm-global-bindings helm-easymenu helm-core async-bytecomp helm-source
helm-multi-match helm-lib async imenu ob-plantuml delsel autorevert
filenotify org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-src ob-comint org-pcomplete pcomplete org-list org-footnote
org-faces org-entities noutline outline org-version ob-emacs-lisp
ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys
oc org-loaddefs thingatpt find-func cal-menu calendar cal-loaddefs
org-compat org-macs format-spec yasnippet paredit dockerfile-mode
sh-script smie treesit executable nlinum linum ido-yes-or-no advice ido
edmacro kmacro use-package-bind-key bind-key easy-mmode xref project
server hl-line pixel-scroll cua-base compile-eslint all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons dracula-theme
use-package-ensure use-package-core finder-inf all-the-icons-autoloads
bmx-mode-autoloads cargo-autoloads cmake-mode-autoloads
company-autoloads crontab-mode-autoloads dap-mode-autoloads
bui-autoloads dockerfile-mode-autoloads doom-modeline-autoloads
dracula-theme-autoloads editorconfig-autoloads elisp-slime-nav-autoloads
expand-region-autoloads flycheck-autoloads helm-autoloads
helm-core-autoloads async-autoloads highlight-symbol-autoloads
ido-yes-or-no-autoloads ido-completing-read+-autoloads compile
text-property-search comint ansi-osc ansi-color ring time-date comp
comp-cstr cl-extra help-mode warnings comp-run comp-common rx
lsp-docker-autoloads lsp-treemacs-autoloads lsp-mode-autoloads
magit-autoloads pcase git-commit-autoloads magit-section-autoloads
markdown-mode-autoloads memoize-autoloads multiple-cursors-autoloads
nerd-icons-autoloads nlinum-autoloads paredit-autoloads
pkg-info-autoloads epl-autoloads popup-autoloads powershell-autoloads
shrink-path-autoloads f-autoloads spinner-autoloads swift-mode-autoloads
transient-autoloads treemacs-autoloads cfrs-autoloads posframe-autoloads
ht-autoloads hydra-autoloads lv-autoloads pfuture-autoloads
ace-window-autoloads avy-autoloads s-autoloads dash-autoloads
undo-tree-autoloads queue-autoloads wfnames-autoloads info
with-editor-autoloads yaml-autoloads yaml-mode-autoloads
yasnippet-autoloads 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 icons password-cache json subr-x map byte-opt
gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl
tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/ns-win ns-win ucs-normalize
mule-util term/common-win 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 kqueue cocoa ns lcms2 multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 1458191 193746) (symbols 48 66974 1)
 (strings 32 418444 16703) (string-bytes 1 11887433)
 (vectors 16 160853) (vector-slots 8 2461125 186875)
 (floats 8 2169 354) (intervals 56 27943 2331) (buffers 992 53))

—
Kind Regards
Jostein Kjønigsen


[-- Attachment #2: Type: text/html, Size: 12289 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
  2024-07-18 21:05 bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent Jostein Kjønigsen
@ 2024-07-18 21:30 ` Andrea Corallo
  2024-07-20  0:22   ` Dmitry Gutov
  0 siblings, 1 reply; 10+ messages in thread
From: Andrea Corallo @ 2024-07-18 21:30 UTC (permalink / raw)
  To: Jostein Kjønigsen; +Cc: 72184

Jostein Kjønigsen <jostein@secure.kjonigsen.net> writes:

> When using typescript-ts-mode in a bare config without any custom hooks defined,
> RET ends up being bound (by default) to `newline`.
>
> This is suboptimal, given that users typically want newlines to be indented.
>
> RET should instead be bound to `newline-and-indent`.

Hi,

AFAIK this is what we tipically do, like: c-mode, c-ts-mode, lisp-mode,
emacs-lisp-mode etc.  Why 'typescript-ts-mode' should be different?

  Andrea





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
  2024-07-18 21:30 ` Andrea Corallo
@ 2024-07-20  0:22   ` Dmitry Gutov
  2024-07-27  7:21     ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Dmitry Gutov @ 2024-07-20  0:22 UTC (permalink / raw)
  To: Andrea Corallo, Jostein Kjønigsen; +Cc: 72184

On 19/07/2024 00:30, Andrea Corallo wrote:
> Jostein Kjønigsen<jostein@secure.kjonigsen.net>  writes:
> 
>> When using typescript-ts-mode in a bare config without any custom hooks defined,
>> RET ends up being bound (by default) to `newline`.
>>
>> This is suboptimal, given that users typically want newlines to be indented.
>>
>> RET should instead be bound to `newline-and-indent`.
> Hi,
> 
> AFAIK this is what we tipically do, like: c-mode, c-ts-mode, lisp-mode,
> emacs-lisp-mode etc.  Why 'typescript-ts-mode' should be different?

Right, we normally handle automatic indentation using 
electric-indent-mode (which is on by default).

If RET behaves incorrectly in typescript-ts-mode somehow, more details 
should be provided.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
  2024-07-20  0:22   ` Dmitry Gutov
@ 2024-07-27  7:21     ` Eli Zaretskii
  2024-07-27 11:50       ` Jostein Kjønigsen
  2024-07-31  8:55       ` Jostein Kjønigsen
  0 siblings, 2 replies; 10+ messages in thread
From: Eli Zaretskii @ 2024-07-27  7:21 UTC (permalink / raw)
  To: jostein, Dmitry Gutov; +Cc: acorallo, 72184

> Cc: 72184@debbugs.gnu.org
> Date: Sat, 20 Jul 2024 03:22:47 +0300
> From: Dmitry Gutov <dmitry@gutov.dev>
> 
> On 19/07/2024 00:30, Andrea Corallo wrote:
> > Jostein Kjønigsen<jostein@secure.kjonigsen.net>  writes:
> > 
> >> When using typescript-ts-mode in a bare config without any custom hooks defined,
> >> RET ends up being bound (by default) to `newline`.
> >>
> >> This is suboptimal, given that users typically want newlines to be indented.
> >>
> >> RET should instead be bound to `newline-and-indent`.
> > Hi,
> > 
> > AFAIK this is what we tipically do, like: c-mode, c-ts-mode, lisp-mode,
> > emacs-lisp-mode etc.  Why 'typescript-ts-mode' should be different?
> 
> Right, we normally handle automatic indentation using 
> electric-indent-mode (which is on by default).
> 
> If RET behaves incorrectly in typescript-ts-mode somehow, more details 
> should be provided.

Jostein, could you please respond, so that we could make progress
here?

Thanks.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
  2024-07-27  7:21     ` Eli Zaretskii
@ 2024-07-27 11:50       ` Jostein Kjønigsen
  2024-07-27 12:20         ` Eli Zaretskii
  2024-07-31  8:55       ` Jostein Kjønigsen
  1 sibling, 1 reply; 10+ messages in thread
From: Jostein Kjønigsen @ 2024-07-27 11:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Dmitry Gutov, acorallo, 72184

I’m on a vacation with the family, and without a laptop. I won’t be able to provide more thorough feedback until I’m back and can re-test various configurations.

I might be able to look into this in a week or so. Is that good?


--
Jostein Kjønigsen
https://jostein.kjønigsen.net

> On 27 Jul 2024, at 09:21, Eli Zaretskii <eliz@gnu.org> wrote:
> 
> 
>> 
>> Cc: 72184@debbugs.gnu.org
>> Date: Sat, 20 Jul 2024 03:22:47 +0300
>> From: Dmitry Gutov <dmitry@gutov.dev>
>> 
>>> On 19/07/2024 00:30, Andrea Corallo wrote:
>>> Jostein Kjønigsen<jostein@secure.kjonigsen.net>  writes:
>>> 
>>>> When using typescript-ts-mode in a bare config without any custom hooks defined,
>>>> RET ends up being bound (by default) to `newline`.
>>>> 
>>>> This is suboptimal, given that users typically want newlines to be indented.
>>>> 
>>>> RET should instead be bound to `newline-and-indent`.
>>> Hi,
>>> 
>>> AFAIK this is what we tipically do, like: c-mode, c-ts-mode, lisp-mode,
>>> emacs-lisp-mode etc.  Why 'typescript-ts-mode' should be different?
>> 
>> Right, we normally handle automatic indentation using
>> electric-indent-mode (which is on by default).
>> 
>> If RET behaves incorrectly in typescript-ts-mode somehow, more details
>> should be provided.
> 
> Jostein, could you please respond, so that we could make progress
> here?
> 
> Thanks.






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
  2024-07-27 11:50       ` Jostein Kjønigsen
@ 2024-07-27 12:20         ` Eli Zaretskii
  0 siblings, 0 replies; 10+ messages in thread
From: Eli Zaretskii @ 2024-07-27 12:20 UTC (permalink / raw)
  To: Jostein Kjønigsen; +Cc: dmitry, acorallo, 72184

> From: Jostein Kjønigsen <jostein@secure.kjonigsen.net>
> Date: Sat, 27 Jul 2024 13:50:19 +0200
> Cc: Dmitry Gutov <dmitry@gutov.dev>, acorallo@gnu.org, 72184@debbugs.gnu.org
> 
> I’m on a vacation with the family, and without a laptop. I won’t be able to provide more thorough feedback until I’m back and can re-test various configurations.
> 
> I might be able to look into this in a week or so. Is that good?

Sure, there's no rush.

Thanks.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
  2024-07-27  7:21     ` Eli Zaretskii
  2024-07-27 11:50       ` Jostein Kjønigsen
@ 2024-07-31  8:55       ` Jostein Kjønigsen
  2024-08-01  0:42         ` Dmitry Gutov
  1 sibling, 1 reply; 10+ messages in thread
From: Jostein Kjønigsen @ 2024-07-31  8:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Dmitry Gutov, Yuan Fu, acorallo, Theodor Thornhill, 72184

[-- Attachment #1: Type: text/plain, Size: 2730 bytes --]



> On 27 Jul 2024, at 09:21, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> Cc: 72184@debbugs.gnu.org
>> Date: Sat, 20 Jul 2024 03:22:47 +0300
>> From: Dmitry Gutov <dmitry@gutov.dev>
>> 
>> Right, we normally handle automatic indentation using 
>> electric-indent-mode (which is on by default).
>> 
>> If RET behaves incorrectly in typescript-ts-mode somehow, more details 
>> should be provided.
> 
> Jostein, could you please respond, so that we could make progress
> here?
> 
> Thanks.


PREFACE

I've now looked further into this issue, and what we're actually seeing here is not indentation code "not working", but indentation rules not taking into account incomplete parse-trees while code is being written.

So as the original bug-submitter, I will have to just declare that the original bug-description is clearly inaccurate. Sorry about that!

Below is my attempt to better express what is actually failing and why.

My hypothesis is that this could be an issue for other tree-sitter based major-modes as well, and maintainers of those modes are encouraged to check for similar issues.

If more major-modes than typescript-ts-mode is affected, the optimum solution may best be decided together, rather than individually per mode.

AS FOR THE BUG - DETAILS

Consider the following pre-existing typescript/javascript function:

function stuff() {
  // TODO implement
}

Using the typescript tree-sitter grammer, it gets the following nodes in its tree-sitter AST:

 (function_declaration function name: (identifier)
  parameters: (formal_parameters ( ))
  body: (statement_block { (comment) }))
 
This matches the rules for indentation in typescript-ts-mode and indents correctly regardless.

But in a bare config with only electric-indent-mode enabled (and not electric-pair-mode), trying to enter a new function will produce a incomplete syntax tree, due to the missing final brace.

The code will look like this:

function gnu2() {  // NOTE: no closing brace!


And the tree-sitter AST will then look like this until completed:

 (expression_statement
  (function function name: (identifier)
   parameters: (formal_parameters ( ))
   body: (statement_block { (comment) }))))

And typescript-ts-mode has no indentation rules for this AST. Thus pressing enter wont cause indentation, despite electric-indent-mode being enabled.

I suspect this sort of issue could possibly affect other treesitter based modes which has been developed mostly in existing configs with "all the bells and whistles" (like electric-pair-mode) enabled.

I'll hold off any fixes or suggestions for such until we have some reports from other maintainers, if that is ok?

--
Jostein

[-- Attachment #2: Type: text/html, Size: 4183 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
  2024-07-31  8:55       ` Jostein Kjønigsen
@ 2024-08-01  0:42         ` Dmitry Gutov
  2024-08-15 10:03           ` Jostein Kjønigsen
  0 siblings, 1 reply; 10+ messages in thread
From: Dmitry Gutov @ 2024-08-01  0:42 UTC (permalink / raw)
  To: Jostein Kjønigsen, Eli Zaretskii
  Cc: Yuan Fu, acorallo, Theodor Thornhill, 72184

Hi Jostein,

On 31/07/2024 11:55, Jostein Kjønigsen wrote:

> PREFACE
> 
> I've now looked further into this issue, and what we're actually seeing 
> here is not indentation code "not working", but indentation rules not 
> taking into account incomplete parse-trees while code is being written.

Makes sense, thanks.

> So as the original bug-submitter, I will have to just declare that the 
> original bug-description is clearly inaccurate. Sorry about that!
> 
> Below is my attempt to better express what is actually failing and why.
> 
> *My hypothesis is that this could be an issue for other tree-sitter 
> based major-modes as well, and maintainers of those modes are encouraged 
> to check for similar issues.*
> 
> If more major-modes than typescript-ts-mode is affected, the optimum 
> solution may best be decided together, rather than individually per mode.
> 
> AS FOR THE BUG - DETAILS
> 
> Consider the following pre-existing typescript/javascript function:
> 
>     function stuff() {
>        // TODO implement
>     }
> 
> 
> Using the typescript tree-sitter grammer, it gets the following nodes in 
> its tree-sitter AST:
> 
>       (function_declaration function name: (identifier)
>        parameters: (formal_parameters ( ))
>        body: (statement_block { (comment) }))
> 
> This matches the rules for indentation in typescript-ts-mode and indents 
> correctly regardless.
> 
> But in a bare config with only electric-indent-mode enabled (and not 
> electric-pair-mode), trying to enter a new function will produce a 
> incomplete syntax tree, due to the missing final brace.
> 
> The code will look like this:
> 
>     function gnu2() {  // NOTE: no closing brace!
> 
> 
> And the tree-sitter AST will then look like this until completed:
> 
>       (expression_statement
>        (function function name: (identifier)
>         parameters: (formal_parameters ( ))
>         body: (statement_block { (comment) }))))
> 
> 
> And typescript-ts-mode has no indentation rules for this AST. *Thus 
> pressing enter wont cause indentation, despite electric-indent-mode 
> being enabled.*
> 
> I suspect this sort of issue could possibly affect other treesitter 
> based modes which has been developed mostly in existing configs with 
> "all the bells and whistles" (like electric-pair-mode) enabled.
> 
> I'll hold off any fixes or suggestions for such until we have some 
> reports from other maintainers, if that is ok?

We've seen this before - take a look at https://debbugs.gnu.org/62717, 
for example.

In short, some ad-hoc counter-measures can and sometimes are added 
(proposals welcome), but ultimately when we know we can't reliably 
distinguish problem situations, or can only detect a minor fraction of 
them, we're also okay giving up and recommending people use 
electric-pair-mode for better experience.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
  2024-08-01  0:42         ` Dmitry Gutov
@ 2024-08-15 10:03           ` Jostein Kjønigsen
  2024-08-17 10:11             ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Jostein Kjønigsen @ 2024-08-15 10:03 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Eli Zaretskii, acorallo, Theodor Thornhill, Yuan Fu, 72184


> On 1 Aug 2024, at 02:42, Dmitry Gutov <dmitry@gutov.dev> wrote:
> 
> Hi Jostein,
> 
> 
> We've seen this before - take a look at https://debbugs.gnu.org/62717, for example.
> 
> In short, some ad-hoc counter-measures can and sometimes are added (proposals welcome), but ultimately when we know we can't reliably distinguish problem situations, or can only detect a minor fraction of them, we're also okay giving up and recommending people use electric-pair-mode for better experience.

Right. In that case I think I'm fine with just closing this one too.

It's not causing issues for me on a day-to-day basis, only on a completely clean setup, and I honestly don't think too many programmers are using Emacs that way.

--
Jostein




^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent
  2024-08-15 10:03           ` Jostein Kjønigsen
@ 2024-08-17 10:11             ` Eli Zaretskii
  0 siblings, 0 replies; 10+ messages in thread
From: Eli Zaretskii @ 2024-08-17 10:11 UTC (permalink / raw)
  To: Jostein Kjønigsen; +Cc: dmitry, casouri, acorallo, theo, 72184-done

> From: Jostein Kjønigsen <jostein@secure.kjonigsen.net>
> Date: Thu, 15 Aug 2024 12:03:25 +0200
> Cc: Eli Zaretskii <eliz@gnu.org>,
>  acorallo@gnu.org,
>  72184@debbugs.gnu.org,
>  Yuan Fu <casouri@gmail.com>,
>  Theodor Thornhill <theo@thornhill.no>
> 
> 
> > On 1 Aug 2024, at 02:42, Dmitry Gutov <dmitry@gutov.dev> wrote:
> > 
> > Hi Jostein,
> > 
> > 
> > We've seen this before - take a look at https://debbugs.gnu.org/62717, for example.
> > 
> > In short, some ad-hoc counter-measures can and sometimes are added (proposals welcome), but ultimately when we know we can't reliably distinguish problem situations, or can only detect a minor fraction of them, we're also okay giving up and recommending people use electric-pair-mode for better experience.
> 
> Right. In that case I think I'm fine with just closing this one too.
> 
> It's not causing issues for me on a day-to-day basis, only on a completely clean setup, and I honestly don't think too many programmers are using Emacs that way.

OK, closing.





^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-08-17 10:11 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-18 21:05 bug#72184: 31.0.50; typescript-ts-mode does not bind RET to newline-and-indent Jostein Kjønigsen
2024-07-18 21:30 ` Andrea Corallo
2024-07-20  0:22   ` Dmitry Gutov
2024-07-27  7:21     ` Eli Zaretskii
2024-07-27 11:50       ` Jostein Kjønigsen
2024-07-27 12:20         ` Eli Zaretskii
2024-07-31  8:55       ` Jostein Kjønigsen
2024-08-01  0:42         ` Dmitry Gutov
2024-08-15 10:03           ` Jostein Kjønigsen
2024-08-17 10:11             ` Eli Zaretskii

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.