GNU bug report logs - #77094
31.0.50; yaml-ts-mode does not indent after yaml mapping keys

Previous Next

Package: emacs;

Reported by: the_wurfkreuz <the_wurfkreuz <at> proton.me>

Date: Tue, 18 Mar 2025 07:42:02 UTC

Severity: normal

Found in version 31.0.50

To reply to this bug, email your comments to 77094 AT debbugs.gnu.org.

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#77094; Package emacs. (Tue, 18 Mar 2025 07:42:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to the_wurfkreuz <the_wurfkreuz <at> proton.me>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 18 Mar 2025 07:42:03 GMT) Full text and rfc822 format available.

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

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: "bug-gnu-emacs <at> gnu.org" <bug-gnu-emacs <at> gnu.org>
Subject: 31.0.50; yaml-ts-mode does not indent after yaml mapping keys
Date: Tue, 18 Mar 2025 07:40:48 +0000
[Message part 1 (text/plain, inline)]
If i have a yaml file with this content:

```
apiVersion: v1
kind: Service
metadata:
```

And i try to create a new line executing the `newline` command from the end
of the 'metadata:' line, the newly created line wont be indented:

```
apiVersion: v1
kind: Service
metadata:
following_text
```

But in the yaml-mode and any other text editor i've tried, it always
indents after mapping keys like this:

```
apiVersion: v1
kind: Service
metadata:
following_text
```

Steps to reproduce:
1. emacs -Q
2. Interactively install the yaml treesitter grammar (i've compiled from this repo https://github.com/ikatyang/tree-sitter-yaml)
3. M-x yaml-ts-mode
4. Clean the scratch buffer and paste this:

apiVersion: v1
kind: Service
metadata:

5. Move the cursor to the 'metadata:' line. Use `move-end-of-line` and
`newline` commands.

The cursor isn't indented and placed at the very start of the next line.
I expect it to be indented.

In GNU Emacs 31.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version
3.24.43, cairo version 1.18.0) of 2025-03-17 built on ub-void
Repository revision: d708ebe401a2001e764821b7e43d9e9aaa23ea95
Repository branch: master
System Description: Void Linux

Configured using:
'configure --with-native-compilation=aot --with-tree-sitter --with-gif
--with-png --with-jpeg --with-rsvg --with-tiff --with-imagemagick
--with-pgtk --with-mailutils'

Configured features:
CAIRO DBUS FREETYPE GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK JPEG
LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG RSVG
SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP
XIM GTK3 ZLIB

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

Major mode: Elisp/d

Minor modes in effect:
savehist-mode: t
meow-global-mode: t
meow-mode: t
meow-normal-mode: t
meow-esc-mode: t
envrc-global-mode: t
envrc-mode: t
buffer-terminator-mode: t
global-git-commit-mode: t
magit-auto-revert-mode: t
marginalia-mode: t
vertico-mode: t
corfu-popupinfo-mode: t
corfu-history-mode: t
corfu-echo-mode: t
global-corfu-mode: t
corfu-mode: t
which-key-mode: t
undo-fu-session-global-mode: t
undo-fu-session-mode: t
global-treesit-auto-mode: t
global-auto-revert-mode: t
save-place-mode: t
electric-pair-mode: t
recentf-mode: t
global-display-line-numbers-mode: t
display-line-numbers-mode: t
override-global-mode: t
tooltip-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tab-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
minibuffer-regexp-mode: t
line-number-mode: t
indent-tabs-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t

