14 lines
		
	
	
		
			611 B
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			14 lines
		
	
	
		
			611 B
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
(defun open-this-file-as-other-user (user)
 | 
						|
  "Edit current file as USER, using `tramp' and `sudo'.  If the current
 | 
						|
buffer is not visiting a file, prompt for a file name."
 | 
						|
  (interactive "sEdit as user (default: root): ")
 | 
						|
  (when (string= "" user)
 | 
						|
    (setq user "root"))
 | 
						|
  (let* ((filename (or buffer-file-name
 | 
						|
                       (read-file-name (format "Find file (as %s): "
 | 
						|
                                               user))))
 | 
						|
         (tramp-path (concat (format "/sudo:%s@localhost:" user) filename)))
 | 
						|
    (if buffer-file-name
 | 
						|
        (find-alternate-file tramp-path)
 | 
						|
      (find-file tramp-path))))
 |