-
-
22 Aug 2020 18:12:51 UTC
- Distribution: Term-CallEditor
- Module version: 1.01
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Repository
- Issues (0)
- Testers (794 / 0 / 0)
- Kwalitee
Bus factor: 1- 63.51% Coverage
- License: bsd
- Perl: v5.8.0
- Activity
24 month- Tools
- Download (9.84KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- Exporter
- File::Temp
- IO::Handle
- POSIX
- Text::ParseWords
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
NAME
Term::CallEditor - solicit data from an external editor
SYNOPSIS
use Term::CallEditor qw/solicit/; my $fh = solicit('FOO: please replace this text'); die "$Term::CallEditor::errstr\n" unless $fh; print while readline $fh;
DESCRIPTION
This module calls an external editor via the
solicit()
function, then returns any data from this editor as a file handle. The environment variablesVISUAL
and thenEDITOR
are consulted for a program name to run, otherwise falling back to vi(1). The Text::ParseWordsshellwords()
function is used to expand the environment variables.solicit()
returns a temporary file handle pointing to what was written in the editor (and also the filename in list context).FUNCTION
- solicit
-
solicit()
as a second argument accepts a number of optional parameters as a hash reference.solicit( "\x{8ACB}", { skip_interactive => 1, binmode_layer => ':utf8' } );
- BINMODE => BOOLEAN
-
If true, enables
binmode
on the filehandle prior to writing the message to it. - DEFAULT_EDITOR => string
-
What to use as the default editor instead of vi(1).
- NOSYNC => BOOLEAN
-
If true,
sync()
from IO::Handle will not be called.sync()
is not called when on Win32, but otherwise is called by default. - binmode_layer => binmode layer
-
If set, enables
binmode
on the filehandle prior to writing the message to it. - safe_level => NUMBER
-
Set a custom
safe_level
value for the File::Temp method of that name. - skip_interactive => BOOLEAN
-
If true,
solicit
skips making a test to see whether the terminal is interactive.
On error,
solicit()
returnsundef
. Consult$Term::CallEditor::errstr
for details. Note that File::Temp may throw a fatal error if thesafe_level
checks fail, so paranoid coders should wrap thesolicit
call in aneval
block (or instead use something like Syntax::Keyword::Try).
EXAMPLES
See also the
eg/solicit
script under the module distribution.- Pass in a block of text to the editor
-
Use a here doc:
my $fh = solicit(<< "END_BLARB"); FOO: This is an example designed to span multiple lines for FOO: the sake of an example that span multiple lines. END_BLARB
- Shell Exec Wrapper
-
A shell exec wrapper may be necessary as a target for EDITOR (or VISUAL) as not all programs that support EDITOR (or VISUAL) perform shell word splitting on the input, and the
shellword
splitting (now) done by this module may not suffice for complicated shell commands:#!/bin/sh exec youreditor --some-arg "$@"
BUGS
No known bugs.
Reporting Bugs
Newer versions of this module may be available from CPAN.
If the bug is in the latest version, send a report to the author. Patches that fix problems or add new features are welcome.
https://github.com/thrig/Term-CallEditor
Known Issues
This module relies heavily on the Unix terminal, permissions on the temporary directory (for the File::Temp module
safe_level
call), whethersystem()
can actually run theEDITOR
environment variable, and so forth.SEE ALSO
vipe(1) of moreutils to use vi(1) in pipes.
https://unix.stackexchange.com/questions/4859/visual-vs-editor-what-s-the-difference
"Most applications treat $VISUAL as a shell snippet that they append the (shell-quoted) file name to, but some treat it as the name of an executable which they may or may not search in $PATH. So it's best to set VISUAL (and EDITOR) to the full path to an executable (which could be a wrapper script if you want e.g. options)." -- Gilles
AUTHOR
thrig - Jeremy Mates (cpan:JMATES)
<jmates at cpan.org>
COPYRIGHT
Copyright 2004 Jeremy Mates
This program is distributed under the (Revised) BSD License: https://opensource.org/licenses/BSD-3-Clause
HISTORY
Inspired from the CVS prompt-user-for-commit-message functionality.
Module Install Instructions
To install Term::CallEditor, copy and paste the appropriate command in to your terminal.
cpanm Term::CallEditor
perl -MCPAN -e shell install Term::CallEditor
For more information on module installation, please visit the detailed CPAN module installation guide.