Load-path shadows:
~/.source/org-mode/lisp/ob-shell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-shell
~/.source/org-mode/lisp/org-id hides /home/wurfkreuz/.source/emacs/lisp/org/org-id
~/.source/org-mode/lisp/ob-haskell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-haskell
~/.source/org-mode/lisp/org-macro hides /home/wurfkreuz/.source/emacs/lisp/org/org-macro
~/.source/org-mode/lisp/oc-natbib hides /home/wurfkreuz/.source/emacs/lisp/org/oc-natbib
~/.source/org-mode/lisp/org-loaddefs hides /home/wurfkreuz/.source/emacs/lisp/org/org-loaddefs
~/.source/org-mode/lisp/org-pcomplete hides /home/wurfkreuz/.source/emacs/lisp/org/org-pcomplete
~/.source/org-mode/lisp/ol-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eshell
~/.source/org-mode/lisp/ob-groovy hides /home/wurfkreuz/.source/emacs/lisp/org/ob-groovy
~/.source/org-mode/lisp/ob-awk hides /home/wurfkreuz/.source/emacs/lisp/org/ob-awk
~/.source/org-mode/lisp/org-habit hides /home/wurfkreuz/.source/emacs/lisp/org/org-habit
~/.source/org-mode/lisp/ob-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eshell
~/.source/org-mode/lisp/org-feed hides /home/wurfkreuz/.source/emacs/lisp/org/org-feed
~/.source/org-mode/lisp/org-element-ast hides /home/wurfkreuz/.source/emacs/lisp/org/org-element-ast
~/.source/org-mode/lisp/org-lint hides /home/wurfkreuz/.source/emacs/lisp/org/org-lint
~/.source/org-mode/lisp/ob-fortran hides /home/wurfkreuz/.source/emacs/lisp/org/ob-fortran
~/.source/org-mode/lisp/org-crypt hides /home/wurfkreuz/.source/emacs/lisp/org/org-crypt
~/.source/org-mode/lisp/ol-docview hides /home/wurfkreuz/.source/emacs/lisp/org/ol-docview
~/.source/org-mode/lisp/ob-java hides /home/wurfkreuz/.source/emacs/lisp/org/ob-java
~/.source/org-mode/lisp/ob-octave hides /home/wurfkreuz/.source/emacs/lisp/org/ob-octave
~/.source/org-mode/lisp/ob-makefile hides /home/wurfkreuz/.source/emacs/lisp/org/ob-makefile
~/.source/org-mode/lisp/org-table hides /home/wurfkreuz/.source/emacs/lisp/org/org-table
~/.source/org-mode/lisp/org-duration hides /home/wurfkreuz/.source/emacs/lisp/org/org-duration
~/.source/org-mode/lisp/ob-maxima hides /home/wurfkreuz/.source/emacs/lisp/org/ob-maxima
~/.source/org-mode/lisp/ob-sqlite hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sqlite
~/.source/org-mode/lisp/org-fold hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold
~/.source/org-mode/lisp/org-timer hides /home/wurfkreuz/.source/emacs/lisp/org/org-timer
~/.source/org-mode/lisp/ob-sed hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sed
~/.source/org-mode/lisp/ob-table hides /home/wurfkreuz/.source/emacs/lisp/org/ob-table
~/.source/org-mode/lisp/ob-plantuml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-plantuml
~/.source/org-mode/lisp/org-element hides /home/wurfkreuz/.source/emacs/lisp/org/org-element
~/.source/org-mode/lisp/ol-w3m hides /home/wurfkreuz/.source/emacs/lisp/org/ol-w3m
~/.source/org-mode/lisp/org-src hides /home/wurfkreuz/.source/emacs/lisp/org/org-src
~/.source/org-mode/lisp/ob-lua hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lua
~/.source/org-mode/lisp/org-indent hides /home/wurfkreuz/.source/emacs/lisp/org/org-indent
~/.source/org-mode/lisp/ox-publish hides /home/wurfkreuz/.source/emacs/lisp/org/ox-publish
~/.source/org-mode/lisp/ox-odt hides /home/wurfkreuz/.source/emacs/lisp/org/ox-odt
~/.source/org-mode/lisp/ol-bbdb hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bbdb
~/.source/org-mode/lisp/oc hides /home/wurfkreuz/.source/emacs/lisp/org/oc
~/.source/org-mode/lisp/org-cycle hides /home/wurfkreuz/.source/emacs/lisp/org/org-cycle
~/.source/org-mode/lisp/org-persist hides /home/wurfkreuz/.source/emacs/lisp/org/org-persist
~/.source/org-mode/lisp/ol-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bibtex
~/.source/org-mode/lisp/ol-irc hides /home/wurfkreuz/.source/emacs/lisp/org/ol-irc
~/.source/org-mode/lisp/ob-python hides /home/wurfkreuz/.source/emacs/lisp/org/ob-python
~/.source/org-mode/lisp/ob-core hides /home/wurfkreuz/.source/emacs/lisp/org/ob-core
~/.source/org-mode/lisp/ob-lob hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lob
~/.source/org-mode/lisp/org-version hides /home/wurfkreuz/.source/emacs/lisp/org/org-version
~/.source/org-mode/lisp/org-datetree hides /home/wurfkreuz/.source/emacs/lisp/org/org-datetree
~/.source/org-mode/lisp/oc-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-bibtex
~/.source/org-mode/lisp/ol-rmail hides /home/wurfkreuz/.source/emacs/lisp/org/ol-rmail
~/.source/org-mode/lisp/ob-julia hides /home/wurfkreuz/.source/emacs/lisp/org/ob-julia
~/.source/org-mode/lisp/org-attach-git hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach-git
~/.source/org-mode/lisp/ox-ascii hides /home/wurfkreuz/.source/emacs/lisp/org/ox-ascii
~/.source/org-mode/lisp/ob-exp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-exp
~/.source/org-mode/lisp/ox-man hides /home/wurfkreuz/.source/emacs/lisp/org/ox-man
~/.source/org-mode/lisp/ox-koma-letter hides /home/wurfkreuz/.source/emacs/lisp/org/ox-koma-letter
~/.source/org-mode/lisp/ob hides /home/wurfkreuz/.source/emacs/lisp/org/ob
~/.source/org-mode/lisp/ox-org hides /home/wurfkreuz/.source/emacs/lisp/org/ox-org
~/.source/org-mode/lisp/org-clock hides /home/wurfkreuz/.source/emacs/lisp/org/org-clock
~/.source/org-mode/lisp/ob-dot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-dot
~/.source/org-mode/lisp/org-inlinetask hides /home/wurfkreuz/.source/emacs/lisp/org/org-inlinetask
~/.source/org-mode/lisp/ob-screen hides /home/wurfkreuz/.source/emacs/lisp/org/ob-screen
~/.source/org-mode/lisp/ol-eww hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eww
~/.source/org-mode/lisp/ob-perl hides /home/wurfkreuz/.source/emacs/lisp/org/ob-perl
~/.source/org-mode/lisp/org hides /home/wurfkreuz/.source/emacs/lisp/org/org
~/.source/org-mode/lisp/ob-gnuplot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-gnuplot
~/.source/org-mode/lisp/ob-ruby hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ruby
~/.source/org-mode/lisp/oc-biblatex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-biblatex
~/.source/org-mode/lisp/ob-forth hides /home/wurfkreuz/.source/emacs/lisp/org/ob-forth
~/.source/org-mode/lisp/org-mobile hides /home/wurfkreuz/.source/emacs/lisp/org/org-mobile
~/.source/org-mode/lisp/ol-gnus hides /home/wurfkreuz/.source/emacs/lisp/org/ol-gnus
~/.source/org-mode/lisp/ob-ref hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ref
~/.source/org-mode/lisp/org-attach hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach
~/.source/org-mode/lisp/org-capture hides /home/wurfkreuz/.source/emacs/lisp/org/org-capture
~/.source/org-mode/lisp/ox-icalendar hides /home/wurfkreuz/.source/emacs/lisp/org/ox-icalendar
~/.source/org-mode/lisp/org-plot hides /home/wurfkreuz/.source/emacs/lisp/org/org-plot
~/.source/org-mode/lisp/org-goto hides /home/wurfkreuz/.source/emacs/lisp/org/org-goto
~/.source/org-mode/lisp/ol hides /home/wurfkreuz/.source/emacs/lisp/org/ol
~/.source/org-mode/lisp/ox-texinfo hides /home/wurfkreuz/.source/emacs/lisp/org/ox-texinfo
~/.source/org-mode/lisp/oc-basic hides /home/wurfkreuz/.source/emacs/lisp/org/oc-basic
~/.source/org-mode/lisp/org-faces hides /home/wurfkreuz/.source/emacs/lisp/org/org-faces
~/.source/org-mode/lisp/oc-csl hides /home/wurfkreuz/.source/emacs/lisp/org/oc-csl
~/.source/org-mode/lisp/org-ctags hides /home/wurfkreuz/.source/emacs/lisp/org/org-ctags
~/.source/org-mode/lisp/ob-clojure hides /home/wurfkreuz/.source/emacs/lisp/org/ob-clojure
~/.source/org-mode/lisp/ob-js hides /home/wurfkreuz/.source/emacs/lisp/org/ob-js
~/.source/org-mode/lisp/ob-processing hides /home/wurfkreuz/.source/emacs/lisp/org/ob-processing
~/.source/org-mode/lisp/ox hides /home/wurfkreuz/.source/emacs/lisp/org/ox
~/.source/org-mode/lisp/ob-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ob-latex
~/.source/org-mode/lisp/ob-matlab hides /home/wurfkreuz/.source/emacs/lisp/org/ob-matlab
~/.source/org-mode/lisp/ox-html hides /home/wurfkreuz/.source/emacs/lisp/org/ox-html
~/.source/org-mode/lisp/org-macs hides /home/wurfkreuz/.source/emacs/lisp/org/org-macs
~/.source/org-mode/lisp/ob-C hides /home/wurfkreuz/.source/emacs/lisp/org/ob-C
~/.source/org-mode/lisp/ol-info hides /home/wurfkreuz/.source/emacs/lisp/org/ol-info
~/.source/org-mode/lisp/org-protocol hides /home/wurfkreuz/.source/emacs/lisp/org/org-protocol
~/.source/org-mode/lisp/org-keys hides /home/wurfkreuz/.source/emacs/lisp/org/org-keys
~/.source/org-mode/lisp/ob-eval hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eval
~/.source/org-mode/lisp/ob-R hides /home/wurfkreuz/.source/emacs/lisp/org/ob-R
~/.source/org-mode/lisp/ob-tangle hides /home/wurfkreuz/.source/emacs/lisp/org/ob-tangle
~/.source/org-mode/lisp/org-colview hides /home/wurfkreuz/.source/emacs/lisp/org/org-colview
~/.source/org-mode/lisp/ob-scheme hides /home/wurfkreuz/.source/emacs/lisp/org/ob-scheme
~/.source/org-mode/lisp/ob-org hides /home/wurfkreuz/.source/emacs/lisp/org/ob-org
~/.source/org-mode/lisp/ob-ditaa hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ditaa
~/.source/org-mode/lisp/ob-sql hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sql
~/.source/org-mode/lisp/ol-man hides /home/wurfkreuz/.source/emacs/lisp/org/ol-man
~/.source/org-mode/lisp/org-agenda hides /home/wurfkreuz/.source/emacs/lisp/org/org-agenda
~/.source/org-mode/lisp/ob-lilypond hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lilypond
~/.source/org-mode/lisp/ob-emacs-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-emacs-lisp
~/.source/org-mode/lisp/org-mouse hides /home/wurfkreuz/.source/emacs/lisp/org/org-mouse
~/.source/org-mode/lisp/ob-calc hides /home/wurfkreuz/.source/emacs/lisp/org/ob-calc
~/.source/org-mode/lisp/ob-css hides /home/wurfkreuz/.source/emacs/lisp/org/ob-css
~/.source/org-mode/lisp/org-num hides /home/wurfkreuz/.source/emacs/lisp/org/org-num
~/.source/org-mode/lisp/ox-beamer hides /home/wurfkreuz/.source/emacs/lisp/org/ox-beamer
~/.source/org-mode/lisp/org-tempo hides /home/wurfkreuz/.source/emacs/lisp/org/org-tempo
~/.source/org-mode/lisp/ox-md hides /home/wurfkreuz/.source/emacs/lisp/org/ox-md
~/.source/org-mode/lisp/ol-mhe hides /home/wurfkreuz/.source/emacs/lisp/org/ol-mhe
~/.source/org-mode/lisp/org-archive hides /home/wurfkreuz/.source/emacs/lisp/org/org-archive
~/.source/org-mode/lisp/ob-sass hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sass
~/.source/org-mode/lisp/org-refile hides /home/wurfkreuz/.source/emacs/lisp/org/org-refile
~/.source/org-mode/lisp/ol-doi hides /home/wurfkreuz/.source/emacs/lisp/org/ol-doi
~/.source/org-mode/lisp/ox-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ox-latex
~/.source/org-mode/lisp/org-entities hides /home/wurfkreuz/.source/emacs/lisp/org/org-entities
~/.source/org-mode/lisp/ob-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lisp
~/.source/org-mode/lisp/org-list hides /home/wurfkreuz/.source/emacs/lisp/org/org-list
~/.source/org-mode/lisp/ob-comint hides /home/wurfkreuz/.source/emacs/lisp/org/ob-comint
~/.source/org-mode/lisp/org-footnote hides /home/wurfkreuz/.source/emacs/lisp/org/org-footnote
~/.source/org-mode/lisp/ob-ocaml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ocaml
~/.source/org-mode/lisp/org-compat hides /home/wurfkreuz/.source/emacs/lisp/org/org-compat
~/.source/org-mode/lisp/org-fold-core hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold-core

