Subject: bug#59988: closed (Re: bug#59988: 29.0.60; treesit-query-validate creates editable buffer)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 12 Dec 2022 23:01:02 +0000

Your bug report

#59988: 29.0.60; treesit-query-validate creates editable buffer

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
59988: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59988
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#59988: 29.0.60; treesit-query-validate creates editable buffer
From: Yuan Fu <[email-masked]>
To: Jostein Kjønigsen <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Mon, 12 Dec 2022 15:00:49 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Jostein Kjønigsen <[email-masked]> writes:

> When trying to validate a tree-sitter query, one is encouraged to use treesit-validate-query.
>
> This buffer is editable and needs to be manually killed.
>
> When you are iterating on a query and get lots of validation errors, this gets annoying.
>
> It would be much better if the buffer was non-editable and quittable like most other generated buffers in Emacs.
>
> Attached is a patch which fixes this.

Applied, thanks!

Yuan

Subject: 29.0.60; treesit-query-validate creates editable buffer
From: Jostein Kjønigsen <[email-masked]>
To: "[email-masked]" <[email-masked]>, Yuan Fu <[email-masked]>
Date: Mon, 12 Dec 2022 08:46:47 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

When trying to validate a tree-sitter query, one is encouraged to use 
treesit-validate-query.

This buffer is editable and needs to be manually killed.

When you are iterating on a query and get lots of validation errors, 
this gets annoying.

It would be much better if the buffer was non-editable and quittable 
like most other generated buffers in Emacs.

Attached is a patch which fixes this.

--

In GNU Emacs 29.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version
  3.24.34, cairo version 1.16.0) of 2022-12-09 built on ThinkPad-T14s
Repository revision: 37f3038d791c1e52b92fbbaf8221092ae8a2f284
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12201003
System Description: Ubuntu 22.10

Configured using:
  'configure --with-json --with-tree-sitter'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
   value of $LC_MONETARY: nb_NO.UTF-8
   value of $LC_NUMERIC: nb_NO.UTF-8
   value of $LC_TIME: nb_NO.UTF-8
   value of $LANG: en_US.UTF-8
   locale-coding-system: utf-8-unix

Major mode: Magit

Minor modes in effect:
   dap-tooltip-mode: t
   dap-ui-many-windows-mode: t
   dap-ui-controls-mode: t
   dap-ui-mode: t
   dap-auto-configure-mode: t
   dap-mode: t
   global-git-commit-mode: t
   magit-auto-revert-mode: t
   treemacs-filewatch-mode: t
   treemacs-follow-mode: t
   treemacs-git-mode: t
   treemacs-fringe-indicator-mode: t
   editorconfig-mode: t
   which-function-mode: t
   helm-mode: t
   helm-minibuffer-history-mode: t
   shell-dirtrack-mode: t
   helm--remap-mouse-mode: t
   async-bytecomp-package-mode: t
   delete-selection-mode: t
   global-auto-revert-mode: t
   yas-global-mode: t
   yas-minor-mode: t
   global-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
   doom-modeline-mode: t
   tooltip-mode: t
   global-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
   buffer-read-only: t
   column-number-mode: t
   line-number-mode: t
   transient-mark-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t

Load-path shadows:
/home/jostein/.emacs.d/elpa/transient-20221202.1727/transient hides 
/home/jostein/build/emacs/lisp/transient

