all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Jimmy Yuen Ho Wong <wyuenho@gmail.com>
To: Michael Albinus <michael.albinus@gmx.de>
Cc: 39389@debbugs.gnu.org
Subject: bug#39389: 27.0.60; A couple of bugs messing with minibuffer completion of /sudo::
Date: Sun, 9 Feb 2020 23:44:01 +0000	[thread overview]
Message-ID: <CAKDRQS6Cy4BdghUVEEjA6H-8KsZgBfYccV3e2cJOSipXdgvOMg@mail.gmail.com> (raw)
In-Reply-To: <87eev553k0.fsf@gmx.de>

[-- Attachment #1: Type: text/plain, Size: 2522 bytes --]

Ok I've found a way to reproduce bug 2 and 3 *without* `exec-path-from-shell`.

0. Get on macOS 10.14
1. Install [GPGTools](https://gpgtools.org/), this will put the `gpg`
binary into `/usr/local/bin`
2. env -i /Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs -l
tramp --eval '(setq tramp-verbose 10 exec-path (cons "/usr/local/bin/"
exec-path))' /sudo::
3. Now the minibuffer prompt will be stuck at Tramp: Sending Password.
4. C-g to quit. I've attached a backtrace and the logs in *Messages* for this.
5. The `exec-path` is now `("/usr/local/bin/" "."
"/Applications/MacPorts/Emacs.app/Contents/MacOS/libexec"
"/Applications/MacPorts/Emacs.app/Contents/MacOS/bin")`. It appears as
long as `.` is part of the search paths and `gpg` can be found in any
of the search paths, the prompt will get stuck.
6. Saving the credentials for `root@localhost` into `~/.authinfo.gpg`
will work around this issue.