Features:
(shadow sort mail-extr emacsbug lisp-mnt help-fns radix-tree tramp-cmds
image-file image-converter org-appear oc-basic ol-eww eww vtable
mule-util url-queue mm-url 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 shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo
gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7
nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader range
ol-docview doc-view image-mode exif ol-bibtex bibtex ol-bbdb ol-w3m
ol-doi org-link-doi dired-aux json-ts-mode yaml-ts-mode vc-git
vc-dispatcher jka-compr savehist f eshell em-tramp esh-cmd esh-ext
esh-proc esh-opt esh-io esh-arg esh-module esh-module-loaddefs esh-util
meow meow-tutor meow-cheatsheet meow-cheatsheet-layout meow-core
meow-shims meow-esc meow-command array meow-thing meow-visual
meow-keypad meow-beacon meow-helpers meow-util meow-keymap meow-face
meow-var delsel org-tempo tempo org-drill persist org-agenda embark-org
org-element org-persist org-id org-refile org-element-ast inline
avl-tree org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-src ob-comint org-pcomplete org-list org-footnote org-faces
org-entities 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 eglot external-completion
jsonrpc xref ert ewoc debug backtrace kdl-mode generic markdown-mode
color nix-mode nix-repl nix-shell nix-store nix-log nix-instantiate
nix-shebang nix-format nix yaml-mode dockerfile-mode terraform-mode
noutline outline hcl-mode lua-mode perl-mode flymake envrc inheritenv
buffer-terminator magit-bookmark magit-submodule magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
which-func imenu magit-diff git-commit log-edit message sendmail
yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config
gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
mailheader pcvs-util add-log magit-core magit-autorevert magit-margin
magit-transient magit-process magit-mode benchmark magit-git magit-base
magit-section cursor-sensor crm llama nerd-icons nerd-icons-faces
nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon
nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon
nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline
nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon
smerge-mode diff-mode track-changes diff hydra lv with-editor server
embark-consult embark ffap thingatpt consult bookmark marginalia vertico
project cape corfu-popupinfo corfu-history corfu-echo corfu orderless
compat wgrep grep compile text-property-search which-key docker
docker-context docker-volume docker-network docker-image
docker-container docker-faces docker-core docker-compose docker-process
docker-utils tablist tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local find-func cedet dired
dired-loaddefs tramp trampver tramp-integration files-x tramp-message
tramp-compat shell pcomplete comint ansi-osc ring parse-time iso8601
time-date ansi-color tramp-loaddefs docker-group transient format-spec
edmacro kmacro dash aio generator s advice goto-chg undo-fu-session
undo-fu zig-ts-mode clojure-ts-mode treesit-auto crontab-mode sh-script
smie treesit executable rose-pine-theme cus-edit pp cus-load midnight
autorevert filenotify saveplace desktop frameset elec-pair recentf
tree-widget wid-edit comp comp-cstr warnings comp-run comp-common rx
display-line-numbers cl-extra help-mode use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
easy-mmode use-package-core finder-inf buffer-terminator-autoloads
cape-autoloads clojure-ts-mode-autoloads corfu-autoloads
crontab-mode-autoloads docker-autoloads aio-autoloads
dockerfile-mode-autoloads embark-consult-autoloads consult-autoloads
embark-autoloads envrc-autoloads f-autoloads goto-chg-autoloads
hydra-autoloads inheritenv-autoloads lua-mode-autoloads lv-autoloads
magit-autoloads pcase marginalia-autoloads markdown-mode-autoloads
meow-autoloads nerd-icons-autoloads nix-mode-autoloads
magit-section-autoloads llama-autoloads orderless-autoloads
org-appear-autoloads org-drill-autoloads persist-autoloads s-autoloads
tablist-autoloads tempel-autoloads terraform-mode-autoloads
dash-autoloads hcl-mode-autoloads treesit-auto-autoloads
undo-fu-autoloads undo-fu-session-autoloads vertico-autoloads
wgrep-autoloads info with-editor-autoloads yaml-mode-autoloads
zig-ts-mode-autoloads package browse-url xdg 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/pgtk-win pgtk-win term/common-win
touch-screen pgtk-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 dynamic-setting system-font-setting
font-render-setting cairo gtk pgtk lcms2 multi-tty move-toolbar
make-network-process tty-child-frames native-compile emacs)

Memory information:
((conses 16 823215 72018) (symbols 48 51010 3) (strings 32 257212 6009)
(string-bytes 1 7392201) (vectors 16 86169) (vector-slots 8 1032260 27981)
(floats 8 691 74) (intervals 56 1040 108) (buffers 992 24))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Tue, 18 Mar 2025 09:11:04 GMT) Full text and rfc822 format available.

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

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: "bug-gnu-emacs <at> gnu.org" <bug-gnu-emacs <at> gnu.org>
Subject: Re: 31.0.50; yaml-ts-mode does not indent after yaml mapping keys
Date: Tue, 18 Mar 2025 09:10:04 +0000
[Message part 1 (text/plain, inline)]
Also, in situations where there is an indentation applied, the mode uses whitespaces instead of tabs.

