From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.help Subject: Finding simpler better sudo for Emacs Date: Tue, 30 Mar 2021 13:23:24 +0300 Message-ID: References: <87blb13vr8.fsf@gmx.de> <877dlp3q61.fsf@gmx.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29468"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.0.6 (2021-03-06) Cc: Help GNU Emacs To: Michael Albinus Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Tue Mar 30 12:27:14 2021 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lRBac-0007Xh-8m for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 30 Mar 2021 12:27:14 +0200 Original-Received: from localhost ([::1]:55726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lRBab-0002c9-7R for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 30 Mar 2021 06:27:13 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48418) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lRBa0-0002bC-SA for help-gnu-emacs@gnu.org; Tue, 30 Mar 2021 06:26:36 -0400 Original-Received: from stw1.rcdrun.com ([217.170.207.13]:38603) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lRBZy-0001io-JF for help-gnu-emacs@gnu.org; Tue, 30 Mar 2021 06:26:36 -0400 Original-Received: from localhost ([::ffff:41.202.241.58]) (AUTH: PLAIN securesender, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 000000000001E079.000000006062FCD7.0000678C; Tue, 30 Mar 2021 03:26:30 -0700 Mail-Followup-To: Michael Albinus , Help GNU Emacs Content-Disposition: inline In-Reply-To: <877dlp3q61.fsf@gmx.de> Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:128759 Archived-At: * Michael Albinus [2021-03-30 13:14]: > Jean Louis writes: > > Hi Jean, > > > (defun sudo (&rest arguments) > > "Executes list ARGUMENTS with system command `sudo'." > > (let ((original-directory default-directory) > > (default-directory "/sudo::") > > (return (shell-command-to-string (string-join arguments " ")))) > > (setq default-directory original-directory) > > return)) > > There's no need to keep and set original-directory, this is done by the > let wrapper. Maybe I know what you mean, as let wrapper should not set globally the default directory, but practically, I have shown you that it is changing to /root so that may be something done by tramp in background, I do not know. > And setting default-directory doesn't do anything, you would need let* in > your approach. Well, the function above did not change the default directoy, I would not know what you mean. Important in that past moment is that it did work that way. > With my adapted code snippet, you could do the following in order to > keep the current directory: > (defun sudo (&rest arguments) "Executes list ARGUMENTS with system command `sudo'." (let ((default-directory (concat "/sudo::" (file-local-name default-directory)))) (shell-command-to-string (string-join arguments " ")))) (sudo "ls") → " 0install-ea1f1e-download 847cf980479cf1dd15482464efa8620ca98c1c93c5a3ac1e2a1dd24918b9cd46.html adb.1001.log" ;; are files from my tmp but then if I change to dired buffer ~/tmp and do: M-: -- (sudo "ls") I get following error: "sh: cd: /root/tmp/: No such file or directory So, no, no, it does not work as you and me intended. This one here still works better as it remembers the current directory and brings it back, as Tramp probably does some change in background, don't know why. (defun sudo (&rest arguments) "Executes list ARGUMENTS with system command `sudo'." (let ((original-directory default-directory) (default-directory "/sudo::") (return (shell-command-to-string (string-join arguments " ")))) (setq default-directory original-directory) return)) -- Jean Take action in Free Software Foundation campaigns: https://www.fsf.org/campaigns