Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
01917a18
Commit
01917a18
authored
Jan 16, 2005
by
Michael Albinus
Browse files
Sync with Tramp 2.0.47.
parent
50af5100
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
233 additions
and
78 deletions
+233
-78
lisp/ChangeLog
lisp/ChangeLog
+46
-0
lisp/net/tramp-smb.el
lisp/net/tramp-smb.el
+8
-49
lisp/net/tramp-util.el
lisp/net/tramp-util.el
+66
-2
lisp/net/tramp-vc.el
lisp/net/tramp-vc.el
+6
-3
lisp/net/tramp.el
lisp/net/tramp.el
+68
-20
lisp/net/trampver.el
lisp/net/trampver.el
+1
-1
man/ChangeLog
man/ChangeLog
+7
-0
man/tramp.texi
man/tramp.texi
+30
-2
man/trampver.texi
man/trampver.texi
+1
-1
No files found.
lisp/ChangeLog
View file @
01917a18
2005-01-16 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.0.47.
* tramp.el (tramp-operation-not-permitted-regexp) New defcustom,
catching keep-date problems in cp/scp operations.
(tramp-handle-copy-file): Don't call `set-file-modes'
unconditionally. Specialized functions should know better what is
necessary. This improves performance a little bit, and the
functions could catch errors with `cp -p' and `scp -p'.
(tramp-do-copy-or-rename-file-via-buffer)
(tramp-do-copy-or-rename-file-out-of-band): Call `set-file-modes'
when appropriate.
(tramp-do-copy-or-rename-file-directly): Mask `cp -p' error. Call
`set-file-modes' when appropriate.
(tramp-action-out-of-band): Mask `scp -p' error. Reported by Isak
Johnsson <isak@hypergene.com>
(tramp-get-buffer, tramp-get-debug-buffer): Discard the undo list
of both Tramp buffer and debug buffer. Reported by Joakim Verona
<joakim@verona.se>
(tramp-file-name-for-operation): Mark `shell-command' as magic for
Emacs only.
* tramp-util.el (tramp-minor-mode): New minor mode. Add it to
`find-file-hooks' and `dired-mode-hook'.
(tramp-minor-mode-map): Respective map. Add remapping for
`compile' and `recompile'.
(tramp-remap-command, tramp-recompile): New defuns.
(tramp-compile): Enable `tramp-minor-mode' and `compilation-mode'
in buffer "*Compilation*". Call the commands asynchronously.
* tramp-vc.el (tramp-vc-do-command, tramp-vc-do-command-new)
(tramp-vc-simple-command): Call `tramp-handle-shell-command' but
`shell-command', because it isn't magic in XEmacs. Reported by
Adrian Aichner <adrian@xemacs.org>.
* tramp-smb.el (tramp-smb-file-name-handler-alist): Add entry for
`substitute-in-file-name.
(tramp-smb-handle-substitute-in-file-name): New defun.
(tramp-smb-advice-PC-do-completion): Delete advice.
2005-01-16 Kai Grossjohann <kgrossjo@eu.uu.net>
* tramp.el (tramp-wait-for-output): Fix typo in echo processing.
Fix error in deleting region.
2005-01-15 Richard M. Stallman <rms@gnu.org>
* emacs-lisp/lisp-mnt.el (lm-with-file): Use Lisp mode in temp buffer.
...
...
lisp/net/tramp-smb.el
View file @
01917a18
...
...
@@ -172,7 +172,7 @@ This variable is local to each buffer.")
(
set-file-modes
.
tramp-smb-not-handled
)
(
set-visited-file-modtime
.
tramp-smb-not-handled
)
(
shell-command
.
tramp-smb-not-handled
)
;; `
substitute-in-file-name
' performed by default handler
(
substitute-in-file-name
.
tramp-smb-handle-substitute-in-file-name
)
(
unhandled-file-name-directory
.
tramp-handle-unhandled-file-name-directory
)
(
vc-registered
.
tramp-smb-not-handled
)
(
verify-visited-file-modtime
.
tramp-smb-not-handled
)
...
...
@@ -617,6 +617,13 @@ WILDCARD and FULL-DIRECTORY-P are not handled."
(
delete-file
filename
))
(
defun
tramp-smb-handle-substitute-in-file-name
(
filename
)
"Like `handle-substitute-in-file-name' for tramp files.
Catches errors for shares like \"C$/\", which are common in Microsoft Windows."
(
condition-case
nil
(
tramp-run-real-handler
'substitute-in-file-name
(
list
filename
))
(
error
filename
)))
(
defun
tramp-smb-handle-write-region
(
start
end
filename
&optional
append
visit
lockname
confirm
)
"Like `write-region' for tramp files."
...
...
@@ -1084,54 +1091,6 @@ Return the difference in the format of a time value."
(
-
(
+
(
if
borrow
65536
0
)
(
cadr
t1
))
(
cadr
t2
)))))
;; `PC-do-completion' touches the returning "$$" by `substitute-in-file-name'.
;; Must be corrected.
(
defadvice
PC-do-completion
(
around
tramp-smb-advice-PC-do-completion
)
"Changes \"$\" back to \"$$\" in minibuffer."
(
if
(
funcall
PC-completion-as-file-name-predicate
)
(
progn
;; Substitute file names
(
let*
((
beg
(
or
(
and
(
functionp
'minibuffer-prompt-end
)
; Emacs 21
(
funcall
'minibuffer-prompt-end
))
(
point-min
)))
(
end
(
point-max
))
(
str
(
substitute-in-file-name
(
buffer-substring
beg
end
))))
(
delete-region
beg
end
)
(
insert
str
)
(
ad-set-arg
2
(
point
)))
;; Do `PC-do-completion' without substitution
(
let*
(
save
)
(
fset
'save
(
symbol-function
'substitute-in-file-name
))
(
unwind-protect
(
progn
(
fset
'substitute-in-file-name
(
symbol-function
'identity
))
ad-do-it
)
(
fset
'substitute-in-file-name
(
symbol-function
'save
))))
;; Expand "$"
(
let*
((
beg
(
or
(
and
(
functionp
'minibuffer-prompt-end
)
; Emacs 21
(
funcall
'minibuffer-prompt-end
))
(
point-min
)))
(
end
(
point-max
))
(
str
(
buffer-substring
beg
end
)))
(
delete-region
beg
end
)
(
insert
(
if
(
string-match
"\\(\\$\\)\\(/\\|$\\)"
str
)
(
replace-match
"$$"
nil
nil
str
1
)
str
))))
;; No file names. Behave unchanged.
ad-do-it
))
;; Activate advice. Recent Emacsen don't need that.
(
when
(
functionp
'PC-do-completion
)
(
condition-case
nil
(
substitute-in-file-name
"C$/"
)
(
error
(
ad-activate
'PC-do-completion
))))
(
provide
'tramp-smb
)
;;; TODO:
...
...
lisp/net/tramp-util.el
View file @
01917a18
;;; -*- coding: iso-2022-7bit; -*-
;;; tramp-util.el --- Misc utility functions to use with Tramp
;; Copyright (C) 2001
Free Software Foundation, Inc.
;; Copyright (C) 2001
, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
;; Author:
Kai Gro,A_(Bjohann <K
ai.
G
rossjohann@
CS.Uni-Dortmund.DE>
;; Author:
k
ai.
g
rossjohann@
gmx.net
;; Keywords: comm, extensions, processes
;; This file is free software; you can redistribute it and/or modify
...
...
@@ -32,6 +32,60 @@
(
require
'compile
)
(
require
'tramp
)
;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp
;; specific functions, like compilation.
;; The key remapping works since Emacs 21.4 only. Unknown for XEmacs.
(
when
(
fboundp
'define-minor-mode
)
(
defvar
tramp-minor-mode-map
(
make-sparse-keymap
)
"Keymap for Tramp minor mode."
)
(
define-minor-mode
tramp-minor-mode
"Tramp minor mode for utility functions."
:group
'tramp
:global
nil
:init-value
nil
:lighter
" Tramp"
:keymap
tramp-minor-mode-map
(
setq
tramp-minor-mode
(
and
tramp-minor-mode
(
tramp-tramp-file-p
default-directory
))))
(
add-hook
'find-file-hooks
'tramp-minor-mode
t
)
(
add-hook
'dired-mode-hook
'tramp-minor-mode
t
)
(
defun
tramp-remap-command
(
old-command
new-command
)
"Replaces bindings of OLD-COMMAND by NEW-COMMAND.
If remapping functionality for keymaps is defined, this happens for all
bindings. Otherwise, only bindings active during invocation are taken
into account. XEmacs menubar bindings are not changed by this."
(
if
(
functionp
'command-remapping
)
;; Emacs 21.4
(
eval
`
(
define-key
tramp-minor-mode-map
[remap
,
old-command]
new-command
))
;; previous Emacs 21 versions.
(
mapcar
'
(
lambda
(
x
)
(
define-key
tramp-minor-mode-map
x
new-command
))
(
where-is-internal
old-command
))))
(
tramp-remap-command
'compile
'tramp-compile
)
(
tramp-remap-command
'recompile
'tramp-recompile
)
;; XEmacs has an own mimic for menu entries
(
when
(
fboundp
'add-menu-button
)
(
funcall
'add-menu-button
'
(
"Tools"
"Compile"
)
[
"Compile..."
(
command-execute
(
if
tramp-minor-mode
'tramp-compile
'compile
))
:active
(
fboundp
'compile
)
]
)
(
funcall
'add-menu-button
'
(
"Tools"
"Compile"
)
[
"Repeat Compilation"
(
command-execute
(
if
tramp-minor-mode
'tramp-recompile
'recompile
))
:active
(
fboundp
'compile
)
]
)))
;; Utility functions.
(
defun
tramp-compile
(
command
)
"Compile on remote host."
(
interactive
...
...
@@ -49,6 +103,16 @@
(
setq
default-directory
d
)))
(
tramp-handle-shell-command
command
(
get-buffer
"*Compilation*"
))
(
pop-to-buffer
(
get-buffer
"*Compilation*"
))
(
tramp-minor-mode
1
)
(
compilation-minor-mode
1
))
(
defun
tramp-recompile
()
"Re-compile on remote host."
(
interactive
)
(
save-some-buffers
(
not
compilation-ask-about-save
)
nil
)
(
tramp-handle-shell-command
compile-command
(
get-buffer
"*Compilation*"
))
(
pop-to-buffer
(
get-buffer
"*Compilation*"
))
(
tramp-minor-mode
1
)
(
compilation-minor-mode
1
))
(
provide
'tramp-util
)
...
...
lisp/net/tramp-vc.el
View file @
01917a18
...
...
@@ -130,7 +130,8 @@ See `vc-do-command' for more information."
(
save-excursion
(
save-window-excursion
;; Actually execute remote command
(
shell-command
;; `shell-command' cannot be used; it isn't magic in XEmacs.
(
tramp-handle-shell-command
(
mapconcat
'tramp-shell-quote-argument
(
cons
command
squeezed
)
" "
)
t
)
;;(tramp-wait-for-output)
...
...
@@ -190,7 +191,8 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
(
let
((
w32-quote-process-args
t
))
(
when
(
eq
okstatus
'async
)
(
message
"Tramp doesn't do async commands, running synchronously."
))
(
setq
status
(
shell-command
;; `shell-command' cannot be used; it isn't magic in XEmacs.
(
setq
status
(
tramp-handle-shell-command
(
mapconcat
'tramp-shell-quote-argument
(
cons
command
squeezed
)
" "
)
t
))
(
when
(
or
(
not
(
integerp
status
))
...
...
@@ -285,7 +287,8 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
(
save-excursion
(
save-window-excursion
;; Actually execute remote command
(
shell-command
;; `shell-command' cannot be used; it isn't magic in XEmacs.
(
tramp-handle-shell-command
(
mapconcat
'tramp-shell-quote-argument
(
append
(
list
command
)
args
(
list
localname
))
" "
)
(
get-buffer-create
"*vc-info*"
))
...
...
lisp/net/tramp.el
View file @
01917a18
;;; -*- mode: Emacs-Lisp; coding: iso-2022-7bit; -*-
;;; tramp.el --- Transparent Remote Access, Multiple Protocol
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
, 2005
Free Software Foundation, Inc.
;; Author: kai.grossjohann@gmx.net
;; Keywords: comm, processes
...
...
@@ -912,6 +912,15 @@ The answer will be provided by `tramp-action-terminal', which see."
:group 'tramp
:type 'regexp)
(defcustom tramp-operation-not-permitted-regexp
(concat "\\(" "preserving times.*" "\\|" "set mode" "\\)" ":\\s-*"
(regexp-opt '("Operation not permitted") t))
"Regular expression matching keep-date problems in (s)cp operations.
Copying has been performed successfully already, so this message can
be ignored safely."
:group 'tramp
:type 'regexp)
(defcustom tramp-process-alive-regexp
""
"Regular expression indicating a process has finished.
...
...
@@ -2500,7 +2509,7 @@ if the remote host can't provide the modtime."
(fa2 (file-attributes file2)))
(if (and (not (equal (nth 5 fa1) '(0 0)))
(not (equal (nth 5 fa2) '(0 0))))
(
<
0 (tramp-time-diff (nth 5 fa
1
) (nth 5 fa
2
)))
(
>
0 (tramp-time-diff (nth 5 fa
2
) (nth 5 fa
1
)))
;; If one of them is the dont-know value, then we can
;; still try to run a shell command on the remote host.
;; However, this only works if both files are Tramp
...
...
@@ -2822,10 +2831,8 @@ if the remote host can't provide the modtime."
;; At least one file a tramp file?
(if (or (tramp-tramp-file-p filename)
(tramp-tramp-file-p newname))
(let ((modes (file-modes filename)))
(tramp-do-copy-or-rename-file
'copy filename newname ok-if-already-exists keep-date)
(set-file-modes newname modes))
(tramp-do-copy-or-rename-file
'copy filename newname ok-if-already-exists keep-date)
(tramp-run-real-handler
'copy-file
(list filename newname ok-if-already-exists keep-date))))
...
...
@@ -2973,8 +2980,9 @@ KEEP-DATE is non-nil if NEWNAME should have the same timestamp as FILENAME."
(when keep-date
(when (and (not (null modtime))
(not (equal modtime '(0 0))))
(tramp-touch newname modtime))
(set-file-modes newname (file-modes filename))))
(tramp-touch newname modtime)))
;; Set the mode.
(set-file-modes newname (file-modes filename)))
;; If the operation was `rename', delete the original file.
(unless (eq op 'copy)
(delete-file filename))))
...
...
@@ -2994,15 +3002,34 @@ If KEEP-DATE is non-nil, preserve the time stamp when copying."
"Unknown operation `%s', must be `copy' or `rename'"
op)))))
(save-excursion
(tramp-
barf-unless-okay
(tramp-
send-command
multi-method method user host
(format "%s %s %s"
cmd
(tramp-shell-quote-argument localname1)
(tramp-shell-quote-argument localname2))
nil 'file-error
"Copying directly failed, see buffer `%s' for details."
(buffer-name)))))
(tramp-shell-quote-argument localname2)))
(tramp-wait-for-output)
(goto-char (point-min))
(unless
(or
(and (eq op 'copy) keep-date
;; Mask cp -f error.
(re-search-forward tramp-operation-not-permitted-regexp nil t))
(zerop (tramp-send-command-and-check
multi-method method user host nil nil)))
(pop-to-buffer (current-buffer))
(signal 'file-error
(format "Copying directly failed, see buffer `%s' for details."
(buffer-name)))))
;; Set the mode.
;; CCC: Maybe `chmod --reference=localname1 localname2' could be used
;; where available?
(unless (or (eq op 'rename) keep-date)
(set-file-modes
(tramp-make-tramp-file-name multi-method method user host localname2)
(file-modes
(tramp-make-tramp-file-name
multi-method method user host localname1))))))
(defun tramp-do-copy-or-rename-file-out-of-band (op filename newname keep-date)
"Invoke rcp program to copy.
...
...
@@ -3122,7 +3149,11 @@ be a local filename. The method used must be an out-of-band method."
tramp-actions-copy-out-of-band))
(kill-buffer trampbuf)
(tramp-message
5 "Transferring %s to file %s...done" filename newname))
5 "Transferring %s to file %s...done" filename newname)
;; Set the mode.
(unless keep-date
(set-file-modes newname (file-modes filename))))
;; If the operation was `rename', delete the original file.
(unless (eq op 'copy)
...
...
@@ -4074,7 +4105,9 @@ ARGS are the arguments OPERATION has been called with."
(if (bufferp (nth 0 args)) (nth 0 args) (current-buffer))))
; COMMAND
((member operation
(list 'dired-call-process 'shell-command
(list 'dired-call-process-command
; Emacs only
'shell
; Post Emacs 21.3 only
'process-file
; XEmacs only
...
...
@@ -4908,7 +4941,10 @@ USER the array of user names, HOST the array of host names."
(defun tramp-get-buffer (multi-method method user host)
"Get the connection buffer to be used for USER at HOST using METHOD."
(get-buffer-create (tramp-buffer-name multi-method method user host)))
(with-current-buffer
(get-buffer-create (tramp-buffer-name multi-method method user host))
(setq buffer-undo-list t)
(current-buffer)))
(defun tramp-debug-buffer-name (multi-method method user host)
"A name for the debug buffer for USER at HOST using METHOD."
...
...
@@ -4922,7 +4958,11 @@ USER the array of user names, HOST the array of host names."
(defun tramp-get-debug-buffer (multi-method method user host)
"Get the debug buffer for USER at HOST using METHOD."
(get-buffer-create (tramp-debug-buffer-name multi-method method user host)))
(with-current-buffer
(get-buffer-create
(tramp-debug-buffer-name multi-method method user host))
(setq buffer-undo-list t)
(current-buffer)))
(defun tramp-find-executable (multi-method method user host
progname dirlist ignore-tilde)
...
...
@@ -5214,8 +5254,16 @@ The terminal type can be configured with `tramp-terminal-type'."
((or (and (memq (process-status p) '(stop exit))
(not (zerop (process-exit-status p))))
(memq (process-status p) '(signal)))
(tramp-message 9 "Process has died.")
(throw 'tramp-action 'process-died))
;; `scp' could have copied correctly, but set modes could have failed.
;; This can be ignored.
(goto-char (point-min))
(if (re-search-forward tramp-operation-not-permitted-regexp nil t)
(progn
(tramp-message 10 "'set mode' error ignored.")
(tramp-message 9 "Process has finished.")
(throw 'tramp-action 'ok))
(tramp-message 9 "Process has died.")
(throw 'tramp-action 'process-died)))
(t nil)))
;; The following functions are specifically for multi connections.
...
...
@@ -6336,7 +6384,7 @@ Sends COMMAND, then waits 30 seconds for shell prompt."
(save-excursion
(goto-char start-point)
(when (looking-at (regexp-quote tramp-last-cmd))
(delete-region (point) (forward-line 1)))))
(delete-region (point)
(progn
(forward-line 1)
(point))
))))
;; Add output to debug buffer if appropriate.
(when tramp-debug-buffer
(append-to-buffer
...
...
lisp/net/trampver.el
View file @
01917a18
...
...
@@ -30,7 +30,7 @@
;; are auto-frobbed from configure.ac, so you should edit that file and run
;; "autoconf && ./configure" to change them.
(
defconst
tramp-version
"2.0.4
6
"
(
defconst
tramp-version
"2.0.4
7
"
"This version of Tramp."
)
(
defconst
tramp-bug-report-address
"tramp-devel@mail.freesoftware.fsf.org"
...
...
man/ChangeLog
View file @
01917a18
2005-01-16 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.0.47.
* tramp.texi (Compilation): New section, describing compilation of
remote files.
2005-01-15 Sergey Poznyakoff <gray@Mirddin.farlep.net>
* man/rmail.texi: Document support for GNU mailutils in rmail.el.
...
...
man/tramp.texi
View file @
01917a18
...
...
@@ -25,8 +25,8 @@
@end macro
@copying
Copyright @copyright
{}
1999, 2000, 2001, 2002, 2003, 2004
Free Softwar
e
Foundation, Inc.
Copyright @copyright
{}
1999, 2000, 2001, 2002, 2003, 2004
, 2005 Fre
e
Software
Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
...
...
@@ -192,6 +192,7 @@ Using @value{tramp}
* Multi-hop filename syntax:: Multi-hop filename conventions.
* Filename completion:: Filename completion.
* Dired:: Dired.
* Compilation:: Compile remote files.
The inner workings of remote version control
...
...
@@ -1690,6 +1691,7 @@ minute you have already forgotten that you hit that key!
*
Multi
-
hop filename syntax:: Multi
-
hop filename conventions.
*
Filename completion:: Filename completion.
*
Dired:: Dired.
*
Compilation:: Compile remote files.
@end menu
...
...
@@ -1885,6 +1887,32 @@ present, than filename completion. Dired has its own cache mechanism
and will only fetch the directory listing once.
@node Compilation
@section Compile remote files
@cindex compile
@cindex recompile
@value
{
tramp
}
provides commands for compilation of files on remote
machines. In order to get them loaded, you need to require
@file
{
tramp
-
util.el
}
:
@lisp
(
require 'tramp
-
util
)
@end lisp
Afterwards, you can use the commands @code
{
tramp
-
compile
}
and
@code
{
tramp
-
recompile
}
instead of @code
{
compile
}
and @code
{
recompile
}
,
respectively; @inforef
{
Compilation, ,@value
{
emacsdir
}}
. This does not
work for the @option
{
ftp
}
and @option
{
smb
}
methods.
The corresponding key bindings and menu entries calling these commands
are redefined automatically for buffers associated with remote files.
After finishing the compilation, you can use the usual commands like
@code
{
previous
-
error
}
, @code
{
next
-
error
}
and @code
{
first
-
error
}
for
navigation in the @file
{
*
Compilation
*
}
buffer.
@node Bug Reports
@chapter Reporting Bugs and Problems
@cindex bug reports
...
...
man/trampver.texi
View file @
01917a18
...
...
@@ -4,7 +4,7 @@
@c In the Tramp CVS, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
@set trampver 2.0.4
6
@set trampver 2.0.4
7
@c Other flags from configuration
@set prefix /usr/local
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment