1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-21 05:00:47 -08:00

auto upstream

This commit is contained in:
Joakim Verona 2013-01-08 00:03:39 +01:00
commit 1c05adeed6
13 changed files with 267 additions and 86 deletions

View file

@ -1,3 +1,8 @@
2013-01-07 Bastien Guerry <bzg@gnu.org>
* help.texi (Apropos): Document `apropos-user-option' and update
the doc for `apropos-variable'.
2013-01-05 Glenn Morris <rgm@gnu.org> 2013-01-05 Glenn Morris <rgm@gnu.org>
* text.texi (HTML Mode): Remove deleted nxml C-RET binding. * text.texi (HTML Mode): Remove deleted nxml C-RET binding.

View file

@ -295,11 +295,16 @@ search for noninteractive functions too.
Search for functions and variables. Both interactive functions Search for functions and variables. Both interactive functions
(commands) and noninteractive functions can be found by this. (commands) and noninteractive functions can be found by this.
@item M-x apropos-variable @item M-x apropos-user-option
@findex apropos-variable @findex apropos-user-option
Search for user-customizable variables. With a prefix argument, Search for user-customizable variables. With a prefix argument,
search for non-customizable variables too. search for non-customizable variables too.
@item M-x apropos-variable
@findex apropos-variable
Search for variables. With a prefix argument, search for
customizable variables only.
@item M-x apropos-value @item M-x apropos-value
@findex apropos-value @findex apropos-value
Search for variables whose values match the specified pattern. With a Search for variables whose values match the specified pattern. With a

View file