Features:
(textsec uni-scripts idna-mapping uni-confusable textsec-check
ucs-normalize url-cache url-auth sgml-mode facemenu c-ts-mode printing
ps-print ps-print-loaddefs lpr csharp-mode cc-langs cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
cl-print shadow sort emacsbug mail-extr misearch multi-isearch
lsp-diagnostics lsp-headerline lsp-icons lsp-modeline dap-mouse dap-ui
gdb-mi bindat gud bui bui-list bui-info bui-entry bui-core bui-history
bui-button bui-utils lsp-lens dap-gdb-lldb dap-netcore dap-node
dap-utils dap-pwsh dap-python dap-mode dap-tasks dap-launch posframe
dap-overlays view python skeleton helm-bookmark helm-net helm-adaptive
magit-bookmark treemacs-bookmarks treemacs-tags bookmark help-fns
radix-tree apropos goto-addr helm-command helm-elisp helm-eval edebug
debug backtrace helm-info git-rebase magit-extras flyspell ispell
face-remap magit-submodule magit-obsolete 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
magit-diff smerge-mode diff git-commit log-edit message sendmail
yank-media rfc822 mml mml-sec epa mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader pcvs-util magit-core magit-autorevert magit-margin
magit-transient magit-process with-editor magit-mode transient magit-git
magit-base magit-section crm compat-27 compat-26 elec-pair toml-ts-mode
treesit executable disp-table bug-reference vc-git diff-mode
vc-dispatcher vc-svn winner ffap tramp-archive tramp-gvfs zeroconf
tramp-cache time-stamp dbus add-log lsp-zig lsp-steep lsp-svelte
lsp-sqls lsp-ruby-syntax-tree lsp-yaml lsp-xml lsp-vimscript lsp-vhdl
lsp-volar lsp-vetur lsp-html lsp-verilog lsp-vala lsp-v lsp-typeprof
lsp-ttcn3 lsp-toml lsp-terraform lsp-tex lsp-sorbet lsp-solargraph
lsp-rust lsp-rf lsp-remark lsp-racket lsp-r lsp-purescript lsp-pylsp
lsp-pyls lsp-pwsh lsp-php lsp-pls lsp-perlnavigator lsp-perl
lsp-openscad lsp-ocaml lsp-magik lsp-nix lsp-nim lsp-nginx lsp-mint
lsp-marksman lsp-markdown lsp-lua lsp-kotlin lsp-json lsp-javascript
lsp-idris lsp-haxe lsp-groovy lsp-hack lsp-graphql lsp-gleam lsp-go
lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint lsp-erlang
lsp-emmet lsp-elixir lsp-elm lsp-dockerfile lsp-docker yaml lsp-dhall
lsp-d lsp-css lsp-csharp gnutls lsp-crystal lsp-cmake lsp-clojure
lsp-treemacs lsp-treemacs-generic lsp-treemacs-themes treemacs-treelib
treemacs treemacs-header-line treemacs-compatibility treemacs-mode
treemacs-interface treemacs-persistence treemacs-filewatch-mode
treemacs-follow-mode treemacs-rendering treemacs-annotations
treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals
treemacs-fringe-indicator treemacs-scope pulse treemacs-faces
treemacs-icons treemacs-themes treemacs-core-utils pfuture
treemacs-logging treemacs-customization treemacs-macros
lsp-semantic-tokens lsp-clangd lsp-beancount lsp-bash lsp-astro
lsp-ansible lsp-angular lsp-ada warnings lsp-actionscript
ido-completing-read+ memoize minibuf-eldef elisp-slime-nav paredit
lsp-mode lsp-protocol tree-widget spinner network-stream nsm
markdown-mode color lv inline ht ewoc epg rfc6068 epg-config
highlight-symbol flycheck editorconfig editorconfig-core
editorconfig-core-handle editorconfig-fnmatch 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 which-func hideshow eww url-queue thingatpt shr
pixel-fill kinsoku url-file svg xml dom puny mm-url gnus nnheader
gnus-util mail-utils range mm-util mail-prsvr helm-imenu pcase imenu
ob-plantuml 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 noutline outline ob-emacs-lisp ob-core ob-eval org-cycle
org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func
cal-menu calendar cal-loaddefs org-version org-compat org-macs helm-mode
helm-misc helm-files image-dired image-dired-tags image-dired-external
image-dired-util xdg image-mode dired dired-loaddefs exif tramp
tramp-loaddefs trampver tramp-integration cus-edit pp cus-load icons
wid-edit files-x tramp-compat shell pcomplete parse-time iso8601
time-date ls-lisp helm-buffers helm-occur helm-tags helm-locate
helm-grep helm-regexp format-spec helm-utils helm-help helm-types helm
helm-global-bindings helm-easymenu helm-core async-bytecomp helm-source
helm-multi-match helm-lib async helm-config delsel autorevert filenotify
yasnippet derived 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 compile comint ansi-osc ansi-color
ring doom-modeline doom-modeline-segments doom-modeline-env
doom-modeline-core all-the-icons all-the-icons-faces data-material
data-weathericons data-octicons data-fileicons data-faicons
data-alltheicons shrink-path rx f f-shortdoc shortdoc
text-property-search s dash compat compat-macs dracula-theme cl-extra
help-mode use-package-ensure use-package-core finder-inf
flycheck-autoloads helm-autoloads helm-core-autoloads
expand-region-autoloads all-the-icons-autoloads bmx-mode-autoloads
doom-modeline-autoloads async-autoloads dracula-theme-autoloads
highlight-symbol-autoloads multiple-cursors-autoloads nlinum-autoloads
toml-mode-autoloads pkg-info-autoloads epl-autoloads undo-tree-autoloads
rust-mode-autoloads editorconfig-autoloads magit-autoloads
yasnippet-autoloads elisp-slime-nav-autoloads crontab-mode-autoloads
ido-yes-or-no-autoloads magit-section-autoloads cargo-autoloads
ido-completing-read+-autoloads memoize-autoloads paredit-autoloads
company-autoloads yaml-mode-autoloads powershell-autoloads
dap-mode-autoloads lsp-docker-autoloads yaml-autoloads
lsp-treemacs-autoloads treemacs-autoloads cfrs-autoloads
posframe-autoloads hydra-autoloads pfuture-autoloads
ace-window-autoloads avy-autoloads bui-autoloads lsp-mode-autoloads
lv-autoloads markdown-mode-autoloads spinner-autoloads ht-autoloads
git-commit-autoloads transient-autoloads compat-autoloads
cmake-mode-autoloads shrink-path-autoloads f-autoloads info
dash-autoloads s-autoloads popup-autoloads queue-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 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/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo move-toolbar gtk x-toolkit xinput2 x multi-tty
make-network-process emacs)

Memory information:
((conses 16 1178894 103773)
  (symbols 48 60013 53)
  (strings 32 294047 8420)
  (string-bytes 1 8110587)
  (vectors 16 156466)
  (vector-slots 8 2717789 155706)
  (floats 8 1347 1114)
  (intervals 56 31142 4514)
  (buffers 992 72))

-- 
Vennlig hilsen
*Jostein Kjønigsen*

[email-masked] 🍵 [email-masked]
https://jostein.kjønigsen.no <https://jostein.kjønigsen.no>

From 6f9814127fde5aae80afb9254739807c75855225 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jostein=20Kj=C3=B8nigsen?= <[email-masked]>
Date: Mon, 12 Dec 2022 08:42:33 +0100
Subject: [PATCH 5/5] Make treesit-query-validate create a read-only buffer

lisp/treesit.el: use view-mode for generated validation buffer.
---
 lisp/treesit.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/treesit.el b/lisp/treesit.el
index 85154d0d1c7..dcb2ef99285 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -1835,7 +1835,8 @@ treesit-query-validate
              (goto-char (point-min))
              (insert (format "%s: %d\n" message start))
              (forward-char start)))
-         (pop-to-buffer buf))))))
+         (pop-to-buffer buf)))))
+  (view-mode))
 
 ;;; Explorer
 
-- 
2.37.2