From: Philip Kaludercic <philipk@posteo.net>
To: john muhl <jm@pub.pink>
Cc: Eli Zaretskii <eliz@gnu.org>, 74235@debbugs.gnu.org
Subject: bug#74235: [PATCH] ; Remove 'nil' from some 'lua-ts-mode' options
Date: Sun, 10 Nov 2024 05:45:14 +0000 [thread overview]
Message-ID: <87y11r3amt.fsf@posteo.net> (raw)
In-Reply-To: <87ikswi0vc.fsf@pub.pink> (john muhl's message of "Sat, 09 Nov 2024 14:54:47 -0600")
john muhl <jm@pub.pink> writes:
> 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.
>
> 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")
Isn't this error message misleading as `lua-ts-inferior-program' can be
set (as it is by default), but the executable couldn't be located (which
isn't a mistake by the user, but just due to Lua not being installed)?
> + (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))))
This should be equivalent to
(rx bol (literal lua-ts-inferior-prompt) (1+ space))
that macroexpands to
(concat "^" (regexp-quote inferior-lisp-program) "[[:space:]]+")
without the need to load rx at run-time.
> + (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."
--
Philip Kaludercic on siskin
prev parent reply other threads:[~2024-11-10 5:45 UTC|newest]
Thread overview: 11+ 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
2024-11-10 5:43 ` Eli Zaretskii
2024-11-10 14:48 ` john muhl
2024-11-14 8:26 ` Eli Zaretskii
2024-11-10 5:45 ` Philip Kaludercic [this message]
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=87y11r3amt.fsf@posteo.net \
--to=philipk@posteo.net \
--cc=74235@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=jm@pub.pink \
/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).