Package: emacs;
Reported by: Roman Rudakov <rrudakov <at> fastmail.com>
Date: Wed, 16 Apr 2025 19:06:03 UTC
Severity: normal
Found in version 31.0.50
Done: Yuan Fu <casouri <at> gmail.com>
To reply to this bug, email your comments to 77848 AT debbugs.gnu.org.
There is no need to reopen the bug first.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#77848
; Package emacs
.
(Wed, 16 Apr 2025 19:06:04 GMT) Full text and rfc822 format available.Roman Rudakov <rrudakov <at> fastmail.com>
:bug-gnu-emacs <at> gnu.org
.
(Wed, 16 Apr 2025 19:06:04 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Roman Rudakov <rrudakov <at> fastmail.com> To: bug-gnu-emacs <at> gnu.org Subject: 31.0.50; treesit-update-ranges: offset setting is ignored for local parsers Date: Wed, 16 Apr 2025 21:05:13 +0200
Hello, I've noticed that when defining 'treesit-range-settings' using the 'treesit-range-rules helper function, such as: (treesit-range-rules :embed 'markdown-inline :host 'clojure :offset '(1 . -1) :local t (clojure-ts--docstring-query '@capture)) The ':offset' setting doesn't have any effect. After debugging the 'treesit-update-ranges' function, I noticed that it calls 'treesit--update-range-1', which in turn calls 'treesit--update-ranges-local' if ':local t' is specified. 'treesit--update-ranges-local' does not accept offset as an argument, although it is mentioned in its documentation string: > OFFSET is a cons of start and end offsets that are applied to the > range > for the local parser. This discrepancy between the documented behavior and the actual implementation of 'treesit--update-ranges-local' regarding the offset argument might be a bug. In GNU Emacs 31.0.50 (build 1, aarch64-apple-darwin24.4.0, NS appkit-2575.50 Version 15.4 (Build 24E248)) of 2025-04-16 built on macbookpro.home Windowing system distributor 'Apple', version 10.3.2575 System Description: macOS 15.4 Configured using: 'configure --disable-dependency-tracking --disable-silent-rules --enable-locallisppath=/opt/homebrew/share/emacs/site-lisp --infodir=/opt/homebrew/Cellar/emacs-plus <at> 31/31.0.50/share/info/emacs --prefix=/opt/homebrew/Cellar/emacs-plus <at> 31/31.0.50 --with-native-compilation=aot --with-xml2 --with-gnutls --without-compress-install --without-dbus --without-imagemagick --with-modules --with-rsvg --with-webp --without-pop --with-ns --disable-ns-self-contained 'CFLAGS=-O2 -DFD_SETSIZE=10000 -DDARWIN_UNLIMITED_SELECT -I/opt/homebrew/opt/sqlite/include -I/opt/homebrew/opt/gcc/include -I/opt/homebrew/opt/libgccjit/include' 'LDFLAGS=-L/opt/homebrew/opt/sqlite/lib -L/opt/homebrew/lib/gcc/14 -I/opt/homebrew/opt/gcc/include -I/opt/homebrew/opt/libgccjit/include'' Configured features: ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: global-git-commit-mode: t magit-auto-revert-mode: t idle-highlight-mode: t subword-mode: t yas-minor-mode: t hl-todo-mode: t flymake-mode: t server-mode: t pdf-occur-global-minor-mode: t mu4e-column-faces-mode: t mu4e-modeline-mode: t auto-insert-mode: t electric-pair-mode: t org-roam-db-autosync-mode: t outline-minor-mode: t minions-mode: t repeat-mode: t save-place-mode: t minibuffer-electric-default-mode: t savehist-mode: t recentf-mode: t global-auto-revert-mode: t global-hl-line-mode: t apheleia-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tab-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 window-divider-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/rrudakov/.config/emacs/elpa/ef-themes-1.9.0/theme-loaddefs hides /Users/rrudakov/.config/emacs/elpa/modus-themes-4.6.0/theme-loaddefs /Users/rrudakov/.config/emacs/elpa/magit-4.3.2/magit-autorevert hides /Users/rrudakov/.config/emacs/elpa/magit-section-4.3.2/magit-autorevert /Users/rrudakov/.config/emacs/elpa/password-store-20231201.954/password-store hides /opt/homebrew/share/emacs/site-lisp/pass/password-store /Users/rrudakov/.config/emacs/elpa/transient-0.8.7/transient hides /opt/homebrew/Cellar/emacs-plus <at> 31/31.0.50/share/emacs/31.0.50/lisp/transient /Users/rrudakov/.config/emacs/elpa/ef-themes-1.9.0/theme-loaddefs hides /opt/homebrew/Cellar/emacs-plus <at> 31/31.0.50/share/emacs/31.0.50/lisp/theme-loaddefs Features: (shadow emacsbug re-builder descr-text tramp-cache time-stamp shortdoc epa-file network-stream mailalias dabbrev pcmpl-unix pcmpl-gnu misc cal-move magit-ediff ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util magit-extras view alert log4e gntp dired-aux cl-print edebug debug backtrace help-fns radix-tree emacs-everywhere vc-hg vc-svn bug-reference markdown-ts-mode markdown-mode edit-indirect misearch multi-isearch apheleia apheleia-rcs apheleia-dp apheleia-formatters apheleia-utils apheleia-log apheleia-formatter-context face-remap 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 magit-diff smerge-mode diff git-commit log-edit pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor magit-mode benchmark magit-git magit-base vc-git diff-mode track-changes qp sort smiley gnus-cite mm-archive mail-extr textsec uni-scripts idna-mapping uni-confusable textsec-check clojure-ts-mode flymake-kondor clj-refactor hydra lv inflections mc-hide-unmatched-lines-mode mc-mark-more sgml-mode mc-cycle-cursors multiple-cursors-core rect paredit cider tramp-sh cider-debug cider-browse-ns cider-mode cider-xref-backend cider-find cider-completion cider-profile cider-inspector cider-eval cider-jar arc-mode archive-mode cider-repl-history pulse cider-repl cider-resolve cider-test cider-overlays cider-stacktrace cider-doc cider-browse-spec cider-clojuredocs cider-eldoc cider-docstring cider-client cider-common xref cider-completion-context cider-connection cider-popup sesman-browser nrepl-client cider-util tramp trampver tramp-integration tramp-message tramp-compat tramp-loaddefs sesman queue nrepl-dict spinner parseedn parseclj-parser parseclj-lex parseclj-alist clojure-mode align idle-highlight-mode cap-words superword subword hideshow yasnippet ef-maris-dark-theme ef-themes cus-start hl-todo checkdoc lisp-mnt flymake server github org-git ghub-graphql treepy gsexp ghub url-http url-gw nsm url-auth google-translate-smooth-ui google-translate-core-ui facemenu color popup google-translate-core google-translate-backend use-package-ensure pdf-occur 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 cedet pdf-isearch let-alist pdf-misc pdf-tools pdf-view jka-compr pdf-cache pdf-info tq pdf-util pdf-macs image-mode exif ob-restclient restclient mu4e-column-faces mu4e-icalendar gnus-icalendar icalendar mu4e mu4e-org mu4e-notification notifications mu4e-main smtpmail mu4e-view mu4e-mime-parts mu4e-headers mu4e-thread mu4e-actions mu4e-compose mu4e-draft gnus-msg mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill mu4e-contacts mu4e-update mu4e-folders mu4e-context mu4e-query-items mu4e-server mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window bookmark ido mu4e-obsolete yaml-ts-mode dockerfile-ts-mode rust-ts-mode typescript-ts-mode js c-ts-common imenu cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs vlf-setup vlf vlf-base vlf-tune autoinsert rg files-x vc vc-dispatcher rg-info-hack rg-menu transient edmacro kmacro rg-ibuffer rg-result wgrep-rg wgrep rg-history rg-header ibuf-ext ibuffer ibuffer-loaddefs grep compile elec-pair emacsql-sqlite-builtin org-roam-migrate org-roam-log org-roam-mode org-roam-capture org-roam-id org-roam-node crm org-roam-db org-roam-utils org-roam-compat org-roam org-capture emacsql-sqlite emacsql emacsql-compiler magit-section cursor-sensor llama comp comp-cstr dash async ob-async ob-plantuml ob-ditaa ob-clojure ob-haskell ob-sqlite ob-shell shell ob-sql ob-python python project org-clock appt diary-lib diary-loaddefs org-duration comp-run comp-common flyspell ispell oc-basic bibtex disp-table ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr-tag-pre-highlight language-detection 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 parse-time iso8601 gnus-spec gnus-int gnus-range message sendmail yank-media puny dired dired-loaddefs 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 gnus nnheader gnus-util text-property-search mail-utils range mm-util mail-prsvr ox-gfm ox-md ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox org-attach org-agenda org-element org-persist org-id org-element-ast inline avl-tree generator org-refile org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src sh-script smie treesit executable ob-comint org-pcomplete pcomplete org-list org-footnote org-faces org-entities time-date noutline outline org-version ob-emacs-lisp ob-core ob-eval org-cycle org-table org-keys oc org-loaddefs thingatpt find-func cal-menu calendar cal-loaddefs ol org-fold org-fold-core org-compat org-macs format-spec exec-path-from-shell minions compat repeat hippie-exp comint ansi-osc ansi-color ring advice saveplace minibuf-eldef savehist recentf tree-widget cl-extra help-mode autorevert filenotify use-package-core hl-line finder-inf add-node-modules-path-autoloads alert-autoloads apheleia-autoloads easy-mmode auctex-autoloads tex-site buttercup-autoloads clj-refactor-autoloads cider-autoloads clojure-mode-autoloads clojure-ts-mode-autoloads csv-mode-autoloads debbugs-autoloads dired-git-info-autoloads dired-subtree-autoloads dired-hacks-utils-autoloads dtrt-indent-autoloads edit-indirect-autoloads ef-themes-autoloads elfeed-autoloads emacs-everywhere-autoloads emmet-mode-autoloads exec-path-from-shell-autoloads expand-region-autoloads flymake-kondor-autoloads flyspell-correct-autoloads ghub-autoloads git-link-autoloads gitignore-templates-autoloads gntp-autoloads google-c-style-autoloads google-translate-autoloads groovy-mode-autoloads haskell-mode-autoloads hl-todo-autoloads hydra-autoloads idle-highlight-mode-autoloads inflections-autoloads log4e-autoloads logview-autoloads datetime-autoloads extmap-autoloads lua-mode-autoloads lv-autoloads magit-autoloads pcase markdown-mode-autoloads minions-autoloads modus-themes-autoloads mu4e-column-faces-autoloads multiple-cursors-autoloads nginx-mode-autoloads nov-autoloads esxml-autoloads kv-autoloads ob-async-autoloads async-autoloads ob-restclient-autoloads org-roam-autoloads magit-section-autoloads llama-autoloads emacsql-autoloads org-tree-slide-autoloads ox-jira-autoloads ox-slack-autoloads ox-gfm-autoloads paredit-autoloads parseedn-autoloads parseclj-autoloads password-store-otp-autoloads password-store-autoloads pdf-tools-autoloads pip-requirements-autoloads pkgbuild-mode-autoloads plantuml-mode-autoloads dash-autoloads popup-autoloads pyvenv-autoloads queue-autoloads rainbow-mode-autoloads restclient-autoloads rg-autoloads s-autoloads sesman-autoloads shr-tag-pre-highlight-autoloads language-detection-autoloads sly-autoloads warnings spinner-autoloads sql-indent-autoloads ssh-config-mode-autoloads rx tablist-autoloads telega-autoloads transient-autoloads treepy-autoloads vimrc-mode-autoloads visual-fill-column-autoloads vlf-autoloads web-mode-autoloads wgrep-autoloads info with-editor-autoloads yasnippet-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 password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cus-edit pp cus-load icons wid-edit 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 tty-child-frames native-compile emacs) Memory information: ((conses 16 1254711 512110) (symbols 48 81955 84) (strings 32 417506 9240) (string-bytes 1 11844813) (vectors 16 309427) (vector-slots 8 3125768 209057) (floats 8 92057 1427) (intervals 56 44552 11081) (buffers 992 56)) -- Best regards, Roman
bug-gnu-emacs <at> gnu.org
:bug#77848
; Package emacs
.
(Thu, 17 Apr 2025 06:26:02 GMT) Full text and rfc822 format available.Message #8 received at 77848 <at> debbugs.gnu.org (full text, mbox):
From: Juri Linkov <juri <at> linkov.net> To: Roman Rudakov <rrudakov <at> fastmail.com> Cc: Yuan Fu <casouri <at> gmail.com>, 77848 <at> debbugs.gnu.org Subject: Re: bug#77848: 31.0.50; treesit-update-ranges: offset setting is ignored for local parsers Date: Thu, 17 Apr 2025 09:24:04 +0300
Cc-ing Yuan for the help. > Hello, I've noticed that when defining 'treesit-range-settings' using the > 'treesit-range-rules helper function, such as: > > (treesit-range-rules > :embed 'markdown-inline > :host 'clojure > :offset '(1 . -1) > :local t > (clojure-ts--docstring-query '@capture)) > > The ':offset' setting doesn't have any effect. > > After debugging the 'treesit-update-ranges' function, I noticed that it > calls 'treesit--update-range-1', which in turn calls > 'treesit--update-ranges-local' if ':local t' is > specified. 'treesit--update-ranges-local' does not accept offset as an > argument, although it is mentioned in its documentation string: > >> OFFSET is a cons of start and end offsets that are applied to the range >> for the local parser. > > This discrepancy between the documented behavior and the actual > implementation of 'treesit--update-ranges-local' regarding the offset > argument might be a bug.
Yuan Fu <casouri <at> gmail.com>
:Roman Rudakov <rrudakov <at> fastmail.com>
:Message #13 received at 77848-done <at> debbugs.gnu.org (full text, mbox):
From: Yuan Fu <casouri <at> gmail.com> To: Juri Linkov <juri <at> linkov.net> Cc: Roman Rudakov <rrudakov <at> fastmail.com>, 77848-done <at> debbugs.gnu.org Subject: Re: bug#77848: 31.0.50; treesit-update-ranges: offset setting is ignored for local parsers Date: Thu, 17 Apr 2025 16:44:42 -0700
> On Apr 16, 2025, at 11:24 PM, Juri Linkov <juri <at> linkov.net> wrote: > > Cc-ing Yuan for the help. > >> Hello, I've noticed that when defining 'treesit-range-settings' using the >> 'treesit-range-rules helper function, such as: >> >> (treesit-range-rules >> :embed 'markdown-inline >> :host 'clojure >> :offset '(1 . -1) >> :local t >> (clojure-ts--docstring-query '@capture)) >> >> The ':offset' setting doesn't have any effect. >> >> After debugging the 'treesit-update-ranges' function, I noticed that it >> calls 'treesit--update-range-1', which in turn calls >> 'treesit--update-ranges-local' if ':local t' is >> specified. 'treesit--update-ranges-local' does not accept offset as an >> argument, although it is mentioned in its documentation string: >> >>> OFFSET is a cons of start and end offsets that are applied to the range >>> for the local parser. >> >> This discrepancy between the documented behavior and the actual >> implementation of 'treesit--update-ranges-local' regarding the offset >> argument might be a bug. Yes, it’s indeed a bug. I’ve pushed a fix for it. Thanks to you both! Yuan
bug-gnu-emacs <at> gnu.org
:bug#77848
; Package emacs
.
(Fri, 18 Apr 2025 07:33:03 GMT) Full text and rfc822 format available.Message #16 received at 77848-done <at> debbugs.gnu.org (full text, mbox):
From: Roman Rudakov <rrudakov <at> fastmail.com> To: Yuan Fu <casouri <at> gmail.com> Cc: 77848-done <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net> Subject: Re: bug#77848: 31.0.50; treesit-update-ranges: offset setting is ignored for local parsers Date: Fri, 18 Apr 2025 09:32:00 +0200
Yuan Fu <casouri <at> gmail.com> writes: >> On Apr 16, 2025, at 11:24 PM, Juri Linkov <juri <at> linkov.net> wrote: >> >> Cc-ing Yuan for the help. >> >>> Hello, I've noticed that when defining 'treesit-range-settings' >>> using the >>> 'treesit-range-rules helper function, such as: >>> >>> (treesit-range-rules >>> :embed 'markdown-inline >>> :host 'clojure >>> :offset '(1 . -1) >>> :local t >>> (clojure-ts--docstring-query '@capture)) >>> >>> The ':offset' setting doesn't have any effect. >>> >>> After debugging the 'treesit-update-ranges' function, I noticed >>> that it >>> calls 'treesit--update-range-1', which in turn calls >>> 'treesit--update-ranges-local' if ':local t' is >>> specified. 'treesit--update-ranges-local' does not accept offset >>> as an >>> argument, although it is mentioned in its documentation string: >>> >>>> OFFSET is a cons of start and end offsets that are applied to the >>>> range >>>> for the local parser. >>> >>> This discrepancy between the documented behavior and the actual >>> implementation of 'treesit--update-ranges-local' regarding the >>> offset >>> argument might be a bug. > > Yes, it’s indeed a bug. I’ve pushed a fix for it. Thanks to you > both! > > Yuan Thank you! Would it be possible to also install the fix on emacs-30 branch? -- Best regards, Roman
bug-gnu-emacs <at> gnu.org
:bug#77848
; Package emacs
.
(Fri, 18 Apr 2025 23:36:04 GMT) Full text and rfc822 format available.Message #19 received at 77848-done <at> debbugs.gnu.org (full text, mbox):
From: Yuan Fu <casouri <at> gmail.com> To: Roman Rudakov <rrudakov <at> fastmail.com> Cc: 77848-done <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net> Subject: Re: bug#77848: 31.0.50; treesit-update-ranges: offset setting is ignored for local parsers Date: Fri, 18 Apr 2025 16:34:39 -0700
> On Apr 18, 2025, at 12:32 AM, Roman Rudakov <rrudakov <at> fastmail.com> wrote: > > Yuan Fu <casouri <at> gmail.com> writes: > >>> On Apr 16, 2025, at 11:24 PM, Juri Linkov <juri <at> linkov.net> wrote: >>> >>> Cc-ing Yuan for the help. >>> >>>> Hello, I've noticed that when defining 'treesit-range-settings' using the >>>> 'treesit-range-rules helper function, such as: >>>> >>>> (treesit-range-rules >>>> :embed 'markdown-inline >>>> :host 'clojure >>>> :offset '(1 . -1) >>>> :local t >>>> (clojure-ts--docstring-query '@capture)) >>>> >>>> The ':offset' setting doesn't have any effect. >>>> >>>> After debugging the 'treesit-update-ranges' function, I noticed that it >>>> calls 'treesit--update-range-1', which in turn calls >>>> 'treesit--update-ranges-local' if ':local t' is >>>> specified. 'treesit--update-ranges-local' does not accept offset as an >>>> argument, although it is mentioned in its documentation string: >>>> >>>>> OFFSET is a cons of start and end offsets that are applied to the range >>>>> for the local parser. >>>> >>>> This discrepancy between the documented behavior and the actual >>>> implementation of 'treesit--update-ranges-local' regarding the offset >>>> argument might be a bug. >> >> Yes, it’s indeed a bug. I’ve pushed a fix for it. Thanks to you both! >> >> Yuan > > Thank you! > > Would it be possible to also install the fix on emacs-30 branch? > -- > Best regards, Roman Ah right, thanks for the reminder. I thought this is a regression brought by the recent embedded parser change. Indeed, the local parser range function in Emacs 30 doesn’t handle offset either. I’ve pushed a separate fix to emacs-30. Yuan
bug-gnu-emacs <at> gnu.org
:bug#77848
; Package emacs
.
(Sat, 19 Apr 2025 20:01:02 GMT) Full text and rfc822 format available.Message #22 received at 77848-done <at> debbugs.gnu.org (full text, mbox):
From: Roman Rudakov <rrudakov <at> fastmail.com> To: Yuan Fu <casouri <at> gmail.com> Cc: 77848-done <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net> Subject: Re: bug#77848: 31.0.50; treesit-update-ranges: offset setting is ignored for local parsers Date: Sat, 19 Apr 2025 21:59:44 +0200
Yuan Fu <casouri <at> gmail.com> writes: >> On Apr 18, 2025, at 12:32 AM, Roman Rudakov <rrudakov <at> fastmail.com> >> wrote: >> >> Yuan Fu <casouri <at> gmail.com> writes: >> >>>> On Apr 16, 2025, at 11:24 PM, Juri Linkov <juri <at> linkov.net> >>>> wrote: >>>> >>>> Cc-ing Yuan for the help. >>>> >>>>> Hello, I've noticed that when defining 'treesit-range-settings' >>>>> using the >>>>> 'treesit-range-rules helper function, such as: >>>>> >>>>> (treesit-range-rules >>>>> :embed 'markdown-inline >>>>> :host 'clojure >>>>> :offset '(1 . -1) >>>>> :local t >>>>> (clojure-ts--docstring-query '@capture)) >>>>> >>>>> The ':offset' setting doesn't have any effect. >>>>> >>>>> After debugging the 'treesit-update-ranges' function, I noticed >>>>> that it >>>>> calls 'treesit--update-range-1', which in turn calls >>>>> 'treesit--update-ranges-local' if ':local t' is >>>>> specified. 'treesit--update-ranges-local' does not accept offset >>>>> as an >>>>> argument, although it is mentioned in its documentation string: >>>>> >>>>>> OFFSET is a cons of start and end offsets that are applied to >>>>>> the range >>>>>> for the local parser. >>>>> >>>>> This discrepancy between the documented behavior and the actual >>>>> implementation of 'treesit--update-ranges-local' regarding the >>>>> offset >>>>> argument might be a bug. >>> >>> Yes, it’s indeed a bug. I’ve pushed a fix for it. Thanks to you >>> both! >>> >>> Yuan >> >> Thank you! >> >> Would it be possible to also install the fix on emacs-30 branch? >> -- >> Best regards, Roman > > Ah right, thanks for the reminder. I thought this is a regression > brought by the recent embedded parser change. Indeed, the local > parser range function in Emacs 30 doesn’t handle offset either. I’ve > pushed a separate fix to emacs-30. > > Yuan Thank you! -- Best regards, Roman
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.