From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kevin Rodgers Newsgroups: gmane.emacs.help Subject: Re: Post-Advice for file-move (rename-file()) but not upon save-buffer Date: Tue, 15 May 2007 21:40:03 -0600 Message-ID: References: <1178441879.660722.212060@p77g2000hsh.googlegroups.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Trace: sea.gmane.org 1179286827 2577 80.91.229.12 (16 May 2007 03:40:27 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 16 May 2007 03:40:27 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed May 16 05:40:25 2007 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1HoAND-0003Yb-9W for geh-help-gnu-emacs@m.gmane.org; Wed, 16 May 2007 05:40:23 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HoAV9-0007YX-7D for geh-help-gnu-emacs@m.gmane.org; Tue, 15 May 2007 23:48:35 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HoAUu-0007Xy-Vn for help-gnu-emacs@gnu.org; Tue, 15 May 2007 23:48:21 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HoAUu-0007Xf-J7 for help-gnu-emacs@gnu.org; Tue, 15 May 2007 23:48:20 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HoAUu-0007XV-A0 for help-gnu-emacs@gnu.org; Tue, 15 May 2007 23:48:20 -0400 Original-Received: from main.gmane.org ([80.91.229.2] helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1HoAMx-0000xg-8Y for help-gnu-emacs@gnu.org; Tue, 15 May 2007 23:40:07 -0400 Original-Received: from list by ciao.gmane.org with local (Exim 4.43) id 1HoAMo-0006Vx-FA for help-gnu-emacs@gnu.org; Wed, 16 May 2007 05:39:58 +0200 Original-Received: from c-67-162-159-170.hsd1.co.comcast.net ([67.162.159.170]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 16 May 2007 05:39:58 +0200 Original-Received: from kevin.d.rodgers by c-67-162-159-170.hsd1.co.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 16 May 2007 05:39:58 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 53 Original-X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: c-67-162-159-170.hsd1.co.comcast.net User-Agent: Thunderbird 1.5.0.10 (Macintosh/20070221) In-Reply-To: <1178441879.660722.212060@p77g2000hsh.googlegroups.com> X-detected-kernel: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:44021 Archived-At: Nordlöw wrote: > Hey there again, Emacs Hackers! > > I want to make Emacs run a command every time a file is moved/renamed > (from Emacs) > > Here is the essential part of my code: > > (defadvice rename-file (after update-c-includes activate) > "Update C include statements upon rename of file." > (let ((file (file-name-nondirectory (ad-get-arg 0))) > (newname (file-name-nondirectory (ad-get-arg 1)))) > (if (or (file-is-C-header file) > (file-is-C-header newname)) > (if (y-or-n-p "Update C,C++ #includes accordingly ") > ;; TODO: We need to strip parts of the path from file and newname > (c-rename-includes file newname)) > ))) > > This works as intended for rename-file but it also gets called when I > save a buffer to file, using save-buffer(), which is *not* what I > want. I guess it's because save-file() is implemented using rename- > file(). > > How can I make it run *solely* when I rename a file? ,----[ C-h f interactive-p RET ] | interactive-p is a built-in function in `C source code'. | (interactive-p) | | Return t if the function was run directly by user input. | This means that the function was called with `call-interactively' | (which includes being called as the binding of a key) | and input is currently coming from the keyboard (not in keyboard macro), | and Emacs is not running in batch mode (`noninteractive' is nil). | | The only known proper use of `interactive-p' is in deciding whether to | display a helpful message, or how to display it. If you're thinking | of using it for any other purpose, it is quite likely that you're | making a mistake. Think: what do you want to do when the command is | called from a keyboard macro? | | If you want to test whether your function was called with | `call-interactively', the way to do that is by adding an extra | optional argument, and making the `interactive' spec specify non-nil | unconditionally for that argument. (`p' is a good way to do this.) | | [back] `---- -- Kevin Rodgers Denver, Colorado, USA