Subject: 30.0.50; Cannot reinstall language grammar after running `treesit-ready-p'
From: 牟 桐 <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Sat, 4 Feb 2023 12:59:53 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi there,

I'm using Windows, so I'll use `libtree-sitter-c.dll` as an example:

1. `emacs -Q` to start a vanilla Emacs.

Run `M-x treesit-install-language-grammar`, then install the c
parser to `~/.emacs.d/tree-sitter`. If there is already a
`libtree-sitter-c.dll` there, the new installed library will
overwrite the old library.

2. Execute `(treesit-ready-p 'c)`, which returns t.

3. Run `M-x treesit-install-language-grammar` again, there will be a
warning:

```
⛔ Warning (treesit): Error encountered when installing language grammar: (file-error Copying file Operation not permitted c:/Users/redacted/AppData/Local/Temp/treesit-workdir5HPGoS/repo/src/libtree-sitter-c.dll c:/Users/redacted/.emacs.d/tree-sitter/libtree-sitter-c.dll)
```

I don't know whether this is a bug or not, since I think it's reasonable
to make the already used library not be able to be overwritten.

But someone reminded me that `treesit-ready-p` will be executed when you
load the `xxx-ts-mode`. If the execution of `treesit-ready-p` made the
`treesit-install-language-grammar` unusable, it means the design of that
function has a little problem.

---

dalu

In GNU Emacs 30.0.50 (build 7, x86_64-w64-mingw32) of 2023-02-03 built
on DALUW
Repository revision: ac7ec87a7a0db887e4ae7fe9005aea517958b778
Repository branch: master
Windowing system distributor 'Microsoft Corp.', version 10.0.22621
System Description: Microsoft Windows 10 Home China (v10.0.2009.22621.1194)

Configured using:
'configure --prefix=/c/emacs/emacs-git --without-dbus --without-pop
--with-native-compilation=aot'

Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB

Important settings:
  value of $LANG: CHS
  locale-coding-system: cp65001

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  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:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils vc-git
diff-mode easy-mmode vc-dispatcher treesit cl-loaddefs comp comp-cstr
warnings icons subr-x rx cl-seq cl-macs gv cl-extra help-mode bytecomp
byte-compile cl-lib china-util rmc iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars 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
w32notify w32 lcms2 multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 87683 14604)
(symbols 48 7929 0)
(strings 32 22771 2959)
(string-bytes 1 688676)
(vectors 16 16331)
(vector-slots 8 340811 17500)
(floats 8 48 160)
(intervals 56 406 0)
(buffers 984 13))