all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: john muhl <jm@pub.pink>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 74235@debbugs.gnu.org
Subject: bug#74235: [PATCH] ; Remove 'nil' from some 'lua-ts-mode' options
Date: Sat, 09 Nov 2024 14:54:47 -0600	[thread overview]
Message-ID: <87ikswi0vc.fsf@pub.pink> (raw)
In-Reply-To: <86ses1oijv.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 08 Nov 2024 17:24:04 +0200")

[-- Attachment #1: Type: text/plain, Size: 1353 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

>> From: john muhl <jm@pub.pink>
>> Cc: 74235@debbugs.gnu.org
>> Date: Fri, 08 Nov 2024 08:57:37 -0600
>> 
>> Eli Zaretskii <eliz@gnu.org> writes:
>> 
>> >> From: john muhl <jm@pub.pink>
>> >> Date: Wed, 06 Nov 2024 15:22:34 -0600
>> >> 
>> >> * lisp/progmodes/lua-ts-mode.el (lua-ts-luacheck-program):
>> >> (lua-ts-inferior-program): Remove 'nil' as it is never a valid
>> >> choice.  (Bug#74235)
>> >
>> > IMO, the use of these options in the code is not clean: if these
>> > programs are not installed, the commands which reference these options
>> > will signal errors whose diagnostic might not clearly indicate the
>> > root cause.  I would like to see a cleaner handling of such
>> > contingencies by this mode.  Does this make sense, and if so, would
>> > you like to suggest changes to that effect?
>> 
>> The only idea I’ve come up with so far is showing a warning that
>> mentions the incorrectly set option. Does that sound like what you
>> have in mind? If not I’d appreciate some more explicit guidance.
>
> How about signaling user-error from the commands that invoke those
> programs, when they are missing?

Agree that’s better than a warning. It seems flymake already
handles the case where it can’t find the requested program so I
left that part as is.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-some-lua-ts-mode-options-Bug-74235.patch --]
[-- Type: text/x-patch, Size: 6048 bytes --]

From 3e49aa1086f2498ccbad396cf8c799c57919847e Mon Sep 17 00:00:00 2001
From: john muhl <jm@pub.pink>
Date: Sat, 9 Nov 2024 11:01:45 -0600
Subject: [PATCH] ; Fix some 'lua-ts-mode' options (Bug#74235)

* lisp/progmodes/lua-ts-mode.el (lua-ts-luacheck-program):
(lua-ts-inferior-program): Switch to 'file' type and remove 'nil'
as a choice.
(lua-ts-inferior-lua): Ensure 'lua-ts-inferior-program' is a
valid executable.
---
 lisp/progmodes/lua-ts-mode.el | 85 ++++++++++++++++++-----------------
 1 file changed, 44 insertions(+), 41 deletions(-)

diff --git a/lisp/progmodes/lua-ts-mode.el b/lisp/progmodes/lua-ts-mode.el
index 4ea453c9b65..2323461ed4c 100644
--- a/lisp/progmodes/lua-ts-mode.el
+++ b/lisp/progmodes/lua-ts-mode.el
@@ -72,7 +72,7 @@ lua-ts-indent-offset
 
 (defcustom lua-ts-luacheck-program "luacheck"
   "Location of the Luacheck program."
-  :type '(choice (const :tag "None" nil) string)
+  :type 'file
   :version "30.1")
 
 (defcustom lua-ts-inferior-buffer "*Lua*"
@@ -83,7 +83,7 @@ lua-ts-inferior-buffer
 
 (defcustom lua-ts-inferior-program "lua"
   "Program to run in the inferior Lua process."
-  :type '(choice (const :tag "None" nil) string)
+  :type 'file
   :version "30.1")
 
 (defcustom lua-ts-inferior-options '("-i")
@@ -632,47 +632,50 @@ lua-ts-flymake-luacheck
 (defun lua-ts-inferior-lua ()
   "Run a Lua interpreter in an inferior process."
   (interactive)
-  (unless (comint-check-proc lua-ts-inferior-buffer)
-    (apply #'make-comint-in-buffer
-           (string-replace "*" "" lua-ts-inferior-buffer)
-           lua-ts-inferior-buffer
-           lua-ts-inferior-program
-           lua-ts-inferior-startfile
-           lua-ts-inferior-options)
-    (when lua-ts-inferior-history
+  (if (or (not lua-ts-inferior-program)
+          (not (executable-find lua-ts-inferior-program)))
+      (user-error "You must set `lua-ts-inferior-program' to use this command")
+    (unless (comint-check-proc lua-ts-inferior-buffer)
+      (apply #'make-comint-in-buffer
+             (string-replace "*" "" lua-ts-inferior-buffer)
+             lua-ts-inferior-buffer
+             lua-ts-inferior-program
+             lua-ts-inferior-startfile
+             lua-ts-inferior-options)
+      (when lua-ts-inferior-history
         (set-process-sentinel (get-buffer-process lua-ts-inferior-buffer)
                               'lua-ts-inferior--write-history))
-    (with-current-buffer lua-ts-inferior-buffer
-      (setq-local comint-input-ignoredups t
-                  comint-input-ring-file-name lua-ts-inferior-history
-                  comint-prompt-read-only t
-                  comint-prompt-regexp (rx-to-string `(: bol
-                                                         ,lua-ts-inferior-prompt
-                                                         (1+ space))))
-      (comint-read-input-ring t)
-      (add-hook 'comint-preoutput-filter-functions
-                (lambda (string)
-                  (if (equal string (concat lua-ts-inferior-prompt-continue " "))
-                      string
-                    (concat
-                     ;; Filter out the extra prompt characters that
-                     ;; accumulate in the output when sending regions
-                     ;; to the inferior process.
-                     (replace-regexp-in-string (rx-to-string
-                                                `(: bol
-                                                    (* ,lua-ts-inferior-prompt
-                                                       (? ,lua-ts-inferior-prompt)
-                                                       (1+ space))
-                                                    (group (* nonl))))
-                                               "\\1" string)
-                     ;; Re-add the prompt for the next line.
-                     lua-ts-inferior-prompt " ")))
-                nil t)))
-  (select-window (display-buffer lua-ts-inferior-buffer
-                                 '((display-buffer-reuse-window
-                                    display-buffer-pop-up-window)
-                                   (reusable-frames . t))))
-  (get-buffer-process (current-buffer)))
+      (with-current-buffer lua-ts-inferior-buffer
+        (setq-local comint-input-ignoredups t
+                    comint-input-ring-file-name lua-ts-inferior-history
+                    comint-prompt-read-only t
+                    comint-prompt-regexp (rx-to-string `(: bol
+                                                           ,lua-ts-inferior-prompt
+                                                           (1+ space))))
+        (comint-read-input-ring t)
+        (add-hook 'comint-preoutput-filter-functions
+                  (lambda (string)
+                    (if (equal string (concat lua-ts-inferior-prompt-continue " "))
+                        string
+                      (concat
+                       ;; Filter out the extra prompt characters that
+                       ;; accumulate in the output when sending regions
+                       ;; to the inferior process.
+                       (replace-regexp-in-string
+                        (rx-to-string `(: bol
+                                          (* ,lua-ts-inferior-prompt
+                                             (? ,lua-ts-inferior-prompt)
+                                             (1+ space))
+                                          (group (* nonl))))
+                        "\\1" string)
+                       ;; Re-add the prompt for the next line.
+                       lua-ts-inferior-prompt " ")))
+                  nil t)))
+    (select-window (display-buffer lua-ts-inferior-buffer
+                                   '((display-buffer-reuse-window
+                                      display-buffer-pop-up-window)
+                                     (reusable-frames . t))))
+    (get-buffer-process (current-buffer))))
 
 (defun lua-ts-send-buffer ()
   "Send current buffer to the inferior Lua process."
-- 
2.47.0


  reply	other threads:[~2024-11-09 20:54 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-06 21:19 bug#74235: [PATCH] ; Remove 'nil' from some 'lua-ts-mode' options john muhl
2024-11-06 21:22 ` john muhl
2024-11-07  5:58   ` Eli Zaretskii
2024-11-07 15:04     ` john muhl
2024-11-08 14:57     ` john muhl
2024-11-08 15:24       ` Eli Zaretskii
2024-11-09 20:54         ` john muhl [this message]
2024-11-10  5:43           ` Eli Zaretskii
2024-11-10 14:48             ` john muhl
2024-11-14  8:26               ` Eli Zaretskii
2024-11-15  3:54                 ` john muhl
2024-11-10  5:45           ` Philip Kaludercic

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

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

  git send-email \
    --in-reply-to=87ikswi0vc.fsf@pub.pink \
    --to=jm@pub.pink \
    --cc=74235@debbugs.gnu.org \
    --cc=eliz@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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.