@ -1,3 +1,50 @@
2013-01-07 Bastien Guerry <bzg@gnu.org>
* menu-bar.el (menu-bar-search-documentation-menu): Use
`apropos-user-option' and fix the help message.
2013-01-07 Bastien Guerry <bzg@gnu.org>
* apropos.el (apropos-do-all): Update docstring.
(apropos-user-option-button): New face.
(apropos-user-option): Rename from `apropos-variable' and update
docstring.
(apropos-variable): Rewrite, now show all variables by default.
(apropos-print): Mention "User option" instead of "Variable" when
printing doc for user options. (Bug#13276)
2013-01-07 Jürgen Hötzel <juergen@archlinux.org>
* net/tramp-adb.el (tramp-do-parse-file-attributes-with-ls):
Handle filename correctly, when parsing "source -> target" symlink
output.
(tramp-adb-handle-set-file-times): New defun.
2013-01-07 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/advice.el (ad-activate-advised-definition): Refresh the
advice list when the interactive-spec of ad-Advice-* changes.
2013-01-07 Katsumi Yamaoka <yamaoka@jpl.org>
* wid-edit.el (widget-default-get): Work for inlined elements.
(Bug#12670)
2013-01-07 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-default-host-alist): New defcustom.
(tramp-find-host): Use it.
(tramp-eshell-directory-change): Move from tramp-sh.el. Add to
`eshell-directory-change-hook'.
* net/tramp-adb.el (top): Add adb specific entry in
`tramp-default-host-alist'.
(tramp-adb-file-name-host): Remove function.
(tramp-adb-execute-adb-command, tramp-adb-maybe-open-connection):
Use `tramp-file-name-host' instead of `tramp-adb-file-name-host'.
* net/tramp-sh.el: Move eshell integration code to tramp.el.
2013-01-06 Jürgen Hötzel <juergen@archlinux.org> 2013-01-06 Jürgen Hötzel <juergen@archlinux.org>
* net/tramp-adb.el (tramp-methods): Add `tramp-tmpdir' entry. * net/tramp-adb.el (tramp-methods): Add `tramp-tmpdir' entry.
@ -5,9 +52,9 @@
2013-01-06 Michael Albinus <michael.albinus@gmx.de> 2013-01-06 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-adb.el (tramp-adb-ls-toolbox-regexp): The file size can * net/tramp-adb.el (tramp-adb-ls-toolbox-regexp): The file size can
consist of mor than one digit. consist of more than one digit.
(tramp-adb-file-name-handler-alist): Use (tramp-adb-file-name-handler-alist):
`tramp-handle-file-exists-p' consistently. Use `tramp-handle-file-exists-p' consistently.
(tramp-adb-file-name-handler): Don't tweak `tramp-default-host'. (tramp-adb-file-name-handler): Don't tweak `tramp-default-host'.
(tramp-adb-handle-file-exists-p): Remove function. (tramp-adb-handle-file-exists-p): Remove function.
(tramp-adb-file-name-host): New defun. (tramp-adb-file-name-host): New defun.
@ -141,8 +188,8 @@
(tramp-do-copy-or-rename-file): Ignore errors when calling (tramp-do-copy-or-rename-file): Ignore errors when calling
`set-file-extended-attributes'. `set-file-extended-attributes'.
* net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add * net/tramp-smb.el (tramp-smb-file-name-handler-alist):
handler for `file-acl'. Add handler for `file-acl'.
(tramp-smb-handle-file-acl): New defun. (tramp-smb-handle-file-acl): New defun.
2013-01-02 Jay Belanger <jay.p.belanger@gmail.com> 2013-01-02 Jay Belanger <jay.p.belanger@gmail.com>

View file

@ -69,7 +69,7 @@
"Non nil means apropos commands will search more extensively. "Non nil means apropos commands will search more extensively.
This may be slower. This option affects the following commands: This may be slower. This option affects the following commands:
`apropos-variable' will search all variables, not just user variables. `apropos-user-option' will search all variables, not just user options.
`apropos-command' will also search non-interactive functions. `apropos-command' will also search non-interactive functions.
`apropos' will search all symbols, not just functions, variables, faces, `apropos' will search all symbols, not just functions, variables, faces,
and those with property lists. and those with property lists.
@ -115,6 +115,12 @@ include key-binding information in its output."
:group 'apropos :group 'apropos
:version "24.3") :version "24.3")
(defface apropos-user-option-button
'((t (:inherit (font-lock-variable-name-face button))))
"Button face indicating a user option in Apropos."
:group 'apropos
:version "24.4")
(defface apropos-misc-button (defface apropos-misc-button
'((t (:inherit (font-lock-constant-face button)))) '((t (:inherit (font-lock-constant-face button))))
"Button face indicating a miscellaneous object type in Apropos." "Button face indicating a miscellaneous object type in Apropos."
@ -261,6 +267,15 @@ term, and the rest of the words are alternative terms.")
'action (lambda (button) 'action (lambda (button)
(describe-variable (button-get button 'apropos-symbol)))) (describe-variable (button-get button 'apropos-symbol))))
(define-button-type 'apropos-user-option
'apropos-label "User option"
'apropos-short-label "o"
'face 'apropos-user-option-button
'help-echo "mouse-2, RET: Display more help on this user option"
'follow-link t
'action (lambda (button)
(describe-variable (button-get button 'apropos-symbol))))
(define-button-type 'apropos-face (define-button-type 'apropos-face
'apropos-label "Face" 'apropos-label "Face"
'apropos-short-label "F" 'apropos-short-label "F"
@ -461,15 +476,15 @@ This requires that at least 2 keywords (unless only one was given)."
This is used to decide whether to print the result's type or not.") This is used to decide whether to print the result's type or not.")
;;;###autoload ;;;###autoload
(defun apropos-variable (pattern &optional do-all) (defun apropos-user-option (pattern &optional do-all)
"Show user variables that match PATTERN. "Show user options that match PATTERN.
PATTERN can be a word, a list of words (separated by spaces), PATTERN can be a word, a list of words (separated by spaces),
or a regexp (using some regexp special characters). If it is a word, or a regexp (using some regexp special characters). If it is a word,
search for matches for that word as a substring. If it is a list of words, search for matches for that word as a substring. If it is a list of words,
search for matches for any two (or more) of those words. search for matches for any two (or more) of those words.
With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also show With \\[universal-argument] prefix, or if `apropos-do-all' is non-nil, also show
normal variables." variables, not just user options."
(interactive (list (apropos-read-pattern (interactive (list (apropos-read-pattern
(if (or current-prefix-arg apropos-do-all) (if (or current-prefix-arg apropos-do-all)
"variable" "user option")) "variable" "user option"))
@ -481,6 +496,17 @@ normal variables."
(get symbol 'variable-documentation))) (get symbol 'variable-documentation)))
'custom-variable-p))) 'custom-variable-p)))
;;;###autoload
(defun apropos-variable (pattern &optional do-not-all)
"Show variables that match PATTERN.
When DO-NOT-ALL is not-nil, show user options only, i.e. behave
like `apropos-user-option'."
(interactive (list (apropos-read-pattern
(if current-prefix-arg "user option" "variable"))
current-prefix-arg))
(let ((apropos-do-all (if do-not-all nil t)))
(apropos-user-option pattern)))
;; For auld lang syne: ;; For auld lang syne:
;;;###autoload ;;;###autoload
(defalias 'command-apropos 'apropos-command) (defalias 'command-apropos 'apropos-command)
@ -1099,7 +1125,11 @@ If non-nil TEXT is a string that will be printed as a heading."
'apropos-macro 'apropos-macro
'apropos-function)) 'apropos-function))
(not nosubst)) (not nosubst))
(apropos-print-doc 3 'apropos-variable (not nosubst)) (apropos-print-doc 3
(if (custom-variable-p symbol)
'apropos-user-option
'apropos-variable)
(not nosubst))
(apropos-print-doc 7 'apropos-group t) (apropos-print-doc 7 'apropos-group t)
(apropos-print-doc 6 'apropos-face t) (apropos-print-doc 6 'apropos-face t)
(apropos-print-doc 5 'apropos-widget t) (apropos-print-doc 5 'apropos-widget t)

View file

@ -2917,13 +2917,18 @@ If COMPILE is nil then the result depends on the value of
"Redefine FUNCTION with its advised definition from cache or scratch. "Redefine FUNCTION with its advised definition from cache or scratch.
The resulting FUNCTION will be compiled if `ad-should-compile' returns t. The resulting FUNCTION will be compiled if `ad-should-compile' returns t.
The current definition and its cache-id will be put into the cache." The current definition and its cache-id will be put into the cache."
(let ((verified-cached-definition (let* ((verified-cached-definition
(if (ad-verify-cache-id function) (if (ad-verify-cache-id function)
(ad-get-cache-definition function))) (ad-get-cache-definition function)))
(advicefunname (ad-get-advice-info-field function 'advicefunname))) (advicefunname (ad-get-advice-info-field function 'advicefunname))
(old-ispec (interactive-form advicefunname)))
(fset advicefunname (fset advicefunname
(or verified-cached-definition (or verified-cached-definition
(ad-make-advised-definition function))) (ad-make-advised-definition function)))
(unless (equal (interactive-form advicefunname) old-ispec)
;; If the interactive-spec of advicefunname has changed, force nadvice to
;; refresh its copy.
(advice-remove function advicefunname))
(advice-add function :around advicefunname) (advice-add function :around advicefunname)
(if (ad-should-compile function compile) (if (ad-should-compile function compile)
(ad-compile-function function)) (ad-compile-function function))

View file

@ -1,3 +1,13 @@
2013-01-07 Daiki Ueno <ueno@gnu.org>
* mml-smime.el: Support signing by sender.
Requested by Uwe Brauer.
(mml-smime-sign-with-sender): New user option analogous
to mml2015-sign-with-sender.
(mml-smime-epg-sign): Respect mml-smime-sign-with-sender.
(mml-smime-epg-find-usable-secret-key): New helper function copied from
mml2015.el.
2012-12-31 Lars Magne Ingebrigtsen <larsi@gnus.org> 2012-12-31 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-msg.el (gnus-inews-insert-gcc): Don't insert Gcc headers if Gnus * gnus-msg.el (gnus-inews-insert-gcc): Don't insert Gcc headers if Gnus

View file

@ -74,6 +74,11 @@ Whether the passphrase is cached at all is controlled by
:group 'mime-security :group 'mime-security
:type '(repeat (string :tag "Key ID"))) :type '(repeat (string :tag "Key ID")))
(defcustom mml-smime-sign-with-sender nil
"If t, use message sender so find a key to sign with."
:group 'mime-security
:type 'boolean)
(defun mml-smime-sign (cont) (defun mml-smime-sign (cont)
(let ((func (nth 1 (assq mml-smime-use mml-smime-function-alist)))) (let ((func (nth 1 (assq mml-smime-use mml-smime-function-alist))))
(if func (if func
@ -366,6 +371,24 @@ Whether the passphrase is cached at all is controlled by
(setq pointer (cdr pointer)))) (setq pointer (cdr pointer))))
(setq keys (cdr keys))))) (setq keys (cdr keys)))))
;; XXX: since gpg --list-secret-keys does not return validity of each
;; key, `mml-smime-epg-find-usable-key' defined above is not enough for
;; secret keys. The function `mml-smime-epg-find-usable-secret-key'
;; below looks at appropriate public keys to check usability.
(defun mml-smime-epg-find-usable-secret-key (context name usage)
(let ((secret-keys (epg-list-keys context name t))
secret-key)
(while (and (not secret-key) secret-keys)
(if (mml-smime-epg-find-usable-key
(epg-list-keys context (epg-sub-key-fingerprint
(car (epg-key-sub-key-list
(car secret-keys)))))
usage)
(setq secret-key (car secret-keys)
secret-keys nil)
(setq secret-keys (cdr secret-keys))))
secret-key))
(autoload 'mml-compute-boundary "mml") (autoload 'mml-compute-boundary "mml")
;; We require mm-decode, which requires mm-bodies, which autoloads ;; We require mm-decode, which requires mm-bodies, which autoloads
@ -376,29 +399,36 @@ Whether the passphrase is cached at all is controlled by
(let* ((inhibit-redisplay t) (let* ((inhibit-redisplay t)
(context (epg-make-context 'CMS)) (context (epg-make-context 'CMS))
(boundary (mml-compute-boundary cont)) (boundary (mml-compute-boundary cont))
(sender (message-options-get 'message-sender))
(signer-names (or mml-smime-signers
(if (and mml-smime-sign-with-sender sender)
(list (concat "<" sender ">")))))
signer-key signer-key
(signers (signers
(or (message-options-get 'mml-smime-epg-signers) (or (message-options-get 'mml-smime-epg-signers)
(message-options-set (message-options-set
'mml-smime-epg-signers 'mml-smime-epg-signers
(if (eq mm-sign-option 'guided) (if (eq mm-sign-option 'guided)
(epa-select-keys context "\ (epa-select-keys context "\
Select keys for signing. Select keys for signing.
If no one is selected, default secret key is used. " If no one is selected, default secret key is used. "
mml-smime-signers t) signer-names
(if mml-smime-signers t)
(mapcar (if (or sender mml-smime-signers)
(lambda (signer) (delq nil
(setq signer-key (mml-smime-epg-find-usable-key (mapcar
(epg-list-keys context signer t) (lambda (signer)
'sign)) (setq signer-key
(unless (or signer-key (mml-smime-epg-find-usable-secret-key
(y-or-n-p context signer 'sign))
(format "No secret key for %s; skip it? " (unless (or signer-key
(y-or-n-p
(format
"No secret key for %s; skip it? "
signer))) signer)))
(error "No secret key for %s" signer)) (error "No secret key for %s" signer))
signer-key) signer-key)
mml-smime-signers)))))) signer-names)))))))
signature micalg) signature micalg)
(epg-context-set-signers context signers) (epg-context-set-signers context signers)
(if mml-smime-cache-passphrase (if mml-smime-cache-passphrase

View file

@ -1637,8 +1637,8 @@ key, a click, or a menu-item"))
'(menu-item "Find Options by Value..." apropos-value '(menu-item "Find Options by Value..." apropos-value
:help "Find variables whose values match a regexp")) :help "Find variables whose values match a regexp"))
(bindings--define-key menu [find-options-by-name] (bindings--define-key menu [find-options-by-name]
'(menu-item "Find Options by Name..." apropos-variable '(menu-item "Find Options by Name..." apropos-user-option
:help "Find variables whose names match a regexp")) :help "Find user options whose names match a regexp"))
(bindings--define-key menu [find-commands-by-name] (bindings--define-key menu [find-commands-by-name]
'(menu-item "Find Commands by Name..." apropos-command '(menu-item "Find Commands by Name..." apropos-command
:help "Find commands whose names match a regexp")) :help "Find commands whose names match a regexp"))

View file

@ -66,8 +66,12 @@
"[[:space:]]+\\(.*\\)$")) ; \6 filename "[[:space:]]+\\(.*\\)$")) ; \6 filename
;;;###tramp-autoload ;;;###tramp-autoload
(add-to-list 'tramp-methods `(,tramp-adb-method (add-to-list 'tramp-methods
(tramp-tmpdir "/data/local/tmp"))) `(,tramp-adb-method
(tramp-tmpdir "/data/local/tmp")))
;;;###tramp-autoload
(add-to-list 'tramp-default-host-alist `(,tramp-adb-method nil ""))
;;;###tramp-autoload ;;;###tramp-autoload
(eval-after-load 'tramp (eval-after-load 'tramp
@ -119,7 +123,7 @@
(vc-registered . ignore) ;no vc control files on Android devices (vc-registered . ignore) ;no vc control files on Android devices
(write-region . tramp-adb-handle-write-region) (write-region . tramp-adb-handle-write-region)
(set-file-modes . tramp-adb-handle-set-file-modes) (set-file-modes . tramp-adb-handle-set-file-modes)
(set-file-times . ignore) (set-file-times . tramp-adb-handle-set-file-times)
(copy-file . tramp-adb-handle-copy-file) (copy-file . tramp-adb-handle-copy-file)
(rename-file . tramp-adb-handle-rename-file) (rename-file . tramp-adb-handle-rename-file)
(process-file . tramp-adb-handle-process-file) (process-file . tramp-adb-handle-process-file)
@ -307,7 +311,9 @@ pass to the OPERATION."
(and is-symlink (and is-symlink
(cadr (split-string name "\\( -> \\|\n\\)"))))) (cadr (split-string name "\\( -> \\|\n\\)")))))
(push (list (push (list
name (if is-symlink
(car (split-string name "\\( -> \\|\n\\)"))
name)
(or is-dir symlink-target) (or is-dir symlink-target)
1 ;link-count 1 ;link-count
;; no way to handle numeric ids in Androids ash ;; no way to handle numeric ids in Androids ash
@ -611,6 +617,19 @@ But handle the case, if the \"test\" command is not available."
v (format "chmod %s %s" (tramp-compat-decimal-to-octal mode) localname) v (format "chmod %s %s" (tramp-compat-decimal-to-octal mode) localname)
"Error while changing file's mode %s" filename))) "Error while changing file's mode %s" filename)))
(defun tramp-adb-handle-set-file-times (filename &optional time)
"Like `set-file-times' for Tramp files."
(with-parsed-tramp-file-name filename nil
(tramp-flush-file-property v localname)
(let ((time (if (or (null time) (equal time '(0 0)))
(current-time)
time)))
(tramp-adb-command-exit-status
;; use shell arithmetic because of Emacs integer size limit
v (format "touch -t $(( %d * 65536 + %d )) %s"
(car time) (cadr time)
(tramp-shell-quote-argument localname))))))
(defun tramp-adb-handle-copy-file (defun tramp-adb-handle-copy-file
(filename newname &optional ok-if-already-exists keep-date (filename newname &optional ok-if-already-exists keep-date
preserve-uid-gid preserve-extended-attributes) preserve-uid-gid preserve-extended-attributes)
@ -937,17 +956,10 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
;; Helper functions. ;; Helper functions.
(defun tramp-adb-file-name-host (vec)
"Return host component of VEC.
If it is equal to the default value of `tramp-default-host', `nil' is returned."
(let ((host (tramp-file-name-host vec)))
(unless (equal host (eval (car (get 'tramp-default-host 'standard-value))))
host)))
(defun tramp-adb-execute-adb-command (vec &rest args) (defun tramp-adb-execute-adb-command (vec &rest args)
"Returns nil on success error-output on failure." "Returns nil on success error-output on failure."
(when (tramp-adb-file-name-host vec) (when (> (length (tramp-file-name-host vec)) 0)
(setq args (append (list "-s" (tramp-adb-file-name-host vec)) args))) (setq args (append (list "-s" (tramp-file-name-host vec)) args)))
(with-temp-buffer (with-temp-buffer
(prog1 (prog1
(unless (zerop (apply 'call-process (tramp-adb-program) nil t nil args)) (unless (zerop (apply 'call-process (tramp-adb-program) nil t nil args))
@ -1048,6 +1060,7 @@ Does not do anything if a connection is already open, but re-opens the
connection if a previous connection has died for some reason." connection if a previous connection has died for some reason."
(let* ((buf (tramp-get-connection-buffer vec)) (let* ((buf (tramp-get-connection-buffer vec))
(p (get-buffer-process buf)) (p (get-buffer-process buf))
(host (tramp-file-name-host vec))
(devices (mapcar 'cadr (tramp-adb-parse-device-names nil)))) (devices (mapcar 'cadr (tramp-adb-parse-device-names nil))))
(unless (unless
(and p (processp p) (memq (process-status p) '(run open))) (and p (processp p) (memq (process-status p) '(run open)))
@ -1055,21 +1068,17 @@ connection if a previous connection has died for some reason."
(when (and p (processp p)) (delete-process p)) (when (and p (processp p)) (delete-process p))
(if (not devices) (if (not devices)
(tramp-error vec 'file-error "No device connected")) (tramp-error vec 'file-error "No device connected"))
(if (and (tramp-adb-file-name-host vec) (if (and (> (length host) 0) (not (member host devices)))
(not (member (tramp-adb-file-name-host vec) devices))) (tramp-error vec 'file-error "Device %s not connected" host))
(tramp-error (if (and (> (length devices) 1) (zerop (length host)))
vec 'file-error
"Device %s not connected" (tramp-adb-file-name-host vec)))
(if (and (not (eq (length devices) 1))
(not (tramp-adb-file-name-host vec)))
(tramp-error (tramp-error
vec 'file-error vec 'file-error
"Multiple Devices connected: No Host/Device specified")) "Multiple Devices connected: No Host/Device specified"))
(with-tramp-progress-reporter vec 3 "Opening adb shell connection" (with-tramp-progress-reporter vec 3 "Opening adb shell connection"
(let* ((coding-system-for-read 'utf-8-dos) ;is this correct? (let* ((coding-system-for-read 'utf-8-dos) ;is this correct?
(process-connection-type tramp-process-connection-type) (process-connection-type tramp-process-connection-type)
(args (if (tramp-adb-file-name-host vec) (args (if (> (length host) 0)
(list "-s" (tramp-adb-file-name-host vec) "shell") (list "-s" host "shell")
(list "shell"))) (list "shell")))
(p (let ((default-directory (p (let ((default-directory
(tramp-compat-temporary-file-directory))) (tramp-compat-temporary-file-directory)))

View file

@ -5181,34 +5181,6 @@ function cell is returned to be applied on a buffer."
(t (t
(format "%s <%%s" coding))))))) (format "%s <%%s" coding)))))))
;;; Integration of eshell.el:
(eval-when-compile
(defvar eshell-path-env))
;; eshell.el keeps the path in `eshell-path-env'. We must change it
;; when `default-directory' points to another host.
(defun tramp-eshell-directory-change ()
"Set `eshell-path-env' to $PATH of the host related to `default-directory'."
(setq eshell-path-env
(if (file-remote-p default-directory)
(with-parsed-tramp-file-name default-directory nil
(mapconcat
'identity
(tramp-get-remote-path v)
":"))
(getenv "PATH"))))
(eval-after-load "esh-util"
'(progn
(tramp-eshell-directory-change)
(add-hook 'eshell-directory-change-hook
'tramp-eshell-directory-change)
(add-hook 'tramp-unload-hook
(lambda ()
(remove-hook 'eshell-directory-change-hook
'tramp-eshell-directory-change)))))
(add-hook 'tramp-unload-hook (add-hook 'tramp-unload-hook
(lambda () (lambda ()
(unload-feature 'tramp-sh 'force))) (unload-feature 'tramp-sh 'force)))

View file

@ -381,6 +381,22 @@ Useful for su and sudo methods mostly."
:group 'tramp :group 'tramp
:type 'string) :type 'string)
;;;###tramp-autoload
(defcustom tramp-default-host-alist nil
"Default host to use for specific method/user pairs.
This is an alist of items (METHOD USER HOST). The first matching item
specifies the host to use for a file name which does not specify a
host. METHOD and HOST are regular expressions or nil, which is
interpreted as a regular expression which always matches. If no entry
matches, the variable `tramp-default-host' takes effect.
If the file name does not specify the method, lookup is done using the
empty string for the method name."
:group 'tramp
:type '(repeat (list (choice :tag "Method regexp" regexp sexp)
(choice :tag " User regexp" regexp sexp)
(choice :tag " Host name" string (const nil)))))
(defcustom tramp-default-proxies-alist nil (defcustom tramp-default-proxies-alist nil
"Route to be followed for specific host/user pairs. "Route to be followed for specific host/user pairs.
This is an alist of items (HOST USER PROXY). The first matching This is an alist of items (HOST USER PROXY). The first matching
@ -918,7 +934,7 @@ See `tramp-file-name-structure' for more explanations.")
This regexp should match partial Tramp file names only. This regexp should match partial Tramp file names only.
Please note that the entry in `file-name-handler-alist' is made when Please note that the entry in `file-name-handler-alist' is made when
this file (tramp.el) is loaded. This means that this variable must be set this file \(tramp.el\) is loaded. This means that this variable must be set
before loading tramp.el. Alternatively, `file-name-handler-alist' can be before loading tramp.el. Alternatively, `file-name-handler-alist' can be
updated after changing this variable. updated after changing this variable.
@ -1163,6 +1179,15 @@ This is USER, if non-nil. Otherwise, do a lookup in
"Return the right host string to use. "Return the right host string to use.
This is HOST, if non-nil. Otherwise, it is `tramp-default-host'." This is HOST, if non-nil. Otherwise, it is `tramp-default-host'."
(or (and (> (length host) 0) host) (or (and (> (length host) 0) host)
(let ((choices tramp-default-host-alist)
lhost item)
(while choices
(setq item (pop choices))
(when (and (string-match (or (nth 0 item) "") (or method ""))
(string-match (or (nth 1 item) "") (or user "")))
(setq lhost (nth 2 item))
(setq choices nil)))
lhost)
tramp-default-host)) tramp-default-host))
(defun tramp-dissect-file-name (name &optional nodefault) (defun tramp-dissect-file-name (name &optional nodefault)
@ -3861,6 +3886,34 @@ Only works for Bourne-like shells."
t t result))) t t result)))
result)))) result))))
;;; Integration of eshell.el:
(eval-when-compile
(defvar eshell-path-env))
;; eshell.el keeps the path in `eshell-path-env'. We must change it
;; when `default-directory' points to another host.
(defun tramp-eshell-directory-change ()
"Set `eshell-path-env' to $PATH of the host related to `default-directory'."
(setq eshell-path-env
(if (file-remote-p default-directory)
(with-parsed-tramp-file-name default-directory nil
(mapconcat
'identity
(tramp-get-connection-property v "remote-path" nil)
":"))
(getenv "PATH"))))
(eval-after-load "esh-util"
'(progn
(tramp-eshell-directory-change)
(add-hook 'eshell-directory-change-hook
'tramp-eshell-directory-change)
(add-hook 'tramp-unload-hook
(lambda ()
(remove-hook 'eshell-directory-change-hook
'tramp-eshell-directory-change)))))
;; Checklist for `tramp-unload-hook' ;; Checklist for `tramp-unload-hook'
;; - Unload all `tramp-*' packages ;; - Unload all `tramp-*' packages
;; - Reset `file-name-handler-alist' ;; - Reset `file-name-handler-alist'

View file

@ -526,7 +526,16 @@ Otherwise, just return the value."
"Extract the default external value of WIDGET." "Extract the default external value of WIDGET."
(widget-apply widget :value-to-external (widget-apply widget :value-to-external
(or (widget-get widget :value) (or (widget-get widget :value)
(widget-apply widget :default-get)))) (progn
(when (widget-get widget :args)
(let (args)
(dolist (arg (widget-get widget :args))
(setq args (append args
(if (widget-get arg :inline)
(widget-get arg :args)
(list arg)))))
(widget-put widget :args args)))
(widget-apply widget :default-get)))))
(defun widget-match-inline (widget vals) (defun widget-match-inline (widget vals)
"In WIDGET, match the start of VALS." "In WIDGET, match the start of VALS."

View file

@ -107,6 +107,12 @@
(lambda (f &rest args) (lambda (f &rest args)
(cons (cons 2 (called-interactively-p)) (apply f args)))) (cons (cons 2 (called-interactively-p)) (apply f args))))
(should (equal (call-interactively 'sm-test7) '((2 . t) (1 . t) 11))) (should (equal (call-interactively 'sm-test7) '((2 . t) (1 . t) 11)))
;; Check handling of interactive spec.
(defun sm-test8 (a) (interactive "p") a)
(defadvice sm-test8 (before adv1 activate) nil)
(defadvice sm-test8 (before adv2 activate) (interactive "P") nil)
(should (equal (interactive-form 'sm-test8) '(interactive "P")))
)) ))
;; Local Variables: ;; Local Variables: