all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@jurta.org>
To: rms@gnu.org
Cc: emacs-devel@gnu.org
Subject: Re: Minibuffer default values list
Date: Sat, 24 Nov 2007 19:54:45 +0200	[thread overview]
Message-ID: <87myt3zk65.fsf@jurta.org> (raw)
In-Reply-To: <E1IvQGf-0007NS-R9@fencepost.gnu.org> (Richard Stallman's message of "Thu, 22 Nov 2007 23:35:53 -0500")

>     If you don't want loading mailcap.el on M-! then what do you think about
>     loading mailcap.el only when the user types M-n in the shell command's
>     minibuffer?
>
> That is an interesting approach.

Below is a patch that implements this approach.

It adds a new variable `goto-history-element-pre-hook' run at the beginning
of `goto-history-element'.  And `shell-command' binds it to a function
that after typing e.g. `M-n M-n' and going to the second default value
(the first element is a static value set to the current file name)
adds more commands extracted from mailcap to `minibuffer-default'.
`dired-read-shell-command' below does the same.

Index: lisp/simple.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/simple.el,v
retrieving revision 1.889
diff -c -r1.889 simple.el
*** lisp/simple.el	15 Nov 2007 16:42:43 -0000	1.889
--- lisp/simple.el	24 Nov 2007 17:54:00 -0000
***************
*** 1298,1307 ****
--- 1298,1311 ----
  
  (defvar minibuffer-temporary-goal-position nil)
  
+ (defvar goto-history-element-pre-hook nil
+   "*List of functions run by `goto-history-element' before changing history position.")
+ 
  (defun goto-history-element (nabs)
    "Puts element of the minibuffer history in the minibuffer.
  The argument NABS specifies the absolute history position."
    (interactive "p")
+   (run-hooks 'goto-history-element-pre-hook)
    (let ((minimum (if minibuffer-default
  		     (- (if (listp minibuffer-default)
  			    (length minibuffer-default)
***************
*** 1962,1971 ****
  In an interactive call, the variable `shell-command-default-error-buffer'
  specifies the value of ERROR-BUFFER."
  
!   (interactive (list (read-from-minibuffer "Shell command: "
! 					   nil nil nil 'shell-command-history)
! 		     current-prefix-arg
! 		     shell-command-default-error-buffer))
    ;; Look for a handler in case default-directory is a remote file name.
    (let ((handler
  	 (find-file-name-handler (directory-file-name default-directory)
--- 1966,1988 ----
  In an interactive call, the variable `shell-command-default-error-buffer'
  specifies the value of ERROR-BUFFER."
  
!   (interactive
!    (let* ((filename
! 	   (if buffer-file-name (file-relative-name buffer-file-name)))
! 	  (default filename)
! 	  (minibuffer-default-set nil)
! 	  (goto-history-element-pre-hook
! 	   (cons (lambda ()
! 		   (when (and (null minibuffer-default-set) (< nabs -1))
! 		     (setq minibuffer-default
! 			   (cons filename (dired-read-shell-command-default
! 					   (list filename))))
! 		     (setq minibuffer-default-set t)))
! 		 goto-history-element-pre-hook)))
!      (list (read-from-minibuffer "Shell command: " nil nil nil
! 				 'shell-command-history default)
! 	   current-prefix-arg
! 	   shell-command-default-error-buffer)))
    ;; Look for a handler in case default-directory is a remote file name.
    (let ((handler
  	 (find-file-name-handler (directory-file-name default-directory)

Index: lisp/dired-aux.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/dired-aux.el,v
retrieving revision 1.160
diff -c -r1.160 dired-aux.el
*** lisp/dired-aux.el	22 Nov 2007 13:49:34 -0000	1.160
--- lisp/dired-aux.el	24 Nov 2007 17:54:25 -0000
***************
*** 517,528 ****
  ;;ARG is the prefix arg and may be used to indicate in the prompt which
  ;;  files are affected.
  ;;This is an extra function so that you can redefine it, e.g., to use gmhist."
!   (dired-mark-pop-up
!    nil 'shell files
!    (function read-string)
!    (format prompt (dired-mark-prompt arg files))
!    nil 'shell-command-history
!    (dired-read-shell-command-default files)))
  
  ;; The in-background argument is only needed in Emacs 18 where
  ;; shell-command doesn't understand an appended ampersand `&'.
--- 517,534 ----
  ;;ARG is the prefix arg and may be used to indicate in the prompt which
  ;;  files are affected.
  ;;This is an extra function so that you can redefine it, e.g., to use gmhist."
!   (let ((minibuffer-default-set nil)
! 	(goto-history-element-pre-hook
! 	 (cons (lambda ()
! 		 (when (and (null minibuffer-default-set) (< nabs 0))
! 		   (setq minibuffer-default (dired-read-shell-command-default files)
! 			 minibuffer-default-set t)))
! 	       goto-history-element-pre-hook)))
!     (dired-mark-pop-up
!      nil 'shell files
!      (function read-string)
!      (format prompt (dired-mark-prompt arg files))
!      nil 'shell-command-history)))
  
  ;; The in-background argument is only needed in Emacs 18 where
  ;; shell-command doesn't understand an appended ampersand `&'.

-- 
Juri Linkov
http://www.jurta.org/emacs/

  reply	other threads:[~2007-11-24 17:54 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-22  0:22 Minibuffer default values list Juri Linkov
2007-10-23  7:12 ` Richard Stallman
2007-10-28 10:57   ` Juri Linkov
2007-11-11 23:42     ` Juri Linkov
2007-11-12  5:59       ` Richard Stallman
2007-11-16  1:27         ` Substitute ? in dired without surrounding whitespace (was: Minibuffer default values list) Juri Linkov
2007-11-17 23:30           ` Richard Stallman
2007-11-17 23:57             ` Substitute ? in dired without surrounding whitespace Juri Linkov
2007-11-18 22:46               ` Richard Stallman
2007-11-19  0:48         ` Minibuffer default values list Juri Linkov
2007-11-22  2:28           ` Richard Stallman
2007-11-22 19:02             ` Juri Linkov
2007-11-23  4:35               ` Richard Stallman
2007-11-24 17:54                 ` Juri Linkov [this message]
2007-11-25  3:43                   ` Richard Stallman
2007-11-25 15:18                     ` mb-pos.el (was: Minibuffer default values list) Juri Linkov
2007-12-02 21:27                       ` Richard Stallman
2007-12-03  0:34                         ` Minibuffer default values list Juri Linkov
2007-12-03 18:43                           ` Richard Stallman
2007-11-25 15:19                     ` Subject: mb-depth.el (was: Minibuffer default values list) Juri Linkov
2008-07-31 17:28                       ` Juri Linkov
2008-07-31 18:08                         ` Drew Adams
2008-07-31 18:24                           ` Juanma Barranquero
2008-07-31 18:35                             ` Drew Adams
2008-08-01 12:34                               ` Juanma Barranquero
2008-08-01 16:27                                 ` Drew Adams
2008-08-01 17:09                                   ` mb-depth.el patch Drew Adams
2008-08-04 13:13                                     ` Juanma Barranquero
2007-11-23  4:35               ` Minibuffer default values list Richard Stallman
2007-11-23 15:05                 ` Stefan Monnier
     [not found]                   ` <E1IvwoM-0004oD-AU@fencepost.gnu.org>
     [not found]                     ` <jwvwss5ptqv.fsf-monnier+emacs@gnu.org>
2007-12-03 18:42                       ` Richard Stallman
2007-11-19  0:52         ` Juri Linkov
2007-11-19 19:02           ` Richard Stallman
2007-11-23  0:48             ` Juri Linkov
2007-11-11 23:43 ` Juri Linkov
2007-11-12  5:59   ` Richard Stallman
2007-11-11 23:45 ` Juri Linkov
2007-11-12  5:59   ` Richard Stallman

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87myt3zk65.fsf@jurta.org \
    --to=juri@jurta.org \
    --cc=emacs-devel@gnu.org \
    --cc=rms@gnu.org \
    /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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.