On Tuesday, March 18th, 2025 at 7:40 AM, the_wurfkreuz <the_wurfkreuz <at> proton.me> wrote:

> If i have a yaml file with this content:
>
> ```
> apiVersion: v1
> kind: Service
> metadata:
> ```
>
> And i try to create a new line executing the `newline` command from the end
> of the 'metadata:' line, the newly created line wont be indented:
>
> ```
> apiVersion: v1
> kind: Service
> metadata:
> following_text
> ```
>
> But in the yaml-mode and any other text editor i've tried, it always
> indents after mapping keys like this:
>
> ```
> apiVersion: v1
> kind: Service
> metadata:
> following_text
> ```
>
> Steps to reproduce:
> 1. emacs -Q
> 2. Interactively install the yaml treesitter grammar (i've compiled from this repo https://github.com/ikatyang/tree-sitter-yaml)
> 3. M-x yaml-ts-mode
> 4. Clean the scratch buffer and paste this:
>
> apiVersion: v1
> kind: Service
> metadata:
>
> 5. Move the cursor to the 'metadata:' line. Use `move-end-of-line` and
> `newline` commands.
>
> The cursor isn't indented and placed at the very start of the next line.
> I expect it to be indented.
>
> In GNU Emacs 31.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version
> 3.24.43, cairo version 1.18.0) of 2025-03-17 built on ub-void
> Repository revision: d708ebe401a2001e764821b7e43d9e9aaa23ea95
> Repository branch: master
> System Description: Void Linux
>
> Configured using:
> 'configure --with-native-compilation=aot --with-tree-sitter --with-gif
> --with-png --with-jpeg --with-rsvg --with-tiff --with-imagemagick
> --with-pgtk --with-mailutils'
>
> Configured features:
> CAIRO DBUS FREETYPE GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK JPEG
> LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG RSVG
> SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP
> XIM GTK3 ZLIB
>
> Important settings:
> value of $LC_COLLATE: C
> value of $LANG: en_US.UTF-8
> locale-coding-system: utf-8-unix
>
> Major mode: Elisp/d
>
> Minor modes in effect:
> savehist-mode: t
> meow-global-mode: t
> meow-mode: t
> meow-normal-mode: t
> meow-esc-mode: t
> envrc-global-mode: t
> envrc-mode: t
> buffer-terminator-mode: t
> global-git-commit-mode: t
> magit-auto-revert-mode: t
> marginalia-mode: t
> vertico-mode: t
> corfu-popupinfo-mode: t
> corfu-history-mode: t
> corfu-echo-mode: t
> global-corfu-mode: t
> corfu-mode: t
> which-key-mode: t
> undo-fu-session-global-mode: t
> undo-fu-session-mode: t
> global-treesit-auto-mode: t
> global-auto-revert-mode: t
> save-place-mode: t
> electric-pair-mode: t
> recentf-mode: t
> global-display-line-numbers-mode: t
> display-line-numbers-mode: t
> override-global-mode: t
> tooltip-mode: t
> show-paren-mode: t
> electric-indent-mode: t
> mouse-wheel-mode: t
> tab-bar-mode: t
> file-name-shadow-mode: t
> global-font-lock-mode: t
> font-lock-mode: t
> minibuffer-regexp-mode: t
> line-number-mode: t
> indent-tabs-mode: t
> transient-mark-mode: t
> auto-composition-mode: t
> auto-encryption-mode: t
> auto-compression-mode: t
>
> Load-path shadows:
> ~/.source/org-mode/lisp/ob-shell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-shell
> ~/.source/org-mode/lisp/org-id hides /home/wurfkreuz/.source/emacs/lisp/org/org-id
> ~/.source/org-mode/lisp/ob-haskell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-haskell
> ~/.source/org-mode/lisp/org-macro hides /home/wurfkreuz/.source/emacs/lisp/org/org-macro
> ~/.source/org-mode/lisp/oc-natbib hides /home/wurfkreuz/.source/emacs/lisp/org/oc-natbib
> ~/.source/org-mode/lisp/org-loaddefs hides /home/wurfkreuz/.source/emacs/lisp/org/org-loaddefs
> ~/.source/org-mode/lisp/org-pcomplete hides /home/wurfkreuz/.source/emacs/lisp/org/org-pcomplete
> ~/.source/org-mode/lisp/ol-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eshell
> ~/.source/org-mode/lisp/ob-groovy hides /home/wurfkreuz/.source/emacs/lisp/org/ob-groovy
> ~/.source/org-mode/lisp/ob-awk hides /home/wurfkreuz/.source/emacs/lisp/org/ob-awk
> ~/.source/org-mode/lisp/org-habit hides /home/wurfkreuz/.source/emacs/lisp/org/org-habit
> ~/.source/org-mode/lisp/ob-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eshell
> ~/.source/org-mode/lisp/org-feed hides /home/wurfkreuz/.source/emacs/lisp/org/org-feed
> ~/.source/org-mode/lisp/org-element-ast hides /home/wurfkreuz/.source/emacs/lisp/org/org-element-ast
> ~/.source/org-mode/lisp/org-lint hides /home/wurfkreuz/.source/emacs/lisp/org/org-lint
> ~/.source/org-mode/lisp/ob-fortran hides /home/wurfkreuz/.source/emacs/lisp/org/ob-fortran
> ~/.source/org-mode/lisp/org-crypt hides /home/wurfkreuz/.source/emacs/lisp/org/org-crypt
> ~/.source/org-mode/lisp/ol-docview hides /home/wurfkreuz/.source/emacs/lisp/org/ol-docview
> ~/.source/org-mode/lisp/ob-java hides /home/wurfkreuz/.source/emacs/lisp/org/ob-java
> ~/.source/org-mode/lisp/ob-octave hides /home/wurfkreuz/.source/emacs/lisp/org/ob-octave
> ~/.source/org-mode/lisp/ob-makefile hides /home/wurfkreuz/.source/emacs/lisp/org/ob-makefile
> ~/.source/org-mode/lisp/org-table hides /home/wurfkreuz/.source/emacs/lisp/org/org-table
> ~/.source/org-mode/lisp/org-duration hides /home/wurfkreuz/.source/emacs/lisp/org/org-duration
> ~/.source/org-mode/lisp/ob-maxima hides /home/wurfkreuz/.source/emacs/lisp/org/ob-maxima
> ~/.source/org-mode/lisp/ob-sqlite hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sqlite
> ~/.source/org-mode/lisp/org-fold hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold
> ~/.source/org-mode/lisp/org-timer hides /home/wurfkreuz/.source/emacs/lisp/org/org-timer
> ~/.source/org-mode/lisp/ob-sed hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sed
> ~/.source/org-mode/lisp/ob-table hides /home/wurfkreuz/.source/emacs/lisp/org/ob-table
> ~/.source/org-mode/lisp/ob-plantuml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-plantuml
> ~/.source/org-mode/lisp/org-element hides /home/wurfkreuz/.source/emacs/lisp/org/org-element
> ~/.source/org-mode/lisp/ol-w3m hides /home/wurfkreuz/.source/emacs/lisp/org/ol-w3m
> ~/.source/org-mode/lisp/org-src hides /home/wurfkreuz/.source/emacs/lisp/org/org-src
> ~/.source/org-mode/lisp/ob-lua hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lua
> ~/.source/org-mode/lisp/org-indent hides /home/wurfkreuz/.source/emacs/lisp/org/org-indent
> ~/.source/org-mode/lisp/ox-publish hides /home/wurfkreuz/.source/emacs/lisp/org/ox-publish
> ~/.source/org-mode/lisp/ox-odt hides /home/wurfkreuz/.source/emacs/lisp/org/ox-odt
> ~/.source/org-mode/lisp/ol-bbdb hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bbdb
> ~/.source/org-mode/lisp/oc hides /home/wurfkreuz/.source/emacs/lisp/org/oc
> ~/.source/org-mode/lisp/org-cycle hides /home/wurfkreuz/.source/emacs/lisp/org/org-cycle
> ~/.source/org-mode/lisp/org-persist hides /home/wurfkreuz/.source/emacs/lisp/org/org-persist
> ~/.source/org-mode/lisp/ol-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bibtex
> ~/.source/org-mode/lisp/ol-irc hides /home/wurfkreuz/.source/emacs/lisp/org/ol-irc
> ~/.source/org-mode/lisp/ob-python hides /home/wurfkreuz/.source/emacs/lisp/org/ob-python
> ~/.source/org-mode/lisp/ob-core hides /home/wurfkreuz/.source/emacs/lisp/org/ob-core
> ~/.source/org-mode/lisp/ob-lob hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lob
> ~/.source/org-mode/lisp/org-version hides /home/wurfkreuz/.source/emacs/lisp/org/org-version
> ~/.source/org-mode/lisp/org-datetree hides /home/wurfkreuz/.source/emacs/lisp/org/org-datetree
> ~/.source/org-mode/lisp/oc-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-bibtex
> ~/.source/org-mode/lisp/ol-rmail hides /home/wurfkreuz/.source/emacs/lisp/org/ol-rmail
> ~/.source/org-mode/lisp/ob-julia hides /home/wurfkreuz/.source/emacs/lisp/org/ob-julia
> ~/.source/org-mode/lisp/org-attach-git hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach-git
> ~/.source/org-mode/lisp/ox-ascii hides /home/wurfkreuz/.source/emacs/lisp/org/ox-ascii
> ~/.source/org-mode/lisp/ob-exp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-exp
> ~/.source/org-mode/lisp/ox-man hides /home/wurfkreuz/.source/emacs/lisp/org/ox-man
> ~/.source/org-mode/lisp/ox-koma-letter hides /home/wurfkreuz/.source/emacs/lisp/org/ox-koma-letter
> ~/.source/org-mode/lisp/ob hides /home/wurfkreuz/.source/emacs/lisp/org/ob
> ~/.source/org-mode/lisp/ox-org hides /home/wurfkreuz/.source/emacs/lisp/org/ox-org
> ~/.source/org-mode/lisp/org-clock hides /home/wurfkreuz/.source/emacs/lisp/org/org-clock
> ~/.source/org-mode/lisp/ob-dot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-dot
> ~/.source/org-mode/lisp/org-inlinetask hides /home/wurfkreuz/.source/emacs/lisp/org/org-inlinetask
> ~/.source/org-mode/lisp/ob-screen hides /home/wurfkreuz/.source/emacs/lisp/org/ob-screen
> ~/.source/org-mode/lisp/ol-eww hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eww
> ~/.source/org-mode/lisp/ob-perl hides /home/wurfkreuz/.source/emacs/lisp/org/ob-perl
> ~/.source/org-mode/lisp/org hides /home/wurfkreuz/.source/emacs/lisp/org/org
> ~/.source/org-mode/lisp/ob-gnuplot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-gnuplot
> ~/.source/org-mode/lisp/ob-ruby hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ruby
> ~/.source/org-mode/lisp/oc-biblatex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-biblatex
> ~/.source/org-mode/lisp/ob-forth hides /home/wurfkreuz/.source/emacs/lisp/org/ob-forth
> ~/.source/org-mode/lisp/org-mobile hides /home/wurfkreuz/.source/emacs/lisp/org/org-mobile
> ~/.source/org-mode/lisp/ol-gnus hides /home/wurfkreuz/.source/emacs/lisp/org/ol-gnus
> ~/.source/org-mode/lisp/ob-ref hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ref
> ~/.source/org-mode/lisp/org-attach hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach
> ~/.source/org-mode/lisp/org-capture hides /home/wurfkreuz/.source/emacs/lisp/org/org-capture
> ~/.source/org-mode/lisp/ox-icalendar hides /home/wurfkreuz/.source/emacs/lisp/org/ox-icalendar
> ~/.source/org-mode/lisp/org-plot hides /home/wurfkreuz/.source/emacs/lisp/org/org-plot
> ~/.source/org-mode/lisp/org-goto hides /home/wurfkreuz/.source/emacs/lisp/org/org-goto
> ~/.source/org-mode/lisp/ol hides /home/wurfkreuz/.source/emacs/lisp/org/ol
> ~/.source/org-mode/lisp/ox-texinfo hides /home/wurfkreuz/.source/emacs/lisp/org/ox-texinfo
> ~/.source/org-mode/lisp/oc-basic hides /home/wurfkreuz/.source/emacs/lisp/org/oc-basic
> ~/.source/org-mode/lisp/org-faces hides /home/wurfkreuz/.source/emacs/lisp/org/org-faces
> ~/.source/org-mode/lisp/oc-csl hides /home/wurfkreuz/.source/emacs/lisp/org/oc-csl
> ~/.source/org-mode/lisp/org-ctags hides /home/wurfkreuz/.source/emacs/lisp/org/org-ctags
> ~/.source/org-mode/lisp/ob-clojure hides /home/wurfkreuz/.source/emacs/lisp/org/ob-clojure
> ~/.source/org-mode/lisp/ob-js hides /home/wurfkreuz/.source/emacs/lisp/org/ob-js
> ~/.source/org-mode/lisp/ob-processing hides /home/wurfkreuz/.source/emacs/lisp/org/ob-processing
> ~/.source/org-mode/lisp/ox hides /home/wurfkreuz/.source/emacs/lisp/org/ox
> ~/.source/org-mode/lisp/ob-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ob-latex
> ~/.source/org-mode/lisp/ob-matlab hides /home/wurfkreuz/.source/emacs/lisp/org/ob-matlab
> ~/.source/org-mode/lisp/ox-html hides /home/wurfkreuz/.source/emacs/lisp/org/ox-html
> ~/.source/org-mode/lisp/org-macs hides /home/wurfkreuz/.source/emacs/lisp/org/org-macs
> ~/.source/org-mode/lisp/ob-C hides /home/wurfkreuz/.source/emacs/lisp/org/ob-C
> ~/.source/org-mode/lisp/ol-info hides /home/wurfkreuz/.source/emacs/lisp/org/ol-info
> ~/.source/org-mode/lisp/org-protocol hides /home/wurfkreuz/.source/emacs/lisp/org/org-protocol
> ~/.source/org-mode/lisp/org-keys hides /home/wurfkreuz/.source/emacs/lisp/org/org-keys
> ~/.source/org-mode/lisp/ob-eval hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eval
> ~/.source/org-mode/lisp/ob-R hides /home/wurfkreuz/.source/emacs/lisp/org/ob-R
> ~/.source/org-mode/lisp/ob-tangle hides /home/wurfkreuz/.source/emacs/lisp/org/ob-tangle
> ~/.source/org-mode/lisp/org-colview hides /home/wurfkreuz/.source/emacs/lisp/org/org-colview
> ~/.source/org-mode/lisp/ob-scheme hides /home/wurfkreuz/.source/emacs/lisp/org/ob-scheme
> ~/.source/org-mode/lisp/ob-org hides /home/wurfkreuz/.source/emacs/lisp/org/ob-org
> ~/.source/org-mode/lisp/ob-ditaa hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ditaa
> ~/.source/org-mode/lisp/ob-sql hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sql
> ~/.source/org-mode/lisp/ol-man hides /home/wurfkreuz/.source/emacs/lisp/org/ol-man
> ~/.source/org-mode/lisp/org-agenda hides /home/wurfkreuz/.source/emacs/lisp/org/org-agenda
> ~/.source/org-mode/lisp/ob-lilypond hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lilypond
> ~/.source/org-mode/lisp/ob-emacs-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-emacs-lisp
> ~/.source/org-mode/lisp/org-mouse hides /home/wurfkreuz/.source/emacs/lisp/org/org-mouse
> ~/.source/org-mode/lisp/ob-calc hides /home/wurfkreuz/.source/emacs/lisp/org/ob-calc
> ~/.source/org-mode/lisp/ob-css hides /home/wurfkreuz/.source/emacs/lisp/org/ob-css
> ~/.source/org-mode/lisp/org-num hides /home/wurfkreuz/.source/emacs/lisp/org/org-num
> ~/.source/org-mode/lisp/ox-beamer hides /home/wurfkreuz/.source/emacs/lisp/org/ox-beamer
> ~/.source/org-mode/lisp/org-tempo hides /home/wurfkreuz/.source/emacs/lisp/org/org-tempo
> ~/.source/org-mode/lisp/ox-md hides /home/wurfkreuz/.source/emacs/lisp/org/ox-md
> ~/.source/org-mode/lisp/ol-mhe hides /home/wurfkreuz/.source/emacs/lisp/org/ol-mhe
> ~/.source/org-mode/lisp/org-archive hides /home/wurfkreuz/.source/emacs/lisp/org/org-archive
> ~/.source/org-mode/lisp/ob-sass hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sass
> ~/.source/org-mode/lisp/org-refile hides /home/wurfkreuz/.source/emacs/lisp/org/org-refile
> ~/.source/org-mode/lisp/ol-doi hides /home/wurfkreuz/.source/emacs/lisp/org/ol-doi
> ~/.source/org-mode/lisp/ox-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ox-latex
> ~/.source/org-mode/lisp/org-entities hides /home/wurfkreuz/.source/emacs/lisp/org/org-entities
> ~/.source/org-mode/lisp/ob-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lisp
> ~/.source/org-mode/lisp/org-list hides /home/wurfkreuz/.source/emacs/lisp/org/org-list
> ~/.source/org-mode/lisp/ob-comint hides /home/wurfkreuz/.source/emacs/lisp/org/ob-comint
> ~/.source/org-mode/lisp/org-footnote hides /home/wurfkreuz/.source/emacs/lisp/org/org-footnote
> ~/.source/org-mode/lisp/ob-ocaml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ocaml
> ~/.source/org-mode/lisp/org-compat hides /home/wurfkreuz/.source/emacs/lisp/org/org-compat
> ~/.source/org-mode/lisp/org-fold-core hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold-core
>
> Features:
> (shadow sort mail-extr emacsbug lisp-mnt help-fns radix-tree tramp-cmds
> image-file image-converter org-appear oc-basic ol-eww eww vtable
> mule-util url-queue mm-url 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 shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo
> gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7
> nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader range
> ol-docview doc-view image-mode exif ol-bibtex bibtex ol-bbdb ol-w3m
> ol-doi org-link-doi dired-aux json-ts-mode yaml-ts-mode vc-git
> vc-dispatcher jka-compr savehist f eshell em-tramp esh-cmd esh-ext
> esh-proc esh-opt esh-io esh-arg esh-module esh-module-loaddefs esh-util
> meow meow-tutor meow-cheatsheet meow-cheatsheet-layout meow-core
> meow-shims meow-esc meow-command array meow-thing meow-visual
> meow-keypad meow-beacon meow-helpers meow-util meow-keymap meow-face
> meow-var delsel org-tempo tempo org-drill persist org-agenda embark-org
> org-element org-persist org-id org-refile org-element-ast inline
> avl-tree org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
> org-src ob-comint org-pcomplete org-list org-footnote org-faces
> org-entities 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 eglot external-completion
> jsonrpc xref ert ewoc debug backtrace kdl-mode generic markdown-mode
> color nix-mode nix-repl nix-shell nix-store nix-log nix-instantiate
> nix-shebang nix-format nix yaml-mode dockerfile-mode terraform-mode
> noutline outline hcl-mode lua-mode perl-mode flymake envrc inheritenv
> buffer-terminator magit-bookmark magit-submodule magit-blame magit-stash
> magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
> magit-remote magit-commit magit-sequence magit-notes magit-worktree
> magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
> magit-status magit magit-repos magit-apply magit-wip magit-log
> which-func imenu magit-diff git-commit log-edit message sendmail
> yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config
> gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
> rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
> mailheader pcvs-util add-log magit-core magit-autorevert magit-margin
> magit-transient magit-process magit-mode benchmark magit-git magit-base
> magit-section cursor-sensor crm llama nerd-icons nerd-icons-faces
> nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon
> nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon
> nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline
> nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon
> smerge-mode diff-mode track-changes diff hydra lv with-editor server
> embark-consult embark ffap thingatpt consult bookmark marginalia vertico
> project cape corfu-popupinfo corfu-history corfu-echo corfu orderless
> compat wgrep grep compile text-property-search which-key docker
> docker-context docker-volume docker-network docker-image
> docker-container docker-faces docker-core docker-compose docker-process
> docker-utils tablist tablist-filter semantic/wisent/comp semantic/wisent
> semantic/wisent/wisent semantic/util-modes semantic/util semantic
> semantic/tag semantic/lex semantic/fw mode-local find-func cedet dired
> dired-loaddefs tramp trampver tramp-integration files-x tramp-message
> tramp-compat shell pcomplete comint ansi-osc ring parse-time iso8601
> time-date ansi-color tramp-loaddefs docker-group transient format-spec
> edmacro kmacro dash aio generator s advice goto-chg undo-fu-session
> undo-fu zig-ts-mode clojure-ts-mode treesit-auto crontab-mode sh-script
> smie treesit executable rose-pine-theme cus-edit pp cus-load midnight
> autorevert filenotify saveplace desktop frameset elec-pair recentf
> tree-widget wid-edit comp comp-cstr warnings comp-run comp-common rx
> display-line-numbers cl-extra help-mode use-package use-package-ensure
> use-package-delight use-package-diminish use-package-bind-key bind-key
> easy-mmode use-package-core finder-inf buffer-terminator-autoloads
> cape-autoloads clojure-ts-mode-autoloads corfu-autoloads
> crontab-mode-autoloads docker-autoloads aio-autoloads
> dockerfile-mode-autoloads embark-consult-autoloads consult-autoloads
> embark-autoloads envrc-autoloads f-autoloads goto-chg-autoloads
> hydra-autoloads inheritenv-autoloads lua-mode-autoloads lv-autoloads
> magit-autoloads pcase marginalia-autoloads markdown-mode-autoloads
> meow-autoloads nerd-icons-autoloads nix-mode-autoloads
> magit-section-autoloads llama-autoloads orderless-autoloads
> org-appear-autoloads org-drill-autoloads persist-autoloads s-autoloads
> tablist-autoloads tempel-autoloads terraform-mode-autoloads
> dash-autoloads hcl-mode-autoloads treesit-auto-autoloads
> undo-fu-autoloads undo-fu-session-autoloads vertico-autoloads
> wgrep-autoloads info with-editor-autoloads yaml-mode-autoloads
> zig-ts-mode-autoloads package browse-url xdg 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/pgtk-win pgtk-win term/common-win
> touch-screen pgtk-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 dynamic-setting system-font-setting
> font-render-setting cairo gtk pgtk lcms2 multi-tty move-toolbar
> make-network-process tty-child-frames native-compile emacs)
>
> Memory information:
> ((conses 16 823215 72018) (symbols 48 51010 3) (strings 32 257212 6009)
> (string-bytes 1 7392201) (vectors 16 86169) (vector-slots 8 1032260 27981)
> (floats 8 691 74) (intervals 56 1040 108) (buffers 992 24))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Tue, 18 Mar 2025 17:28:07 GMT) Full text and rfc822 format available.

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

