unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: john muhl <jm@pub.pink>
To: 70515@debbugs.gnu.org
Subject: bug#70515: 30.0.50; which-function-mode error in lua-ts-mode
Date: Mon, 22 Apr 2024 10:29:47 -0500	[thread overview]
Message-ID: <87edax76oz.fsf@pub.pink> (raw)
In-Reply-To: <87y1957977.fsf@pub.pink>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: 0001-Fix-which-function-error-in-lua-ts-mode-bug-70515.patch --]
[-- Type: text/x-patch, Size: 2880 bytes --]

From f4d09165ab78d09e97dbf0ac9402d43de7a7c7cd Mon Sep 17 00:00:00 2001
From: john muhl <jm@pub.pink>
Date: Sat, 20 Apr 2024 21:19:27 -0500
Subject: [PATCH] Fix which-function error in lua-ts-mode (bug#70515)

* lisp/progmodes/lua-ts-mode.el (lua-ts-mode): Remove
incorrect usage of 'which-func-functions'.
* test/lisp/progmodes/lua-ts-mode-tests.el:
(lua-ts-test-which-function): Add test.
* test/lisp/progmodes/lua-ts-mode-resources/which-function.lua:
New file.
---
 lisp/progmodes/lua-ts-mode.el                         |  5 +----
 .../lua-ts-mode-resources/which-function.lua          |  3 +++
 test/lisp/progmodes/lua-ts-mode-tests.el              | 11 +++++++++++
 3 files changed, 15 insertions(+), 4 deletions(-)
 create mode 100644 test/lisp/progmodes/lua-ts-mode-resources/which-function.lua

diff --git a/lisp/progmodes/lua-ts-mode.el b/lisp/progmodes/lua-ts-mode.el
index 45ea8ec9a81..06663e5bd0e 100644
--- a/lisp/progmodes/lua-ts-mode.el
+++ b/lisp/progmodes/lua-ts-mode.el
@@ -764,7 +764,7 @@ lua-ts-mode
                                       "vararg_expression"))))
                    (text "comment"))))
 
-    ;; Imenu/Outline.
+    ;; Imenu/Outline/Which-function.
     (setq-local treesit-simple-imenu-settings
                 `(("Requires"
                    "\\`function_call\\'"
@@ -776,9 +776,6 @@ lua-ts-mode
                    lua-ts--named-function-p
                    nil)))
 
-    ;; Which-function.
-    (setq-local which-func-functions (treesit-defun-at-point))
-
     ;; Align.
     (setq-local align-indent-before-aligning t)
 
diff --git a/test/lisp/progmodes/lua-ts-mode-resources/which-function.lua b/test/lisp/progmodes/lua-ts-mode-resources/which-function.lua
new file mode 100644
index 00000000000..621d818461c
--- /dev/null
+++ b/test/lisp/progmodes/lua-ts-mode-resources/which-function.lua
@@ -0,0 +1,3 @@
+local function f(x)
+    print(x)
+end
diff --git a/test/lisp/progmodes/lua-ts-mode-tests.el b/test/lisp/progmodes/lua-ts-mode-tests.el
index 565e6f91dbd..a7b637d18d1 100644
--- a/test/lisp/progmodes/lua-ts-mode-tests.el
+++ b/test/lisp/progmodes/lua-ts-mode-tests.el
@@ -23,6 +23,7 @@
 (require 'ert-font-lock)
 (require 'ert-x)
 (require 'treesit)
+(require 'which-func)
 
 (ert-deftest lua-ts-test-indentation ()
   (skip-unless (treesit-ready-p 'lua))
@@ -37,6 +38,16 @@ lua-ts-test-font-lock
   (let ((treesit-font-lock-level 4))
     (ert-font-lock-test-file (ert-resource-file "font-lock.lua") 'lua-ts-mode)))
 
+(ert-deftest lua-ts-test-which-function ()
+  (skip-unless (treesit-ready-p 'lua))
+  (with-temp-buffer
+    (insert-file-contents (ert-resource-file "which-function.lua"))
+    (lua-ts-mode)
+    (which-function-mode)
+    (goto-char (point-min))
+    (should (equal "f" (which-function)))
+    (which-function-mode -1)))
+
 (provide 'lua-ts-mode-tests)
 
 ;;; lua-ts-mode-tests.el ends here
-- 
2.41.0


[-- Attachment #2: Type: text/plain, Size: 3200 bytes --]


john muhl <jm@pub.pink> writes:

>   -- test.lua
>   local function f(x)
>       print(x)
>   end
>
>   emacs -Q test.lua
>   M-x which-function-mode
>
>   Error running timer ‘which-func-update’:
>   (error "Error in which-func-update:
>   (invalid-function #<treesit-node function_declaration in 1-37>)")
>
> Patch to follow.
>
> In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu) of 2024-04-21 built
>  on localhost
> Repository revision: 4773ecb93193495f141e5d60c0c5ded58eaa2c98
> Repository branch: master
> System Description: Fedora Linux 39 (Thirty Nine)
>
> Configured using:
>  'configure --without-x --without-native-compilation'
>
> Configured features:
> ACL DBUS GMP GNUTLS GPM LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY
> INOTIFY PDUMPER SECCOMP SOUND SQLITE3 THREADS TREE_SITTER XIM ZLIB
>
> Important settings:
>   value of $LANG: en_US.UTF-8
>   locale-coding-system: utf-8-unix
>
> Major mode: Lua
>
> Minor modes in effect:
>   which-function-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   show-paren-mode: t
>   electric-indent-mode: t
>   menu-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
>   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
> dnd dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg
> rfc6068 epg-config gnus-util text-property-search time-date subr-x
> mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
> mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
> mail-utils cus-start cus-load which-func imenu cl-seq lua-ts-mode
> treesit cl-loaddefs cl-lib comint regexp-opt ansi-osc ansi-color ring
> term/xterm xterm byte-opt gv bytecomp byte-compile rmc iso-transl
> tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks
> lisp-float-type elisp-mode tabulated-list replace newcomment text-mode
> lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
> easymenu timer select 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 multi-tty
> make-network-process emacs)
>
> Memory information:
> ((conses 16 66424 9105) (symbols 48 7625 0) (strings 32 18124 1778)
>  (string-bytes 1 437334) (vectors 16 8799) (vector-slots 8 77160 4863)
>  (floats 8 28 1) (intervals 56 253 2) (buffers 992 11))


  reply	other threads:[~2024-04-22 15:29 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-22 14:39 bug#70515: 30.0.50; which-function-mode error in lua-ts-mode john muhl
2024-04-22 15:29 ` john muhl [this message]
2024-04-25 15:41   ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87edax76oz.fsf@pub.pink \
    --to=jm@pub.pink \
    --cc=70515@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).