From 11151a064bb0b21eb6b06562c8e775c6b763e93c Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Wed, 13 Nov 2013 16:28:06 +0100 Subject: [PATCH] * net/tramp.el (tramp-remote-file-name-spec-regexp): An IPV6 address can be empty. * net/tramp-gvfs.el (tramp-gvfs-handle-insert-directory): Accept nil SWITCHES. (tramp-gvfs-handle-write-region): Implement APPEND. --- lisp/ChangeLog | 9 +++++++++ lisp/net/tramp-gvfs.el | 14 ++++++++++++-- lisp/net/tramp.el | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a0446324f66..2c48615a88c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2013-11-13 Michael Albinus + + * net/tramp.el (tramp-remote-file-name-spec-regexp): An IPV6 + address can be empty. + + * net/tramp-gvfs.el (tramp-gvfs-handle-insert-directory): + Accept nil SWITCHES. + (tramp-gvfs-handle-write-region): Implement APPEND. + 2013-11-12 Dmitry Gutov * progmodes/ruby-mode.el (ruby-smie-grammar): Disambiguate between diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index eb2a20d183d..ba399284257 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el @@ -1009,6 +1009,7 @@ is no information where to trace the message.") (filename switches &optional wildcard full-directory-p) "Like `insert-directory' for Tramp files." ;; gvfs-* output is hard to parse. So we let `ls-lisp' do the job. + (unless switches (setq switches "")) (with-parsed-tramp-file-name (expand-file-name filename) nil (with-tramp-progress-reporter v 0 (format "Opening directory %s" filename) (require 'ls-lisp) @@ -1075,7 +1076,7 @@ is no information where to trace the message.") (tramp-flush-file-property v localname)))))) (defun tramp-gvfs-handle-write-region - (start end filename &optional _append visit _lockname confirm) + (start end filename &optional append visit lockname confirm) "Like `write-region' for Tramp files." (with-parsed-tramp-file-name filename nil ;; XEmacs takes a coding system as the seventh argument, not `confirm'. @@ -1084,7 +1085,16 @@ is no information where to trace the message.") (tramp-error v 'file-error "File not overwritten"))) (let ((tmpfile (tramp-compat-make-temp-file filename))) - (write-region start end tmpfile) + (when (and append (file-exists-p filename)) + (copy-file filename tmpfile 'ok)) + ;; We say `no-message' here because we don't want the visited file + ;; modtime data to be clobbered from the temp file. We call + ;; `set-visited-file-modtime' ourselves later on. + (tramp-run-real-handler + 'write-region + (if confirm ; don't pass this arg unless defined for backward compat. + (list start end tmpfile append 'no-message lockname confirm) + (list start end tmpfile append 'no-message lockname))) (condition-case nil (rename-file tmpfile filename 'ok-if-already-exists) (error diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 42988b0fd69..d0989e79cd3 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -848,7 +848,7 @@ Derived from `tramp-postfix-host-format'.") "\\(?:" "\\(" tramp-method-regexp "\\)" tramp-postfix-method-regexp "\\)?" "\\(?:" "\\(" tramp-user-regexp "\\)" tramp-postfix-user-regexp "\\)?" "\\(" "\\(?:" tramp-host-regexp "\\|" - tramp-prefix-ipv6-regexp tramp-ipv6-regexp + tramp-prefix-ipv6-regexp "\\(?:" tramp-ipv6-regexp "\\)?" tramp-postfix-ipv6-regexp "\\)" "\\(?:" tramp-prefix-port-regexp tramp-port-regexp "\\)?" "\\)?") "Regular expression matching a Tramp file name between prefix and postfix.") -- 2.11.4.GIT