From: Randy Taylor <dev <at> rjt.dev>
To: the_wurfkreuz <the_wurfkreuz <at> proton.me>
Cc: 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50;
 yaml-ts-mode does not indent after yaml mapping keys
Date: Tue, 18 Mar 2025 17:27:30 +0000
On Tuesday, March 18th, 2025 at 03:40, the_wurfkreuz via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote:
> If i have a yaml file with this content:
> ```
> apiVersion: v1
> kind: Service
> metadata:
> ```
> 
> And i try to create a new line executing the `newline` command from the end
> of the 'metadata:' line, the newly created line wont be indented:
> 
> ```
> apiVersion: v1
> kind: Service
> metadata:
> following_text
> ```
> 
> But in the yaml-mode and any other text editor i've tried, it always
> indents after mapping keys like this:
> 
> ```
> apiVersion: v1
> kind: Service
> metadata:
>   following_text
> ```
> 
> 
> Steps to reproduce:
> 1. emacs -Q
> 2. Interactively install the yaml treesitter grammar (i've compiled from this repo https://github.com/ikatyang/tree-sitter-yaml)
> 3. M-x yaml-ts-mode
> 4. Clean the scratch buffer and paste this:
> 
> apiVersion: v1
> kind: Service
> metadata:
> 
> 5. Move the cursor to the 'metadata:' line. Use `move-end-of-line` and
> `newline` commands.
> 
> The cursor isn't indented and placed at the very start of the next line.
> I expect it to be indented.
> 

Thanks for the report.

yaml-ts-mode currently doesn't supply any indentation rules.

I have been working on them on and off for a long time but could never
get them perfect due to how the grammar behaves in certain cases and
sort of lost motivation. But they say you shouldn't let perfect be the
enemy of good.

I will update and cleanup what I've been working on hopefully sometime
later this week/weekend and post it here, and will deal with whatever edge
cases as they come up.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Tue, 18 Mar 2025 17:38:02 GMT) Full text and rfc822 format available.

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