On Sat, Feb 8, 2020 at 6:36 PM Michael Albinus <michael.albinus@gmx.de> wrote:
>
> Jimmy Yuen Ho Wong <wyuenho@gmail.com> writes:
>
> Hi,
>
> > For bug 2 and 3, the author said `file-remote-p` might have triggered
> > some weird code paths that triggered this bug. I don't know how to
> > edebug further as `redisplay_internal` keeps calling it. Do you know
> > how to debug it?
> >
> > https://github.com/purcell/exec-path-from-shell/issues/95#issuecomment-582629738
>
> I doubt that file-remote-p is guilty. This function is designed to *not*
> work on the remote side, but check the syntax of a file name only.
>
> However, I've downloaded the package exec-path-from-shell from
> MELPA. Reading the code, I have serious doubst it will cooperate with
> Tramp. It's idea is to analyze the *local* shell, and apply actions over
> the shell. But the *local* shell doesn't matter for remote files, so it
> is completely useless. I'd recommend NOT to use exec-path-from-shell for
> remote files.
>
> If you want to know mor details what happens with Tramp, you might
> analyze the function calls. Evaluate
>
> --8<---------------cut here---------------start------------->8---
> (require 'trace)
> (dolist (elt (all-completions "tramp-" obarray 'functionp))
>   (trace-function-background (intern elt)))
> (untrace-function 'tramp-read-passwd)
> --8<---------------cut here---------------end--------------->8---
>
> Then run your test. The buffer *trace-output* contains the output from
> the function call traces. You might show it here, maybe I can find
> something more about the problem.
>
> Best regards, Michael.

[-- Attachment #2: without-epfs-backtrace.txt --]
[-- Type: text/plain, Size: 41118 bytes --]

  backtrace()
  tramp-signal-hook-function(quit (""))
  signal(quit (""))
  tramp-maybe-open-connection((tramp-file-name "sudo" #("root" 0 4 (tramp-default t)) nil #("MobileCat.local" 0 15 (tramp-default t)) nil "" nil))
  tramp-send-command((tramp-file-name "sudo" #("root" 0 4 (tramp-default t)) nil #("MobileCat.local" 0 15 (tramp-default t)) nil "" nil) #("cd ~root && pwd" 4 8 (tramp-default t)))
  tramp-sh-handle-expand-file-name("/sudo::" "~/")
  apply(tramp-sh-handle-expand-file-name ("/sudo::" "~/"))
  tramp-sh-file-name-handler(expand-file-name "/sudo::" "~/")
  apply(tramp-sh-file-name-handler expand-file-name ("/sudo::" "~/"))
  tramp-file-name-handler(expand-file-name "/sudo::" "~/")
  expand-file-name("/sudo::" "~/")
  #f(compiled-function (displayable-buffers dir line column name) #<bytecode 0x41e160c3>)((nil) "~/" (0) (0) "/sudo::")
  command-line-1(("-l" "tramp" "--eval" "(setq tramp-verbose 10 exec-path (cons \"/usr/local..." "/sudo::"))
  command-line()
  normal-top-level()
Debugger entered--Lisp error: (epg-error "no usable configuration OpenPGP")
  signal(epg-error ("no usable configuration OpenPGP"))
  (let (tramp-message-show-message signal-hook-function) (tramp-backtrace vec-or-proc) (if arguments nil (setq arguments (list fmt-string) fmt-string "%s")) (if vec-or-proc (progn (tramp-message vec-or-proc 1 "%s" (error-message-string (list signal (get signal 'error-message) (apply #'format-message fmt-string arguments)))))) (signal signal (list (substring-no-properties (apply #'format-message fmt-string arguments)))))
  tramp-error((tramp-file-name "sudo" #("root" 0 4 (tramp-default t)) nil #("MobileCat.local" 0 15 (tramp-default t)) nil "" nil) epg-error "%s" "no usable configuration OpenPGP")
  (if (eq error-symbol 'void-variable) nil (tramp-error (car tramp-current-connection) error-symbol "%s" (mapconcat #'(lambda (x) (format "%s" x)) data " ")))
  tramp-signal-hook-function(epg-error ("no usable configuration" OpenPGP))
  signal(epg-error ("no usable configuration" OpenPGP))
  epg-context--make(OpenPGP nil nil nil nil nil nil)
  epg-make-context()
  epa-file-insert-file-contents("/Users/wyuenho/.authinfo.gpg" nil nil nil nil)
  apply(epa-file-insert-file-contents ("/Users/wyuenho/.authinfo.gpg" nil nil nil nil))
  epa-file-handler(insert-file-contents "/Users/wyuenho/.authinfo.gpg" nil nil nil nil)
  insert-file-contents("~/.authinfo.gpg")
  auth-source-netrc-parse(:max 1 :require (:secret :user) :file "~/.authinfo.gpg" :host #("MobileCat.local" 0 15 (tramp-default t)) :user #("root" 0 4 (tramp-default t)) :port "sudo")
  auth-source-netrc-search(:backend #<auth-source-backend auth-source-backend-412d83b8> :type netrc :max 1 :require (:secret :user) :create nil :delete nil :max 1 :user #("root" 0 4 (tramp-default t)) :host #("MobileCat.local" 0 15 (tramp-default t)) :port "sudo" :require (:secret :user) :create t)
  apply(auth-source-netrc-search :backend #<auth-source-backend auth-source-backend-412d83b8> :type netrc :max 1 :require (:secret :user) :create nil :delete nil (:max 1 :user #("root" 0 4 (tramp-default t)) :host #("MobileCat.local" 0 15 (tramp-default t)) :port "sudo" :require (:secret :user) :create t))
  auth-source-search-backends((#<auth-source-backend auth-source-backend-41873e48> #<auth-source-backend auth-source-backend-412d83b8> #<auth-source-backend auth-source-backend-412d83fc>) (:max 1 :user #("root" 0 4 (tramp-default t)) :host #("MobileCat.local" 0 15 (tramp-default t)) :port "sudo" :require (:secret :user) :create t) 1 nil nil (:secret :user))
  auth-source-search(:max 1 :user #("root" 0 4 (tramp-default t)) :host #("MobileCat.local" 0 15 (tramp-default t)) :port "sudo" :require (:secret :user) :create t)
  (car (auth-source-search :max 1 (and user :user) (if domain (concat user tramp-prefix-domain-format domain) user) :host (if port (concat host tramp-prefix-port-format port) host) :port method :require (cons :secret (and user '(:user))) :create t))
  (setq auth-info (car (auth-source-search :max 1 (and user :user) (if domain (concat user tramp-prefix-domain-format domain) user) :host (if port (concat host tramp-prefix-port-format port) host) :port method :require (cons :secret (and user '(:user))) :create t)) tramp-password-save-function (plist-get auth-info :save-function) auth-passwd (plist-get auth-info :secret))
  (and (tramp-get-connection-property v "first-password-request" nil) (setq auth-info (car (auth-source-search :max 1 (and user :user) (if domain (concat user tramp-prefix-domain-format domain) user) :host (if port (concat host tramp-prefix-port-format port) host) :port method :require (cons :secret (and user '(:user))) :create t)) tramp-password-save-function (plist-get auth-info :save-function) auth-passwd (plist-get auth-info :secret)))
  (progn (and (tramp-get-connection-property v "first-password-request" nil) (setq auth-info (car (auth-source-search :max 1 (and user :user) (if domain (concat user tramp-prefix-domain-format domain) user) :host (if port (concat host tramp-prefix-port-format port) host) :port method :require (cons :secret (and user '...)) :create t)) tramp-password-save-function (plist-get auth-info :save-function) auth-passwd (plist-get auth-info :secret))) (while (functionp auth-passwd) (setq auth-passwd (funcall auth-passwd))) auth-passwd)
  (condition-case nil (progn (and (tramp-get-connection-property v "first-password-request" nil) (setq auth-info (car (auth-source-search :max 1 (and user :user) (if domain (concat user tramp-prefix-domain-format domain) user) :host (if port (concat host tramp-prefix-port-format port) host) :port method :require (cons :secret (and user ...)) :create t)) tramp-password-save-function (plist-get auth-info :save-function) auth-passwd (plist-get auth-info :secret))) (while (functionp auth-passwd) (setq auth-passwd (funcall auth-passwd))) auth-passwd) (error nil))
  (or (condition-case nil (progn (and (tramp-get-connection-property v "first-password-request" nil) (setq auth-info (car (auth-source-search :max 1 (and user :user) (if domain ... user) :host (if port ... host) :port method :require (cons :secret ...) :create t)) tramp-password-save-function (plist-get auth-info :save-function) auth-passwd (plist-get auth-info :secret))) (while (functionp auth-passwd) (setq auth-passwd (funcall auth-passwd))) auth-passwd) (error nil)) (progn (setq auth-passwd (password-read pw-prompt key) tramp-password-save-function #'(lambda nil (password-cache-add key auth-passwd))) auth-passwd) (read-passwd pw-prompt))
  (prog1 (or (condition-case nil (progn (and (tramp-get-connection-property v "first-password-request" nil) (setq auth-info (car (auth-source-search :max 1 ... ... :host ... :port method :require ... :create t)) tramp-password-save-function (plist-get auth-info :save-function) auth-passwd (plist-get auth-info :secret))) (while (functionp auth-passwd) (setq auth-passwd (funcall auth-passwd))) auth-passwd) (error nil)) (progn (setq auth-passwd (password-read pw-prompt key) tramp-password-save-function #'(lambda nil (password-cache-add key auth-passwd))) auth-passwd) (read-passwd pw-prompt)) (tramp-set-connection-property v "first-password-request" nil))
  (let* ((v (tramp-dissect-file-name key)) (method (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 1 v))) (user (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 2 v))) (domain (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 3 v))) (host (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 4 v))) (port (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 5 v))) (localname (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 6 v))) (hop (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 7 v)))) (ignore method user domain host port localname hop) (setq tramp-password-save-function nil user (or user (tramp-get-connection-property key "login-as" nil))) (prog1 (or (condition-case nil (progn (and (tramp-get-connection-property v "first-password-request" nil) (setq auth-info (car ...) tramp-password-save-function (plist-get auth-info :save-function) auth-passwd (plist-get auth-info :secret))) (while (functionp auth-passwd) (setq auth-passwd (funcall auth-passwd))) auth-passwd) (error nil)) (progn (setq auth-passwd (password-read pw-prompt key) tramp-password-save-function #'(lambda nil (password-cache-add key auth-passwd))) auth-passwd) (read-passwd pw-prompt)) (tramp-set-connection-property v "first-password-request" nil)))
  (let* ((case-fold-search t) (key (tramp-make-tramp-file-name (tramp-get-connection-property proc "password-vector" (process-get proc 'vector)) 'noloc 'nohop)) (pw-prompt (or prompt (save-current-buffer (set-buffer (process-buffer proc)) (tramp-check-for-regexp proc tramp-password-prompt-regexp) (format "%s for %s " (capitalize (match-string 1)) key)))) (auth-source-creation-prompts (list (cons 'secret pw-prompt))) (stimers (with-timeout-suspend)) auth-info auth-passwd) (let* ((v (tramp-dissect-file-name key)) (method (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 1 v))) (user (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 2 v))) (domain (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 3 v))) (host (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 4 v))) (port (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 5 v))) (localname (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 6 v))) (hop (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 7 v)))) (ignore method user domain host port localname hop) (setq tramp-password-save-function nil user (or user (tramp-get-connection-property key "login-as" nil))) (prog1 (or (condition-case nil (progn (and (tramp-get-connection-property v "first-password-request" nil) (setq auth-info ... tramp-password-save-function ... auth-passwd ...)) (while (functionp auth-passwd) (setq auth-passwd ...)) auth-passwd) (error nil)) (progn (setq auth-passwd (password-read pw-prompt key) tramp-password-save-function #'(lambda nil ...)) auth-passwd) (read-passwd pw-prompt)) (tramp-set-connection-property v "first-password-request" nil))) (with-timeout-unsuspend stimers))
  tramp-read-passwd(#<process *tramp/sudo root@MobileCat.local*>)
  (concat (tramp-read-passwd proc) tramp-local-end-of-line)
  (process-send-string proc (concat (tramp-read-passwd proc) tramp-local-end-of-line))
  (let ((enable-recursive-minibuffers t) (case-fold-search t)) (if (tramp-get-connection-property vec "first-password-request" nil) nil (tramp-clear-passwd vec)) (goto-char (point-min)) (tramp-check-for-regexp proc tramp-password-prompt-regexp) (tramp-message vec 3 "Sending %s" (match-string 1)) (process-send-string proc (concat (tramp-read-passwd proc) tramp-local-end-of-line)) (narrow-to-region (point-max) (point-max)))
  (save-current-buffer (set-buffer (process-buffer proc)) (let ((enable-recursive-minibuffers t) (case-fold-search t)) (if (tramp-get-connection-property vec "first-password-request" nil) nil (tramp-clear-passwd vec)) (goto-char (point-min)) (tramp-check-for-regexp proc tramp-password-prompt-regexp) (tramp-message vec 3 "Sending %s" (match-string 1)) (process-send-string proc (concat (tramp-read-passwd proc) tramp-local-end-of-line)) (narrow-to-region (point-max) (point-max))))
  tramp-action-password(#<process *tramp/sudo root@MobileCat.local*> (tramp-file-name "sudo" #("root" 0 4 (tramp-default t)) nil #("MobileCat.local" 0 15 (tramp-default t)) nil "" nil))
  funcall(tramp-action-password #<process *tramp/sudo root@MobileCat.local*> (tramp-file-name "sudo" #("root" 0 4 (tramp-default t)) nil #("MobileCat.local" 0 15 (tramp-default t)) nil "" nil))
  (setq found (funcall action proc vec))
  (progn (tramp-message vec 5 "Call `%s'" (symbol-name action)) (setq found (funcall action proc vec)))
  (if (tramp-check-for-regexp proc pattern) (progn (tramp-message vec 5 "Call `%s'" (symbol-name action)) (setq found (funcall action proc vec))))
  (while todo (setq item (car-safe (prog1 todo (setq todo (cdr todo))))) (setq pattern (format "\\(%s\\)\\'" (symbol-value (nth 0 item)))) (setq action (nth 1 item)) (tramp-message vec 5 "Looking for regexp \"%s\" from remote shell" pattern) (if (tramp-check-for-regexp proc pattern) (progn (tramp-message vec 5 "Call `%s'" (symbol-name action)) (setq found (funcall action proc vec)))))
  (while (not found) (while (tramp-accept-process-output proc 0)) (setq todo actions) (while todo (setq item (car-safe (prog1 todo (setq todo (cdr todo))))) (setq pattern (format "\\(%s\\)\\'" (symbol-value (nth 0 item)))) (setq action (nth 1 item)) (tramp-message vec 5 "Looking for regexp \"%s\" from remote shell" pattern) (if (tramp-check-for-regexp proc pattern) (progn (tramp-message vec 5 "Call `%s'" (symbol-name action)) (setq found (funcall action proc vec))))))
  (let ((case-fold-search t) found todo item pattern action) (while (not found) (while (tramp-accept-process-output proc 0)) (setq todo actions) (while todo (setq item (car-safe (prog1 todo (setq todo (cdr todo))))) (setq pattern (format "\\(%s\\)\\'" (symbol-value (nth 0 item)))) (setq action (nth 1 item)) (tramp-message vec 5 "Looking for regexp \"%s\" from remote shell" pattern) (if (tramp-check-for-regexp proc pattern) (progn (tramp-message vec 5 "Call `%s'" (symbol-name action)) (setq found (funcall action proc vec)))))) found)
  tramp-process-one-action(#<process *tramp/sudo root@MobileCat.local*> (tramp-file-name "sudo" #("root" 0 4 (tramp-default t)) nil #("MobileCat.local" 0 15 (tramp-default t)) nil "" nil) ((tramp-login-prompt-regexp tramp-action-login) (tramp-password-prompt-regexp tramp-action-password) (tramp-wrong-passwd-regexp tramp-action-permission-denied) (shell-prompt-pattern tramp-action-succeed) (tramp-shell-prompt-pattern tramp-action-succeed) (tramp-yesno-prompt-regexp tramp-action-yesno) (tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-regexp tramp-action-terminal) (tramp-antispoof-regexp tramp-action-confirm-message) (tramp-process-alive-regexp tramp-action-process-alive)))
  (catch 'tramp-action (tramp-process-one-action proc vec actions))
  (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions)))
  (while (not exit) (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions))))
  (progn (while (not exit) (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions)))))
  (unwind-protect (progn (while (not exit) (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions))))) (cancel-timer -with-timeout-timer-))
  (let* ((-with-timeout-timer- (run-with-timer timeout nil #'(lambda nil (throw 'timeout 'timeout)))) (with-timeout-timers (cons -with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while (not exit) (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions))))) (cancel-timer -with-timeout-timer-)))
  (catch 'timeout (let* ((-with-timeout-timer- (run-with-timer timeout nil #'(lambda nil (throw ... ...)))) (with-timeout-timers (cons -with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while (not exit) (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions))))) (cancel-timer -with-timeout-timer-))))
  (let ((-with-timeout-value- (catch 'timeout (let* ((-with-timeout-timer- (run-with-timer timeout nil ...)) (with-timeout-timers (cons -with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while ... ...)) (cancel-timer -with-timeout-timer-)))))) (if (eq -with-timeout-value- 'timeout) (progn (setq exit 'timeout)) -with-timeout-value-))
  (if timeout (let ((-with-timeout-value- (catch 'timeout (let* ((-with-timeout-timer- ...) (with-timeout-timers ...)) (unwind-protect (progn ...) (cancel-timer -with-timeout-timer-)))))) (if (eq -with-timeout-value- 'timeout) (progn (setq exit 'timeout)) -with-timeout-value-)) (while (not exit) (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions)))))
  (let (exit) (if timeout (let ((-with-timeout-value- (catch 'timeout (let* (... ...) (unwind-protect ... ...))))) (if (eq -with-timeout-value- 'timeout) (progn (setq exit 'timeout)) -with-timeout-value-)) (while (not exit) (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions))))) (save-current-buffer (set-buffer (tramp-get-connection-buffer vec)) (widen) (tramp-message vec 6 "\n%s" (buffer-string))) (if (eq exit 'ok) (condition-case nil (progn (and (functionp tramp-password-save-function) (funcall tramp-password-save-function))) (error nil)) (tramp-clear-passwd vec) (delete-process proc) (tramp-error-with-buffer (tramp-get-connection-buffer vec) vec 'file-error (cond ((eq exit 'permission-denied) "Permission denied") ((eq exit 'out-of-band-failed) (format-message "Copy failed, see buffer `%s' for details" (tramp-get-connection-buffer vec))) ((eq exit 'process-died) (substitute-command-keys '"Tramp failed to connect.  If this happens repeated...")) ((eq exit 'timeout) (format-message "Timeout reached, see buffer `%s' for details" (tramp-get-connection-buffer vec))) (t "Login failed")))))
  (progn (let (exit) (if timeout (let ((-with-timeout-value- (catch 'timeout (let* ... ...)))) (if (eq -with-timeout-value- 'timeout) (progn (setq exit 'timeout)) -with-timeout-value-)) (while (not exit) (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions))))) (save-current-buffer (set-buffer (tramp-get-connection-buffer vec)) (widen) (tramp-message vec 6 "\n%s" (buffer-string))) (if (eq exit 'ok) (condition-case nil (progn (and (functionp tramp-password-save-function) (funcall tramp-password-save-function))) (error nil)) (tramp-clear-passwd vec) (delete-process proc) (tramp-error-with-buffer (tramp-get-connection-buffer vec) vec 'file-error (cond ((eq exit 'permission-denied) "Permission denied") ((eq exit 'out-of-band-failed) (format-message "Copy failed, see buffer `%s' for details" (tramp-get-connection-buffer vec))) ((eq exit 'process-died) (substitute-command-keys '"Tramp failed to connect.  If this happens repeated...")) ((eq exit 'timeout) (format-message "Timeout reached, see buffer `%s' for details" (tramp-get-connection-buffer vec))) (t "Login failed"))))) (if (numberp pos) (progn (save-current-buffer (set-buffer (tramp-get-connection-buffer vec)) (let ((inhibit-read-only t)) (delete-region pos (point)))))))
  (prog1 (progn (let (exit) (if timeout (let ((-with-timeout-value- (catch ... ...))) (if (eq -with-timeout-value- 'timeout) (progn (setq exit ...)) -with-timeout-value-)) (while (not exit) (setq exit (catch 'tramp-action (tramp-process-one-action proc vec actions))))) (save-current-buffer (set-buffer (tramp-get-connection-buffer vec)) (widen) (tramp-message vec 6 "\n%s" (buffer-string))) (if (eq exit 'ok) (condition-case nil (progn (and (functionp tramp-password-save-function) (funcall tramp-password-save-function))) (error nil)) (tramp-clear-passwd vec) (delete-process proc) (tramp-error-with-buffer (tramp-get-connection-buffer vec) vec 'file-error (cond ((eq exit ...) "Permission denied") ((eq exit ...) (format-message "Copy failed, see buffer `%s' for details" ...)) ((eq exit ...) (substitute-command-keys ...)) ((eq exit ...) (format-message "Timeout reached, see buffer `%s' for details" ...)) (t "Login failed"))))) (if (numberp pos) (progn (save-current-buffer (set-buffer (tramp-get-connection-buffer vec)) (let ((inhibit-read-only t)) (delete-region pos (point))))))) (setq cookie "done"))
  (unwind-protect (prog1 (progn (let (exit) (if timeout (let ((-with-timeout-value- ...)) (if (eq -with-timeout-value- ...) (progn ...) -with-timeout-value-)) (while (not exit) (setq exit (catch ... ...)))) (save-current-buffer (set-buffer (tramp-get-connection-buffer vec)) (widen) (tramp-message vec 6 "\n%s" (buffer-string))) (if (eq exit 'ok) (condition-case nil (progn (and ... ...)) (error nil)) (tramp-clear-passwd vec) (delete-process proc) (tramp-error-with-buffer (tramp-get-connection-buffer vec) vec 'file-error (cond (... "Permission denied") (... ...) (... ...) (... ...) (t "Login failed"))))) (if (numberp pos) (progn (save-current-buffer (set-buffer (tramp-get-connection-buffer vec)) (let (...) (delete-region pos ...)))))) (setq cookie "done")) (if tm (cancel-timer tm)) (tramp-message proc 3 "%s...%s" "Waiting for prompts from remote shell" cookie))
  (let ((cookie "failed") (tm (if (and tramp-message-show-message (<= 3 (min tramp-verbose 3))) (progn (let ((pr ...)) (if pr (progn ...))))))) (unwind-protect (prog1 (progn (let (exit) (if timeout (let (...) (if ... ... -with-timeout-value-)) (while (not exit) (setq exit ...))) (save-current-buffer (set-buffer (tramp-get-connection-buffer vec)) (widen) (tramp-message vec 6 "\n%s" (buffer-string))) (if (eq exit 'ok) (condition-case nil (progn ...) (error nil)) (tramp-clear-passwd vec) (delete-process proc) (tramp-error-with-buffer (tramp-get-connection-buffer vec) vec 'file-error (cond ... ... ... ... ...)))) (if (numberp pos) (progn (save-current-buffer (set-buffer ...) (let ... ...))))) (setq cookie "done")) (if tm (cancel-timer tm)) (tramp-message proc 3 "%s...%s" "Waiting for prompts from remote shell" cookie)))
  (progn (tramp-message proc 3 "%s..." "Waiting for prompts from remote shell") (let ((cookie "failed") (tm (if (and tramp-message-show-message (<= 3 (min tramp-verbose 3))) (progn (let (...) (if pr ...)))))) (unwind-protect (prog1 (progn (let (exit) (if timeout (let ... ...) (while ... ...)) (save-current-buffer (set-buffer ...) (widen) (tramp-message vec 6 "\n%s" ...)) (if (eq exit ...) (condition-case nil ... ...) (tramp-clear-passwd vec) (delete-process proc) (tramp-error-with-buffer ... vec ... ...))) (if (numberp pos) (progn (save-current-buffer ... ...)))) (setq cookie "done")) (if tm (cancel-timer tm)) (tramp-message proc 3 "%s...%s" "Waiting for prompts from remote shell" cookie))))
  (save-restriction (progn (tramp-message proc 3 "%s..." "Waiting for prompts from remote shell") (let ((cookie "failed") (tm (if (and tramp-message-show-message (<= 3 ...)) (progn (let ... ...))))) (unwind-protect (prog1 (progn (let (exit) (if timeout ... ...) (save-current-buffer ... ... ...) (if ... ... ... ... ...)) (if (numberp pos) (progn ...))) (setq cookie "done")) (if tm (cancel-timer tm)) (tramp-message proc 3 "%s...%s" "Waiting for prompts from remote shell" cookie)))))
  tramp-process-actions(#<process *tramp/sudo root@MobileCat.local*> (tramp-file-name "sudo" #("root" 0 4 (tramp-default t)) nil #("MobileCat.local" 0 15 (tramp-default t)) nil "" nil) 1 ((tramp-login-prompt-regexp tramp-action-login) (tramp-password-prompt-regexp tramp-action-password) (tramp-wrong-passwd-regexp tramp-action-permission-denied) (shell-prompt-pattern tramp-action-succeed) (tramp-shell-prompt-pattern tramp-action-succeed) (tramp-yesno-prompt-regexp tramp-action-yesno) (tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-regexp tramp-action-terminal) (tramp-antispoof-regexp tramp-action-confirm-message) (tramp-process-alive-regexp tramp-action-process-alive)) 10)
  tramp-maybe-open-connection((tramp-file-name "sudo" #("root" 0 4 (tramp-default t)) nil #("MobileCat.local" 0 15 (tramp-default t)) nil "" nil))
  tramp-send-command((tramp-file-name "sudo" #("root" 0 4 (tramp-default t)) nil #("MobileCat.local" 0 15 (tramp-default t)) nil "" nil) #("cd ~root && pwd" 4 8 (tramp-default t)))
  tramp-sh-handle-expand-file-name(#("/sudo:root@MobileCat.local:" 6 10 (tramp-default t) 11 26 (tramp-default t)) nil)
  apply(tramp-sh-handle-expand-file-name (#("/sudo:root@MobileCat.local:" 6 10 (tramp-default t) 11 26 (tramp-default t)) nil))
  tramp-sh-file-name-handler(expand-file-name #("/sudo:root@MobileCat.local:" 6 10 (tramp-default t) 11 26 (tramp-default t)) nil)
  apply(tramp-sh-file-name-handler expand-file-name (#("/sudo:root@MobileCat.local:" 6 10 (tramp-default t) 11 26 (tramp-default t)) nil))
  (let ((tramp-locker t)) (apply foreign operation args))
  (unwind-protect (let ((tramp-locker t)) (apply foreign operation args)) (setq tramp-locked tl))
  (let ((tl tramp-locked)) (setq tramp-locked t) (unwind-protect (let ((tramp-locker t)) (apply foreign operation args)) (setq tramp-locked tl)))
  (catch 'suppress (if (and tramp-locked (not tramp-locker)) (progn (setq tramp-locked nil) (tramp-error v 'file-error "Forbidden reentrant call of Tramp"))) (let ((tl tramp-locked)) (setq tramp-locked t) (unwind-protect (let ((tramp-locker t)) (apply foreign operation args)) (setq tramp-locked tl))))
  (catch 'non-essential (catch 'suppress (if (and tramp-locked (not tramp-locker)) (progn (setq tramp-locked nil) (tramp-error v 'file-error "Forbidden reentrant call of Tramp"))) (let ((tl tramp-locked)) (setq tramp-locked t) (unwind-protect (let ((tramp-locker t)) (apply foreign operation args)) (setq tramp-locked tl)))))
  (setq result (catch 'non-essential (catch 'suppress (if (and tramp-locked (not tramp-locker)) (progn (setq tramp-locked nil) (tramp-error v 'file-error "Forbidden reentrant call of Tramp"))) (let ((tl tramp-locked)) (setq tramp-locked t) (unwind-protect (let ((tramp-locker t)) (apply foreign operation args)) (setq tramp-locked tl))))))
  (let ((sf (symbol-function foreign))) (if (autoloadp sf) (progn (let ((default-directory (tramp-compat-temporary-file-directory)) file-name-handler-alist) (autoload-do-load sf foreign)))) (setq result (catch 'non-essential (catch 'suppress (if (and tramp-locked (not tramp-locker)) (progn (setq tramp-locked nil) (tramp-error v 'file-error "Forbidden reentrant call of Tramp"))) (let ((tl tramp-locked)) (setq tramp-locked t) (unwind-protect (let (...) (apply foreign operation args)) (setq tramp-locked tl)))))) (cond ((eq result 'non-essential) (tramp-message v 5 "Non-essential received in operation %s" (cons operation args)) (tramp-run-real-handler operation args)) ((eq result 'suppress) (let (tramp-message-show-message) (tramp-message v 1 "Suppress received in operation %s" (cons operation args)) (tramp-cleanup-connection v t) (tramp-run-real-handler operation args))) (t result)))
  (if foreign (let ((sf (symbol-function foreign))) (if (autoloadp sf) (progn (let ((default-directory (tramp-compat-temporary-file-directory)) file-name-handler-alist) (autoload-do-load sf foreign)))) (setq result (catch 'non-essential (catch 'suppress (if (and tramp-locked (not tramp-locker)) (progn (setq tramp-locked nil) (tramp-error v ... "Forbidden reentrant call of Tramp"))) (let ((tl tramp-locked)) (setq tramp-locked t) (unwind-protect (let ... ...) (setq tramp-locked tl)))))) (cond ((eq result 'non-essential) (tramp-message v 5 "Non-essential received in operation %s" (cons operation args)) (tramp-run-real-handler operation args)) ((eq result 'suppress) (let (tramp-message-show-message) (tramp-message v 1 "Suppress received in operation %s" (cons operation args)) (tramp-cleanup-connection v t) (tramp-run-real-handler operation args))) (t result))) (setq result (tramp-run-real-handler operation args)) (if (stringp result) (tramp-drop-volume-letter result) result))
  (unwind-protect (if foreign (let ((sf (symbol-function foreign))) (if (autoloadp sf) (progn (let ((default-directory ...) file-name-handler-alist) (autoload-do-load sf foreign)))) (setq result (catch 'non-essential (catch 'suppress (if (and tramp-locked ...) (progn ... ...)) (let (...) (setq tramp-locked t) (unwind-protect ... ...))))) (cond ((eq result 'non-essential) (tramp-message v 5 "Non-essential received in operation %s" (cons operation args)) (tramp-run-real-handler operation args)) ((eq result 'suppress) (let (tramp-message-show-message) (tramp-message v 1 "Suppress received in operation %s" (cons operation args)) (tramp-cleanup-connection v t) (tramp-run-real-handler operation args))) (t result))) (setq result (tramp-run-real-handler operation args)) (if (stringp result) (tramp-drop-volume-letter result) result)) (if (tramp-file-name-equal-p (car current-connection) (car tramp-current-connection)) nil (setq tramp-current-connection current-connection)))
  (let ((current-connection tramp-current-connection) (foreign (tramp-find-foreign-file-name-handler filename operation)) (signal-hook-function #'tramp-signal-hook-function) result) (if (tramp-file-name-equal-p v (car tramp-current-connection)) nil (setq tramp-current-connection (list v))) (unwind-protect (if foreign (let ((sf (symbol-function foreign))) (if (autoloadp sf) (progn (let (... file-name-handler-alist) (autoload-do-load sf foreign)))) (setq result (catch 'non-essential (catch 'suppress (if ... ...) (let ... ... ...)))) (cond ((eq result 'non-essential) (tramp-message v 5 "Non-essential received in operation %s" (cons operation args)) (tramp-run-real-handler operation args)) ((eq result 'suppress) (let (tramp-message-show-message) (tramp-message v 1 "Suppress received in operation %s" ...) (tramp-cleanup-connection v t) (tramp-run-real-handler operation args))) (t result))) (setq result (tramp-run-real-handler operation args)) (if (stringp result) (tramp-drop-volume-letter result) result)) (if (tramp-file-name-equal-p (car current-connection) (car tramp-current-connection)) nil (setq tramp-current-connection current-connection))))
  (let* ((v (tramp-dissect-file-name filename)) (method (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 1 v))) (user (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 2 v))) (domain (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 3 v))) (host (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 4 v))) (port (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 5 v))) (localname (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 6 v))) (hop (progn (or (progn (and (memq ... cl-struct-tramp-file-name-tags) t)) (signal 'wrong-type-argument (list 'tramp-file-name v))) (nth 7 v)))) (ignore method user domain host port localname hop) (let ((current-connection tramp-current-connection) (foreign (tramp-find-foreign-file-name-handler filename operation)) (signal-hook-function #'tramp-signal-hook-function) result) (if (tramp-file-name-equal-p v (car tramp-current-connection)) nil (setq tramp-current-connection (list v))) (unwind-protect (if foreign (let ((sf (symbol-function foreign))) (if (autoloadp sf) (progn (let ... ...))) (setq result (catch 'non-essential (catch ... ... ...))) (cond ((eq result ...) (tramp-message v 5 "Non-essential received in operation %s" ...) (tramp-run-real-handler operation args)) ((eq result ...) (let ... ... ... ...)) (t result))) (setq result (tramp-run-real-handler operation args)) (if (stringp result) (tramp-drop-volume-letter result) result)) (if (tramp-file-name-equal-p (car current-connection) (car tramp-current-connection)) nil (setq tramp-current-connection current-connection)))))
  (progn (setq filename (tramp-replace-environment-variables filename)) (let* ((v (tramp-dissect-file-name filename)) (method (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 1 v))) (user (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 2 v))) (domain (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 3 v))) (host (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 4 v))) (port (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 5 v))) (localname (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 6 v))) (hop (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... v))) (nth 7 v)))) (ignore method user domain host port localname hop) (let ((current-connection tramp-current-connection) (foreign (tramp-find-foreign-file-name-handler filename operation)) (signal-hook-function #'tramp-signal-hook-function) result) (if (tramp-file-name-equal-p v (car tramp-current-connection)) nil (setq tramp-current-connection (list v))) (unwind-protect (if foreign (let ((sf ...)) (if (autoloadp sf) (progn ...)) (setq result (catch ... ...)) (cond (... ... ...) (... ...) (t result))) (setq result (tramp-run-real-handler operation args)) (if (stringp result) (tramp-drop-volume-letter result) result)) (if (tramp-file-name-equal-p (car current-connection) (car tramp-current-connection)) nil (setq tramp-current-connection current-connection))))))
  (unwind-protect (progn (setq filename (tramp-replace-environment-variables filename)) (let* ((v (tramp-dissect-file-name filename)) (method (progn (or (progn ...) (signal ... ...)) (nth 1 v))) (user (progn (or (progn ...) (signal ... ...)) (nth 2 v))) (domain (progn (or (progn ...) (signal ... ...)) (nth 3 v))) (host (progn (or (progn ...) (signal ... ...)) (nth 4 v))) (port (progn (or (progn ...) (signal ... ...)) (nth 5 v))) (localname (progn (or (progn ...) (signal ... ...)) (nth 6 v))) (hop (progn (or (progn ...) (signal ... ...)) (nth 7 v)))) (ignore method user domain host port localname hop) (let ((current-connection tramp-current-connection) (foreign (tramp-find-foreign-file-name-handler filename operation)) (signal-hook-function #'tramp-signal-hook-function) result) (if (tramp-file-name-equal-p v (car tramp-current-connection)) nil (setq tramp-current-connection (list v))) (unwind-protect (if foreign (let (...) (if ... ...) (setq result ...) (cond ... ... ...)) (setq result (tramp-run-real-handler operation args)) (if (stringp result) (tramp-drop-volume-letter result) result)) (if (tramp-file-name-equal-p (car current-connection) (car tramp-current-connection)) nil (setq tramp-current-connection current-connection)))))) (set-match-data save-match-data-internal 'evaporate))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (setq filename (tramp-replace-environment-variables filename)) (let* ((v (tramp-dissect-file-name filename)) (method (progn (or ... ...) (nth 1 v))) (user (progn (or ... ...) (nth 2 v))) (domain (progn (or ... ...) (nth 3 v))) (host (progn (or ... ...) (nth 4 v))) (port (progn (or ... ...) (nth 5 v))) (localname (progn (or ... ...) (nth 6 v))) (hop (progn (or ... ...) (nth 7 v)))) (ignore method user domain host port localname hop) (let ((current-connection tramp-current-connection) (foreign (tramp-find-foreign-file-name-handler filename operation)) (signal-hook-function #'tramp-signal-hook-function) result) (if (tramp-file-name-equal-p v (car tramp-current-connection)) nil (setq tramp-current-connection (list v))) (unwind-protect (if foreign (let ... ... ... ...) (setq result ...) (if ... ... result)) (if (tramp-file-name-equal-p ... ...) nil (setq tramp-current-connection current-connection)))))) (set-match-data save-match-data-internal 'evaporate)))
  (if (tramp-tramp-file-p filename) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (setq filename (tramp-replace-environment-variables filename)) (let* ((v (tramp-dissect-file-name filename)) (method (progn ... ...)) (user (progn ... ...)) (domain (progn ... ...)) (host (progn ... ...)) (port (progn ... ...)) (localname (progn ... ...)) (hop (progn ... ...))) (ignore method user domain host port localname hop) (let ((current-connection tramp-current-connection) (foreign ...) (signal-hook-function ...) result) (if (tramp-file-name-equal-p v ...) nil (setq tramp-current-connection ...)) (unwind-protect (if foreign ... ... ...) (if ... nil ...))))) (set-match-data save-match-data-internal 'evaporate))) (tramp-run-real-handler operation args))
  (let ((filename (apply #'tramp-file-name-for-operation operation args)) (non-essential (or non-essential (eq operation 'file-remote-p)))) (if (tramp-tramp-file-p filename) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (setq filename (tramp-replace-environment-variables filename)) (let* ((v ...) (method ...) (user ...) (domain ...) (host ...) (port ...) (localname ...) (hop ...)) (ignore method user domain host port localname hop) (let (... ... ... result) (if ... nil ...) (unwind-protect ... ...)))) (set-match-data save-match-data-internal 'evaporate))) (tramp-run-real-handler operation args)))
  tramp-file-name-handler(expand-file-name #("/sudo:root@MobileCat.local:" 6 10 (tramp-default t) 11 26 (tramp-default t)) nil)
  file-exists-p(#("/sudo:root@MobileCat.local:" 6 10 (tramp-default t) 11 26 (tramp-default t)))
  completion-file-name-table(#("/sudo:root@MobileCat.local:" 6 10 (tramp-default t) 11 26 (tramp-default t)) file-exists-p lambda)
  test-completion(#("/sudo:root@MobileCat.local:" 6 10 (tramp-default t) 11 26 (tramp-default t)) completion-file-name-table file-exists-p)
  completion--file-name-table("/sudo::" file-exists-p lambda)
  complete-with-action(lambda completion--file-name-table "/sudo::" file-exists-p)
  #f(compiled-function (table) #<bytecode 0x412ef545>)(completion--file-name-table)
  completion--some(#f(compiled-function (table) #<bytecode 0x412ef545>) (completion--embedded-envvar-table completion--file-name-table))
  read-file-name-internal("/sudo::" file-exists-p lambda)
  test-completion("/sudo::" read-file-name-internal file-exists-p)
  completion--complete-and-exit(12 19 exit-minibuffer #f(compiled-function () #<bytecode 0x412ef605>))
  completion-complete-and-exit(12 19 exit-minibuffer)
  minibuffer-complete-and-exit()
  funcall-interactively(minibuffer-complete-and-exit)
  call-interactively(minibuffer-complete-and-exit nil nil)
  command-execute(minibuffer-complete-and-exit)
  read-from-minibuffer("Find file: " "/" (keymap (keymap (32)) keymap (10 . minibuffer-complete-and-exit) (13 . minibuffer-complete-and-exit) keymap (menu-bar keymap (minibuf "Minibuf" keymap (tab menu-item "Complete" minibuffer-complete :help "Complete as far as possible") (space menu-item "Complete Word" minibuffer-complete-word :help "Complete at most one word") (63 menu-item "List Completions" minibuffer-completion-help :help "Display all possible completions") "Minibuf")) (27 keymap (118 . switch-to-completions)) (prior . switch-to-completions) (63 . minibuffer-completion-help) (32 . minibuffer-complete-word) (9 . minibuffer-complete) keymap (menu-bar keymap (minibuf "Minibuf" keymap (previous menu-item "Previous History Item" previous-history-element :help "Put previous minibuffer history element in the min...") (next menu-item "Next History Item" next-history-element :help "Put next minibuffer history element in the minibuf...") (isearch-backward menu-item "Isearch History Backward" isearch-backward :help "Incrementally search minibuffer history backward") (isearch-forward menu-item "Isearch History Forward" isearch-forward :help "Incrementally search minibuffer history forward") (return menu-item "Enter" exit-minibuffer :key-sequence "\15" :help "Terminate input and exit minibuffer") (quit menu-item "Quit" abort-recursive-edit :help "Abort input and exit minibuffer") "Minibuf")) (10 . exit-minibuffer) (13 . exit-minibuffer) (7 . abort-recursive-edit) (C-tab . file-cache-minibuffer-complete) (9 . self-insert-command) (XF86Back . previous-history-element) (up . previous-line-or-history-element) (prior . previous-history-element) (XF86Forward . next-history-element) (down . next-line-or-history-element) (next . next-history-element) (27 keymap (60 . minibuffer-beginning-of-buffer) (114 . previous-matching-history-element) (115 . next-matching-history-element) (112 . previous-history-element) (110 . next-history-element))) nil file-name-history "/" nil)
  completing-read-default("Find file: " read-file-name-internal file-exists-p confirm-after-completion "/" file-name-history "/" nil)
  completing-read("Find file: " read-file-name-internal file-exists-p confirm-after-completion "/" file-name-history "/")
  read-file-name-default("Find file: " nil "/" confirm-after-completion nil nil)
  read-file-name("Find file: " nil "/" confirm-after-completion)
  find-file-read-args("Find file: " confirm-after-completion)
  byte-code("\300\301\302 \"\207" [find-file-read-args "Find file: " confirm-nonexistent-file-or-buffer] 3)
  call-interactively(find-file nil nil)
  command-execute(find-file)

[-- Attachment #3: messages.txt --]
[-- Type: text/plain, Size: 751 bytes --]

Loading /opt/local/share/emacs/site-lisp/subdirs.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Waiting for git...
Error running git rev-parse --abbrev-ref: (file-missing "Searching for program" "No such file or directory" "git")
Waiting for git...
Error running git rev-parse: (file-missing "Searching for program" "No such file or directory" "git")
Tramp: Opening connection for root@MobileCat.local using sudo...
Tramp: Sending command ‘exec sudo -u root -s -H -p P""a""s""s""w""o""r""d"": /bin/sh ’
Tramp: Waiting for prompts from remote shell...
Tramp: Sending Password
Tramp: Waiting for prompts from remote shell...failed
Tramp: Opening connection for root@MobileCat.local using sudo...failed
Quit: ""

  parent reply	other threads:[~2020-02-09 23:44 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-02 14:50 bug#39389: 27.0.60; A couple of bugs messing with minibuffer completion of /sudo:: Jimmy Yuen Ho Wong
2020-02-02 15:47 ` Michael Albinus
2020-02-02 18:05   ` Jimmy Yuen Ho Wong
2020-02-02 18:14     ` Michael Albinus
2020-02-02 18:30       ` Jimmy Yuen Ho Wong
2020-02-02 20:11         ` Michael Albinus
2020-02-05 13:31           ` Jimmy Yuen Ho Wong
2020-02-05 14:39             ` Michael Albinus
2020-02-08 13:03               ` Jimmy Yuen Ho Wong
2020-02-08 18:36                 ` Michael Albinus
2020-02-09  5:22                   ` Jimmy Yuen Ho Wong
2020-02-09 23:44                   ` Jimmy Yuen Ho Wong [this message]
2020-02-10  0:16                     ` Jimmy Yuen Ho Wong
2020-02-10  9:23                       ` Michael Albinus
2020-02-10  9:18                     ` Michael Albinus
2020-02-10 21:00                       ` Jimmy Yuen Ho Wong
2020-02-10 21:06                       ` Jimmy Yuen Ho Wong
2020-02-11  8:56                         ` Michael Albinus
2020-02-16 19:30                           ` Michael Albinus

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=CAKDRQS6Cy4BdghUVEEjA6H-8KsZgBfYccV3e2cJOSipXdgvOMg@mail.gmail.com \
    --to=wyuenho@gmail.com \
    --cc=39389@debbugs.gnu.org \
    --cc=michael.albinus@gmx.de \
    /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.