From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Kevin Rodgers Newsgroups: gmane.emacs.help Subject: Re: Inject some eshell features into shell? Date: Fri, 17 Oct 2003 13:31:20 -0600 Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Message-ID: <3F904388.3020103@yahoo.com> References: <86fzhuqome.fsf@slowfox.dyndns.org> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1066419989 18678 80.91.224.253 (17 Oct 2003 19:46:29 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 17 Oct 2003 19:46:29 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Fri Oct 17 21:46:26 2003 Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1AAaYM-0002LB-00 for ; Fri, 17 Oct 2003 21:46:26 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.24) id 1AAaXn-00080v-NV for geh-help-gnu-emacs@m.gmane.org; Fri, 17 Oct 2003 15:45:51 -0400 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fu-berlin.de!uni-berlin.de!170.207.51.80!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 35 Original-NNTP-Posting-Host: 170.207.51.80 Original-X-Trace: news.uni-berlin.de 1066419067 26145746 170.207.51.80 (16 [82742]) User-Agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:0.9.4.1) Gecko/20020406 Netscape6/6.2.2 X-Accept-Language: en-us Original-Xref: shelby.stanford.edu gnu.emacs.help:117376 Original-To: help-gnu-emacs@gnu.org X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.2 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: main.gmane.org gmane.emacs.help:13306 X-Report-Spam: http://spam.gmane.org/gmane.emacs.help:13306 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