From: Randy Taylor <dev <at> rjt.dev>
To: the_wurfkreuz <the_wurfkreuz <at> proton.me>
Cc: 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50;
 yaml-ts-mode does not indent after yaml mapping keys
Date: Tue, 18 Mar 2025 17:37:03 +0000
On Tuesday, March 18th, 2025 at 05:10, the_wurfkreuz via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote:
> Also, in situations where there is an indentation applied, the mode uses whitespaces instead of tabs.

Why would you expect tabs to be used? Tabs cannot be used for
indentation in YAML.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Wed, 19 Mar 2025 06:25:04 GMT) Full text and rfc822 format available.

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

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: Randy Taylor <dev <at> rjt.dev>
Cc: 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50;
 yaml-ts-mode does not indent after yaml mapping keys
Date: Wed, 19 Mar 2025 06:24:25 +0000
But aren't they used in the yaml mode?


On Tuesday, March 18th, 2025 at 5:37 PM, Randy Taylor <dev <at> rjt.dev> wrote:

> On Tuesday, March 18th, 2025 at 05:10, the_wurfkreuz via "Bug reports for GNU Emacs, the Swiss army knife of text editors" bug-gnu-emacs <at> gnu.org wrote:
> 
> > Also, in situations where there is an indentation applied, the mode uses whitespaces instead of tabs.
> 
> 
> Why would you expect tabs to be used? Tabs cannot be used for
> indentation in YAML.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Sat, 22 Mar 2025 20:48:02 GMT) Full text and rfc822 format available.

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

