help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Only set VISUAL for edit-and-execute-command


From: Chet Ramey
Subject: Re: Only set VISUAL for edit-and-execute-command
Date: Wed, 29 May 2024 10:49:20 -0400
User-agent: Mozilla Thunderbird

On 5/23/24 11:11 PM, Mike wrote:
I am working on a script that I'd like to be invoked
by edit-and-execute-command. Currently, it works fine if I set the VISUAL
environment variable and press C-xC-e. However, I don't want to set VISUAL
to this script globally because I only want it to run in the context of
C-xC-e. I'd like to keep VISUAL set to nvim so that other applications can
still use VISUAL as expected.

I see the source for edit_and_execute_command looks for VISUAL and then
EDITOR.

#define VI_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-vi}}\""
#define EMACS_EDIT_COMMAND "fc -e \"${VISUAL:-${EDITOR:-emacs}}\""
#define POSIX_VI_EDIT_COMMAND "fc -e vi"

Is there a way to create a binding that could in a local scope set VISUAL
to my script and then trigger edit-and-execute-command?

There isn't. Not in the current version of bash, at least. There are a
couple of things you can do without changes to bash (I have not tested
either approach).

If you don't use `fc' for anything else, write a shell function to replace
it and call `builtin fc -e whatever' from within the function. For
completeness, you might want to have this function handle a single digit
argument and operate on that history list entry instead of the current
line.

You could also write a shell function, bind it with bind -x, and use it to
replace the default binding. You'd have to perform temp file management
yourself, then eval the edited contents of the file manually, and clear
READLINE_LINE, but it would probably work just fine.

Ideally, there would be another environment variable that I could hook into
just for this specific case. For example if the source had something like
this:

${EDIT_AND_EXECUTE_COMMAND:-${VISUAL:-${EDITOR:-emacs}}}

That's not a great name, but I'll consider this functionality for a future
bash version.

Chet
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]