From: Kevin Rodgers <ihs_4664@yahoo.com>
Subject: Re: Inject some eshell features into shell?
Date: Fri, 17 Oct 2003 13:31:20 -0600 [thread overview]
Message-ID: <3F904388.3020103@yahoo.com> (raw)
In-Reply-To: 86fzhuqome.fsf@slowfox.dyndns.org
Kai Grossjohann wrote:
> So maybe it would be nifty if one could somehow hook a function into
> the RET key in shell-mode that looks if it recognizes the command on
> the current line. If so, it invokes a given Lisp function, depending
> on the command. That way, I could get the "vi foo.c" back. Other
> candidates would be "man" and "less", I guess.
Here's a start. It's main deficiency is that it only works for commands
that take zero or one argument:
(defun shell-maybe-send (process command)
"Maybe send the shell PROCESS the COMMAND string.
But if COMMAND can be interpreted as an Emacs command (e.g. \"find-file foo.c\"),
evaluate it instead."
(with-syntax-table emacs-lisp-mode-syntax-table
(let* ((command-name (and (string-match "\\`\\(\\(\\sw\\|\\s_\\)+\\)\\s *"
command)
(match-string 1 command)))
(command-symbol (and command-name
(intern-soft command-name))))
(if (and command-symbol (commandp command-symbol))
(if (= (match-end 0) (length command))
(funcall command-symbol)
(funcall command-symbol (substring command (match-end 0))))
(comint-simple-send process command)))))
(add-hook 'shell-mode-hook
(lambda () (setq comint-input-sender 'shell-maybe-send)))
--
Kevin Rodgers
next prev parent reply other threads:[~2003-10-17 19:31 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-15 19:36 Inject some eshell features into shell? Kai Grossjohann
2003-10-15 21:07 ` Stefan Monnier
2003-10-17 19:31 ` Kevin Rodgers [this message]
2003-10-17 22:44 ` Kevin Rodgers
2003-10-19 10:56 ` Kai Grossjohann
[not found] ` <mailman.1974.1066561040.21628.help-gnu-emacs@gnu.org>
2003-10-20 16:55 ` Kevin Rodgers
2003-10-19 12:31 ` Loops and scripting in eshell (was: Inject some eshell features into shell?) Oliver Scholz
2003-10-19 15:06 ` Loops and scripting in eshell Kai Grossjohann
[not found] ` <mailman.1980.1066576051.21628.help-gnu-emacs@gnu.org>
2003-10-19 20:04 ` Oliver Scholz
2003-10-19 20:15 ` Oliver Scholz
2003-10-19 20:45 ` David Kastrup
2003-10-20 21:27 ` Kai Grossjohann
2003-10-20 23:44 ` Oliver Scholz
2003-10-21 9:05 ` David Kastrup
2003-10-21 16:05 ` Kai Grossjohann
2003-10-20 19:48 ` Reiner Steib
2003-10-21 8:55 ` Oliver Scholz
2003-10-22 10:55 ` Inject some eshell features into shell? Matthias Meulien
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=3F904388.3020103@yahoo.com \
--to=ihs_4664@yahoo.com \
/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.
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).