From: Randy Taylor <dev <at> rjt.dev>
To: the_wurfkreuz <the_wurfkreuz <at> proton.me>
Cc: 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50;
 yaml-ts-mode does not indent after yaml mapping keys
Date: Sat, 22 Mar 2025 20:47:08 +0000
On Wednesday, March 19th, 2025 at 02:24, the_wurfkreuz <the_wurfkreuz <at> proton.me> wrote:
> 
> 
> But aren't they used in the yaml mode?

No. Why do you think so?

> 
> 
> On Tuesday, March 18th, 2025 at 5:37 PM, Randy Taylor dev <at> rjt.dev wrote:
> 
> > On Tuesday, March 18th, 2025 at 05:10, the_wurfkreuz via "Bug reports for GNU Emacs, the Swiss army knife of text editors" bug-gnu-emacs <at> gnu.org wrote:
> > 
> > > Also, in situations where there is an indentation applied, the mode uses whitespaces instead of tabs.
> > 
> > Why would you expect tabs to be used? Tabs cannot be used for
> > indentation in YAML.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Sun, 23 Mar 2025 06:01:04 GMT) Full text and rfc822 format available.

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

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: Randy Taylor <dev <at> rjt.dev>
Cc: 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50;
 yaml-ts-mode does not indent after yaml mapping keys
Date: Sun, 23 Mar 2025 06:00:13 +0000
I thought that if `delete-backward-char` removed the whole indentation, it implied it wasn't whitespace-based. Otherwise, i would expect to need to use it multiple times. So the problem is more that i need to use `delete-backward-char` several times to delete any produced indentation in yaml-ts-mode. Where in yaml-mode and any other prog modes it works differently.

On Saturday, March 22nd, 2025 at 8:47 PM, Randy Taylor <dev <at> rjt.dev> wrote:

> On Wednesday, March 19th, 2025 at 02:24, the_wurfkreuz the_wurfkreuz <at> proton.me wrote:
> 
> > But aren't they used in the yaml mode?
> 
> 
> No. Why do you think so?
> 
> > On Tuesday, March 18th, 2025 at 5:37 PM, Randy Taylor dev <at> rjt.dev wrote:
> > 
> > > On Tuesday, March 18th, 2025 at 05:10, the_wurfkreuz via "Bug reports for GNU Emacs, the Swiss army knife of text editors" bug-gnu-emacs <at> gnu.org wrote:
> > > 
> > > > Also, in situations where there is an indentation applied, the mode uses whitespaces instead of tabs.
> > > 
> > > Why would you expect tabs to be used? Tabs cannot be used for
> > > indentation in YAML.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Tue, 25 Mar 2025 05:24:02 GMT) Full text and rfc822 format available.

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

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: Randy Taylor <dev <at> rjt.dev>
Cc: 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50;
 yaml-ts-mode does not indent after yaml mapping keys
Date: Tue, 25 Mar 2025 05:23:01 +0000
I also have a question regarding one moment. Some completions of yaml schemas for yaml-language-server are multiline. For instance, when completing 'env' in a container specification using the Kubernetes schema:

```
    spec:
      containers:
      - name: postgres-container
        image: postgres:16
        env
```

It completes it this way:

```
    spec:
      containers:
      - name: postgres-container
        image: postgres:16
        env:
          - name: 
```

But that's the ideal situation with correct indentation. In reality it does that this way:

```
    spec:
      containers:
      - name: postgres-container
        image: postgres:16
        env:
  - name: 
```

Should this situation be handled by the language mode or maybe by the completion system and the language mode together?

I use this configuration for eglot:

```
(setq-default eglot-workspace-configuration
              '((yaml
                 (schemas . ((kubernetes . ["*/templates/*.yaml"
                                           "*/kubernetes/*.yaml"
                                           "*/templates/*.yml"]))))))
```






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Tue, 25 Mar 2025 08:01:02 GMT) Full text and rfc822 format available.

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

From: Juri Linkov <juri <at> linkov.net>
To: the_wurfkreuz <the_wurfkreuz <at> proton.me>
Cc: Randy Taylor <dev <at> rjt.dev>, 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50; yaml-ts-mode does not indent after yaml
 mapping keys
Date: Tue, 25 Mar 2025 09:58:32 +0200
> ```
>     spec:
>       containers:
>       - name: postgres-container
>         image: postgres:16
>         env:
>           - name: 
> ```
>
> But that's the ideal situation with correct indentation.
> In reality it does that this way:
>
> ```
>     spec:
>       containers:
>       - name: postgres-container
>         image: postgres:16
>         env:
>   - name: 
> ```
>
> Should this situation be handled by the language mode or
> maybe by the completion system and the language mode together?

Both indentations are correct.  'haml-mode' handles
this ambiguity by supporting all valid indentations, i.e.
on the first TAB it indents to the first valid position,
on the second TAB indents to another valid position, etc.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Tue, 25 Mar 2025 09:51:02 GMT) Full text and rfc822 format available.

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

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: Juri Linkov <juri <at> linkov.net>
Cc: Randy Taylor <dev <at> rjt.dev>, 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50;
 yaml-ts-mode does not indent after yaml mapping keys
Date: Tue, 25 Mar 2025 09:50:15 +0000
This means the completion will behave this way forever? 


On Tuesday, March 25th, 2025 at 10:58 AM, Juri Linkov <juri <at> linkov.net> wrote:

> > `spec: containers: - name: postgres-container image: postgres:16 env: - name:`
> > 
> > But that's the ideal situation with correct indentation.
> > In reality it does that this way:
> > 
> > `spec: containers: - name: postgres-container image: postgres:16 env: - name:`
> > 
> > Should this situation be handled by the language mode or
> > maybe by the completion system and the language mode together?
> 
> 
> Both indentations are correct. 'haml-mode' handles
> this ambiguity by supporting all valid indentations, i.e.
> on the first TAB it indents to the first valid position,
> on the second TAB indents to another valid position, etc.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Tue, 25 Mar 2025 10:04:02 GMT) Full text and rfc822 format available.

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

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: Juri Linkov <juri <at> linkov.net>
Cc: Randy Taylor <dev <at> rjt.dev>, 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50;
 yaml-ts-mode does not indent after yaml mapping keys
Date: Tue, 25 Mar 2025 10:02:43 +0000
Meaning that i would need in this situation to reindent the completion myself.

On Tuesday, March 25th, 2025 at 12:50 PM, the_wurfkreuz <the_wurfkreuz <at> proton.me> wrote:

> This means the completion will behave this way forever?
> 
> 
> On Tuesday, March 25th, 2025 at 10:58 AM, Juri Linkov juri <at> linkov.net wrote:
> 
> > > `spec: containers: - name: postgres-container image: postgres:16 env: - name:`
> > > 
> > > But that's the ideal situation with correct indentation.
> > > In reality it does that this way:
> > > 
> > > `spec: containers: - name: postgres-container image: postgres:16 env: - name:`
> > > 
> > > Should this situation be handled by the language mode or
> > > maybe by the completion system and the language mode together?
> > 
> > Both indentations are correct. 'haml-mode' handles
> > this ambiguity by supporting all valid indentations, i.e.
> > on the first TAB it indents to the first valid position,
> > on the second TAB indents to another valid position, etc.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Tue, 25 Mar 2025 17:23:02 GMT) Full text and rfc822 format available.

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

From: Juri Linkov <juri <at> linkov.net>
To: the_wurfkreuz <the_wurfkreuz <at> proton.me>
Cc: Randy Taylor <dev <at> rjt.dev>, 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50; yaml-ts-mode does not indent after yaml
 mapping keys
Date: Tue, 25 Mar 2025 19:20:49 +0200
>> > `spec: containers: - name: postgres-container image: postgres:16 env: - name:`
>> > 
>> > But that's the ideal situation with correct indentation.
>> > In reality it does that this way:
>> > 
>> > `spec: containers: - name: postgres-container image: postgres:16 env: - name:`
>> > 
>> > Should this situation be handled by the language mode or
>> > maybe by the completion system and the language mode together?
>> 
>> 
>> Both indentations are correct. 'haml-mode' handles
>> this ambiguity by supporting all valid indentations, i.e.
>> on the first TAB it indents to the first valid position,
>> on the second TAB indents to another valid position, etc.
>
> This means the completion will behave this way forever? 

Do you mean indentation, not completion with TAB?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77094; Package emacs. (Wed, 26 Mar 2025 06:50:02 GMT) Full text and rfc822 format available.

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

From: the_wurfkreuz <the_wurfkreuz <at> proton.me>
To: Juri Linkov <juri <at> linkov.net>
Cc: Randy Taylor <dev <at> rjt.dev>, 77094 <at> debbugs.gnu.org
Subject: Re: bug#77094: 31.0.50;
 yaml-ts-mode does not indent after yaml mapping keys
Date: Wed, 26 Mar 2025 06:49:19 +0000
I mean indentation after selecting and completing a multiline completion candidate.

On Tuesday, March 25th, 2025 at 8:20 PM, Juri Linkov <juri <at> linkov.net> wrote:

> > > > `spec: containers: - name: postgres-container image: postgres:16 env: - name:`
> > > > 
> > > > But that's the ideal situation with correct indentation.
> > > > In reality it does that this way:
> > > > 
> > > > `spec: containers: - name: postgres-container image: postgres:16 env: - name:`
> > > > 
> > > > Should this situation be handled by the language mode or
> > > > maybe by the completion system and the language mode together?
> > > 
> > > Both indentations are correct. 'haml-mode' handles
> > > this ambiguity by supporting all valid indentations, i.e.
> > > on the first TAB it indents to the first valid position,
> > > on the second TAB indents to another valid position, etc.
> > 
> > This means the completion will behave this way forever?
> 
> 
> Do you mean indentation, not completion with TAB?




This bug report was last modified 80 days ago.

Previous Next


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