* kill-matching-buffers without confirmation [not found] <537757403.6158992.1495470490914.ref@mail.yahoo.com> @ 2017-05-22 16:28 ` R. Diez 2017-05-22 18:21 ` Kaushal Modi 2017-05-22 22:21 ` Drew Adams 0 siblings, 2 replies; 17+ messages in thread From: R. Diez @ 2017-05-22 16:28 UTC (permalink / raw) To: emacs-devel@gnu.org Hallo all: Could someone please add a clean way for 'kill-matching-buffers' to not ask for confirmation? Apparently, I am not the only once that has hit this nag: https://stackoverflow.com/questions/10929915/how-do-i-answer-y-automatically-kill-matching-buffers-asks-if-i-should-kill-a-m I am tired of overriding 'kill-buffer-ask' with flet as suggested there, and then seeing this warning: Warning (bytecomp): ‘flet’ is an obsolete macro (as of 24.3); use either ‘cl-flet’ or ‘cl-letf’. And then remembering that cl-flet does not work, and it gets complicated with Lisp macros, dynamic something, etc. I am no Elisp expert. I am sending this e-mail to this mailing list because that function lives in files.el, which states at the top: ;; Maintainer: emacs-devel@gnu.org ;; Package: emacs Please copy me on the answer, as I am not subscribed to the list. Regards, rdiez ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 16:28 ` kill-matching-buffers without confirmation R. Diez @ 2017-05-22 18:21 ` Kaushal Modi 2017-05-22 18:34 ` Clément Pit-Claudel 2017-05-22 22:21 ` Drew Adams 1 sibling, 1 reply; 17+ messages in thread From: Kaushal Modi @ 2017-05-22 18:21 UTC (permalink / raw) To: R. Diez, Emacs developers [-- Attachment #1: Type: text/plain, Size: 528 bytes --] On Mon, May 22, 2017 at 2:11 PM R. Diez <rdiezmail-emacs@yahoo.de> wrote: > > Please copy me on the answer, as I am not subscribed to the list. > For future, all help questions can go to help-gnu-emacs@gnu.org To answer your question, here is one way: (defun kill-matching-buffers-just-do-it () "Kill buffers whose names match REGEXP, without asking." (interactive) (cl-letf (((symbol-function 'kill-buffer-ask) #'kill-buffer)) (call-interactively #'kill-matching-buffers))) -- Kaushal Modi [-- Attachment #2: Type: text/html, Size: 1078 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 18:21 ` Kaushal Modi @ 2017-05-22 18:34 ` Clément Pit-Claudel 2017-05-22 18:42 ` Kaushal Modi 0 siblings, 1 reply; 17+ messages in thread From: Clément Pit-Claudel @ 2017-05-22 18:34 UTC (permalink / raw) To: Kaushal Modi, R. Diez, Emacs developers On 2017-05-22 14:21, Kaushal Modi wrote: > For future, all help questions can go to help-gnu-emacs@gnu.org <mailto:help-gnu-emacs@gnu.org> The OP looked like a feature request actually; wouldn't bug-gnu-emacs be more appropriate? (Your workaround works, but the OP was about a clean way to do that, and a new defun + an flet is relatively heavy) Clément. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 18:34 ` Clément Pit-Claudel @ 2017-05-22 18:42 ` Kaushal Modi 2017-05-22 18:45 ` Clément Pit-Claudel 0 siblings, 1 reply; 17+ messages in thread From: Kaushal Modi @ 2017-05-22 18:42 UTC (permalink / raw) To: Clément Pit-Claudel, R. Diez, Emacs developers [-- Attachment #1: Type: text/plain, Size: 487 bytes --] On Mon, May 22, 2017 at 2:34 PM Clément Pit-Claudel <cpitclaudel@gmail.com> wrote: > The OP looked like a feature request actually; wouldn't bug-gnu-emacs be > more appropriate? > Yes, definitely. > (Your workaround works, but the OP was about a clean way to do that, and a > new defun + an flet is relatively heavy) > I found the cl-left approach very concise. But yes, if this is a feature request, then may be add another optional argument? -- Kaushal Modi [-- Attachment #2: Type: text/html, Size: 968 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 18:42 ` Kaushal Modi @ 2017-05-22 18:45 ` Clément Pit-Claudel 2017-05-22 19:00 ` Kaushal Modi 0 siblings, 1 reply; 17+ messages in thread From: Clément Pit-Claudel @ 2017-05-22 18:45 UTC (permalink / raw) To: Kaushal Modi, R. Diez, Emacs developers On 2017-05-22 14:42, Kaushal Modi wrote: >> (Your workaround works, but the OP was about a clean way to do that, and a new defun + an flet is relatively heavy) > I found the cl-left approach very concise. But yes, if this is a feature request, then may be add another optional argument? Or a defcustom, since it seems that the usual approach is to override the behavior unconditionally. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 18:45 ` Clément Pit-Claudel @ 2017-05-22 19:00 ` Kaushal Modi 2017-05-22 19:13 ` Clément Pit-Claudel 0 siblings, 1 reply; 17+ messages in thread From: Kaushal Modi @ 2017-05-22 19:00 UTC (permalink / raw) To: Clément Pit-Claudel, R. Diez, Emacs developers [-- Attachment #1: Type: text/plain, Size: 607 bytes --] On Mon, May 22, 2017 at 2:45 PM Clément Pit-Claudel <cpitclaudel@gmail.com> wrote: > Or a defcustom, since it seems that the usual approach is to override the > behavior unconditionally. > A defcustom seems too risky for this. A user can unknowingly copy that var from somewhere and then end up killing modified buffers without confirmation. Add a new defun that just sets the new optional arg to non-nil value is less risky as the user would then be knowingly calling the risky variant. The default kill-matching-buffers will still remain safe. What do you think? -- Kaushal Modi [-- Attachment #2: Type: text/html, Size: 985 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 19:00 ` Kaushal Modi @ 2017-05-22 19:13 ` Clément Pit-Claudel 2017-05-22 19:20 ` Kaushal Modi 2017-05-22 19:34 ` Stefan Monnier 0 siblings, 2 replies; 17+ messages in thread From: Clément Pit-Claudel @ 2017-05-22 19:13 UTC (permalink / raw) To: Kaushal Modi, R. Diez, Emacs developers On 2017-05-22 15:00, Kaushal Modi wrote: > A defcustom seems too risky for this. A user can unknowingly copy that var from somewhere and then end up killing modified buffers without confirmation. I don't think we've applied such a standard before: we have multiple other variables that disable confirmation prompts, like confirm-nonexistent-file-or-buffer, confirm-kill-processes or kill-buffer-query-functions. > Add a new defun that just sets the new optional arg to non-nil value is less risky as the user would then be knowingly calling the risky variant. Isn't there a similar risk of a user unknowingly copying code that rebinds the default binding to the risky variant? Cheers, Clément. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 19:13 ` Clément Pit-Claudel @ 2017-05-22 19:20 ` Kaushal Modi 2017-05-22 19:34 ` Stefan Monnier 1 sibling, 0 replies; 17+ messages in thread From: Kaushal Modi @ 2017-05-22 19:20 UTC (permalink / raw) To: Clément Pit-Claudel, R. Diez, Emacs developers [-- Attachment #1: Type: text/plain, Size: 266 bytes --] On Mon, May 22, 2017 at 3:13 PM Clément Pit-Claudel <cpitclaudel@gmail.com> wrote: > Isn't there a similar risk of a user unknowingly copying code that rebinds > the default binding to the risky variant? > I cannot argue with that :) -- Kaushal Modi [-- Attachment #2: Type: text/html, Size: 606 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 19:13 ` Clément Pit-Claudel 2017-05-22 19:20 ` Kaushal Modi @ 2017-05-22 19:34 ` Stefan Monnier 1 sibling, 0 replies; 17+ messages in thread From: Stefan Monnier @ 2017-05-22 19:34 UTC (permalink / raw) To: emacs-devel >> A defcustom seems too risky for this. A user can unknowingly copy that var >> from somewhere and then end up killing modified buffers >> without confirmation. > I don't think we've applied such a standard before: we have multiple other > variables that disable confirmation prompts, like > confirm-nonexistent-file-or-buffer, confirm-kill-processes or > kill-buffer-query-functions. Killing a modified buffer means throwing away data without any way to recover it, so it's kind of "almost always dangerous". In contrast confirm-nonexistent-file-or-buffer is never dangerous, confirm-kill-processes can be dangerous but it very much depends, and kill-buffer-query-functions (which *is* dangerous as well) is not a defcustom. Stefan ^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: kill-matching-buffers without confirmation 2017-05-22 16:28 ` kill-matching-buffers without confirmation R. Diez 2017-05-22 18:21 ` Kaushal Modi @ 2017-05-22 22:21 ` Drew Adams 2017-05-23 5:28 ` Yuri Khan ` (2 more replies) 1 sibling, 3 replies; 17+ messages in thread From: Drew Adams @ 2017-05-22 22:21 UTC (permalink / raw) To: R. Diez, emacs-devel > Could someone please add a clean way for 'kill-matching-buffers' to not ask > for confirmation?... > > I am tired of overriding 'kill-buffer-ask' with flet as suggested there, > and then seeing this warning: > > Warning (bytecomp): ‘flet’ is an obsolete macro (as of 24.3); use either > ‘cl-flet’ or ‘cl-letf’. > > And then remembering that cl-flet does not work, and it gets complicated > with Lisp macros, dynamic something, etc. I am no Elisp expert. The suggestions to wrap `kill-matching-buffers' with `cl-letf' or `flet' are overkill - misguided, IMHO. You are defining _your own_ command. Just define it directly. The code to do that is trivial. For one thing, you can just copy the existing code of `kill-matching-buffers' and substitute `kill-buffer' for `kill-buffer-ask'. I don't think that Emacs needs either (1) a new, non-confirming command for this or (2) a variable to inhibit confirmation by `kill-matching-buffers'. I don't even think that Emacs needs commands `kill-matching-buffers' and `kill-some-buffers' at all, for that matter. ---- [What Emacs should offer instead is a way for `C-x k' to act (by hitting a key) on *each* completion of your input. And ways to match buffer names better, possibly choosing how on the fly: substring, regexp, fuzzy. And a way to progressively narrow the set of matches. And a way to act on specific matches but not all. And a way to act on non-matches. And a way to filter buffer-name matches to keep or remove those for modified buffers. (In Icicles, you use `C-x k', type a regexp, complete, and hit `C-!' to kill all of the matches. To filter out the modified buffers, just use `C-x * -' before hitting `C-!'. So that's `C-x k TAB C-x * -'. And you can use `C-M-down' to see info about each buffer, including whether it is modified. And the same keys work for other commands that use buffer-name completion, e.g., `C-x 4 b'.)] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 22:21 ` Drew Adams @ 2017-05-23 5:28 ` Yuri Khan 2017-05-23 6:28 ` R. Diez 2017-05-23 12:51 ` Kaushal Modi 2 siblings, 0 replies; 17+ messages in thread From: Yuri Khan @ 2017-05-23 5:28 UTC (permalink / raw) To: Drew Adams; +Cc: R. Diez, Emacs developers On Tue, May 23, 2017 at 5:21 AM, Drew Adams <drew.adams@oracle.com> wrote: > I don't even think that Emacs needs commands `kill-matching-buffers' and > `kill-some-buffers' at all, for that matter. > > [What Emacs should offer instead is a way for `C-x k' to act (by hitting > a key) on *each* completion of your input. And ways to match buffer names > better, possibly choosing how on the fly: substring, regexp, fuzzy. Another UI for the same use case is: * Open up a buffer list (e.g. ibuffer). * Mark buffers by regexp (‘% n’ in ibuffer). * Inspect the list to ensure it’s what you expect. Possibly mark or unmark some. * Kill marked buffers. If any of those are unsaved, a prompt could offer the “yes for all” choice, like ! does in query-replace. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 22:21 ` Drew Adams 2017-05-23 5:28 ` Yuri Khan @ 2017-05-23 6:28 ` R. Diez 2017-05-23 20:34 ` Drew Adams 2017-05-23 12:51 ` Kaushal Modi 2 siblings, 1 reply; 17+ messages in thread From: R. Diez @ 2017-05-23 6:28 UTC (permalink / raw) To: Drew Adams; +Cc: emacs-devel@gnu.org > You are defining _your own_ command. Just define it directly. > The code to do that is trivial. I think you are misguided here. You seem to believe that Emacs users are confident Elisp programmers. This is the source code of kill-matching-buffers: (defun kill-matching-buffers (regexp &optional internal-too) "Kill buffers whose name matches the specified REGEXP. The optional second argument indicates whether to kill internal buffers too." (interactive "sKill buffers matching this regular expression: \nP") (dolist (buffer (buffer-list)) (let ((name (buffer-name buffer))) (when (and name (not (string-equal name "")) (or internal-too (/= (aref name 0) ?\s)) (string-match regexp name)) (kill-buffer-ask buffer))))) It is not clear to me what internal buffers are, or why some of them could have an empty name. I cannot see a reason why I, as a regular user, should care. > For one thing, you can just copy the existing code of >`kill-matching-buffers' and substitute `kill-buffer' for `kill-buffer-ask'. This is really bad advice. If the next version of Emacs changes the implementation of that routine, my copy will miss those changes. My use case is not actually interactive. I just want to close the buffers that ediff automatically creates from its exit hook, but I have other scenarios where other things automatically load buffers that I no longer want. I do that kind of clean-up in a hook, no interaction required. > [What Emacs should offer instead is a way for `C-x k' to act (by hitting No, this is not what I need. I do not want interactive selection or fuzzy matches. I know exactly what pattern to use. What you are describing is a separate enhancement for interactive usage. [Obligatory rant follows] I am just asking for a little convenience function. It is almost what kill-matching-buffers does, just without hard-coded confirmation. This is a recurrent pattern with Emacs. Everything is so complicated, and there is so much discussion. There are other open-source projects which do not advice their users to create a bug themselves after posting a request, or which do not tell them to write their own code for each little thing. If a small improvement helps the regular user in his daily life, they just do it! The mere existence of the Stack Overflow question and the first replies here with cl-letf etc. should make it obvious that such a convenience function/flag would help. Regards, rdiez ^ permalink raw reply [flat|nested] 17+ messages in thread
* RE: kill-matching-buffers without confirmation 2017-05-23 6:28 ` R. Diez @ 2017-05-23 20:34 ` Drew Adams 0 siblings, 0 replies; 17+ messages in thread From: Drew Adams @ 2017-05-23 20:34 UTC (permalink / raw) To: R. Diez; +Cc: emacs-devel > > You are defining _your own_ command. Just define it directly. > > The code to do that is trivial. > > I think you are misguided here. You seem to believe that Emacs > users are confident Elisp programmers. No, not really. But if you're defining your own command then you need to know _something_ about Elisp. And if you are using `cl-letf' or `flet' then I'd suggest that you should maybe be at least as familiar with Elisp as what you'll need to be to understand the code of `kill-matching-buffers' and to substitute `kill-buffer' for `kill-buffer-ask' there. I think that the code for `kill-matching-buffers' is a lot easier for a non-Lisper to understand than is the use of `cl-letf' or `flet', which are macros that define and apply functions, using generalized variables. Just one opinion, of course. > This is the source code of kill-matching-buffers: > > (defun kill-matching-buffers (regexp &optional internal-too) > (interactive "sKill buffers matching this regular expression: \nP") > (dolist (buffer (buffer-list)) > (let ((name (buffer-name buffer))) > (when (and name (not (string-equal name "")) > (or internal-too (/= (aref name 0) ?\s)) > (string-match regexp name)) > (kill-buffer-ask buffer))))) `C-h f kill-buffer-ask' tells you: "Kill BUFFER if confirmed." `C-h f kill-buffer' says: "Kill the buffer specified by BUFFER-OR-NAME." Without looking at the code defining them, you might guess that a difference is that the former prompts for confirmation and the latter does not. Not that I suggest you rely only on doc strings and not look at the code, but a reasonable guess is that you can replace `kill-buffer-ask' by `kill-buffer', to kill a buffer without being asked for confirmation. Anyway, I didn't expect you to necessarily come up with this on your own: I offered it to you, as one possible solution. > It is not clear to me what internal buffers are, or why some of them could > have an empty name. I cannot see a reason why I, as a regular user, should > care. You are the user of `kill-matching-buffers', not I. It is the doc of that command that speaks of internal buffers. If you don't understand what they are, and if you don't care, then you needn't be concerned with them. The doc says: "The optional second argument indicates whether to kill internal buffers too." That's bad doc (IMO). How does that arg "indicate whether"? And what does "optional second argument" mean to an interactive user? That doc should say: (1) by default, internal buffers are ignored and (2) with a prefix argument they are not ignored. It can add that non-interactively, non-nil optional arg INTERNAL-TOO means they are not ignored. You will need to consult the more general Emacs doc if you really want to know what an internal buffer is. But you can just ignore what it is and not use a prefix arg. In any case, you need not care to know about internal buffers with the solution I offered any more than you would need to care about it with the solution of using `cl-letf' or `flet'. The latter just calls `kill-matching-buffers, so you are back to reading its doc string and wondering what on Earth an internal buffer is. > > For one thing, you can just copy the existing code of > > `kill-matching-buffers' and substitute `kill-buffer' for > > `kill-buffer-ask'. > > This is really bad advice. If the next version of Emacs changes the > implementation of that routine, my copy will miss those changes. Don't follow it, if you think it's really bad advice. > My use case is not actually interactive. I just want to close the buffers > that ediff automatically creates from its exit hook, but I have other > scenarios where other things automatically load buffers that I no longer > want. I do that kind of clean-up in a hook, no interaction required. Clearly you are a confident Elisp programmer, in spite of what you said earlier. ;-) In that case, it is hard to believe that you would have difficulty following the code of `kill-matching-buffers'. > > [What Emacs should offer instead is a way for `C-x k' to act > > No, this is not what I need. I do not want interactive selection or fuzzy > matches. I know exactly what pattern to use. What you are describing is a > separate enhancement for interactive usage. Yes, well, your initial message did not say that you were not looking for interactive killing of buffers. In fact, you pointed to an SO question that explicitly tries to define a command to do it (interactively). And the answers to that question did the same. That was clearly all about interactive killing of buffers without being prompted to confirm. And you'll note that at least one person (not I) did not understand that you were making an enhancement request and not asking for help to come up with your own command. You were not clear, I think. Please forgive me for trying to help without being a mind-reader. I'll try not to let it happen again. > [Obligatory rant follows] > > I am just asking for a little convenience function. It is almost > what kill-matching-buffers does, just without hard-coded confirmation. > > This is a recurrent pattern with Emacs. Everything is so complicated, > and there is so much discussion. Things are generally much less complicated if you make clear from the outset just what you are asking. People spend time trying to help you, and you berate them for not guessing correctly what you had in mind. Next time, things might be a lot less complicated. ;-) > There are other open-source projects which do not advice their > users to create a bug themselves after posting a request, If someone suggested somewhere that you do `M-x report-emacs-bug' to submit your enhancement request, that's a good response. That's the recommended way to submit enhancement requests. You can instead send your request to this list, but in any case, your request will likely get more traction if it is clear. > or which do not tell them > to write their own code for each little thing. If a small improvement helps > the regular user in his daily life, they just do it! The mere existence of > the Stack Overflow question and the first replies here with cl-letf etc. > should make it obvious that such a convenience function/flag would help. I happen to agree 100% that it is fine to request "little things", as well as big things, from Emacs Dev. And that little improvements can sometimes make a great difference for users. I don't think anyone told you that your suggestion is unwelcome. Personally, I don't think that `kill-matching-buffers' and `kill-some-buffers' are very useful. By that I mean that they, or similar, could be more useful. One of the ways `k-m-b' could be more useful is precisely what you're looking for: let the prompting be optional. And yes, I'm more interested in having Emacs provide ways for users to do such filtering and acting on things like buffers interactively. That's missing. Providing a function like `kill-matching-buffers' for non-interactive use is not so important, to me. Just one opinion. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-22 22:21 ` Drew Adams 2017-05-23 5:28 ` Yuri Khan 2017-05-23 6:28 ` R. Diez @ 2017-05-23 12:51 ` Kaushal Modi 2017-05-23 13:03 ` Stefan Monnier 2 siblings, 1 reply; 17+ messages in thread From: Kaushal Modi @ 2017-05-23 12:51 UTC (permalink / raw) To: Drew Adams, R. Diez, emacs-devel [-- Attachment #1: Type: text/plain, Size: 2773 bytes --] On Mon, May 22, 2017 at 6:21 PM Drew Adams <drew.adams@oracle.com> wrote: > The suggestions to wrap `kill-matching-buffers' with `cl-letf' or `flet' > are overkill - misguided, IMHO. > Using cl-letf is one of the valid ways. I wouldn't call it an overkill. It instead precisely does what the OP needed without have to rewrite the whole function in the user's config. > You are defining _your own_ command. Just define it directly. The code to > do that is trivial. For one thing, you can just copy the existing code of > `kill-matching-buffers' and substitute `kill-buffer' for `kill-buffer-ask'. > That's another way of implementing the solution; neither way is functionally wrong. It just depends on the user preference. In this case it happens that the kill-matching-buffers is a short function. But even then, using cl-letf ends in a shorter solution than re-writing the whole function. Here are few advantages of not re-writing core functions in user configs: - User might forget what exactly were they trying to redefine in that function in their config (if they didn't comment it well). Inherently it's not evident what the user is trying to override in their config... One has to diff with the version in the core to understand the differences. This applies to the user as well as to anyone else looking at the user's config if shared publicly. - As I mentioned above, re-writing is not as concise. - If the core version of the function changes/gets improved/bug fixed, there are chances that the cl-letf'ed function will still work. If you rewrote the function in your config, you might keep on using the older version of the function forever without knowing of improvements in the source. And if the cl-letf'd function breaks, that's good too as at least that you prompt you to fix things locally to match the core. - By using facilities like cl-letf, (and along the same lines, advices), you can surgically modify only the stuff you need. It's less cognitive load to have the code tell what exactly is being changed. I don't think that Emacs needs either (1) a new, non-confirming command for > this or (2) a variable to inhibit confirmation by `kill-matching-buffers'. > Option (1) never came up.. it was only suggested that the user define a new command in their config. I don't even think that Emacs needs commands `kill-matching-buffers' and > `kill-some-buffers' at all, for that matter. > There have been multiple occasions when something in Emacs core I thought being of not use to me suddenly becomes useful. Even I don't find kill-matching-buffers useful (at the moment), but the OP does. I just use ibuffer to batch kill stuff if needed by matching not just buffer names, but even paths, project root dirs, modes, etc. -- Kaushal Modi [-- Attachment #2: Type: text/html, Size: 3779 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-23 12:51 ` Kaushal Modi @ 2017-05-23 13:03 ` Stefan Monnier 2017-05-23 13:18 ` Kaushal Modi 0 siblings, 1 reply; 17+ messages in thread From: Stefan Monnier @ 2017-05-23 13:03 UTC (permalink / raw) To: emacs-devel >> The suggestions to wrap `kill-matching-buffers' with `cl-letf' or `flet' >> are overkill - misguided, IMHO. > Using cl-letf is one of the valid ways. I wouldn't call it an > overkill. It instead precisely does what the OP needed without have > to rewrite the whole function in the user's config. No, not "precisely". It does more than you want. E.g. it will also affect other threads which could be running at the same time, or any other piece of code that might run during this dynamic scope (e.g. while debugging this code). It's good we can use such a workaround when there's no other solution, but let's not design things in a way that requires the use of such hacks. Stefan ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-23 13:03 ` Stefan Monnier @ 2017-05-23 13:18 ` Kaushal Modi 2017-05-24 1:50 ` zhanghj 0 siblings, 1 reply; 17+ messages in thread From: Kaushal Modi @ 2017-05-23 13:18 UTC (permalink / raw) To: Stefan Monnier, emacs-devel [-- Attachment #1: Type: text/plain, Size: 1013 bytes --] On Tue, May 23, 2017 at 9:03 AM Stefan Monnier <monnier@iro.umontreal.ca> wrote: > >> The suggestions to wrap `kill-matching-buffers' with `cl-letf' or `flet' > >> are overkill - misguided, IMHO. > > Using cl-letf is one of the valid ways. I wouldn't call it an > > overkill. It instead precisely does what the OP needed without have > > to rewrite the whole function in the user's config. > > No, not "precisely". It does more than you want. E.g. it will also > affect other threads which could be running at the same time, or any > other piece of code that might run during this dynamic scope (e.g. while > debugging this code). > TIL. Thanks. > It's good we can use such a workaround when there's no other solution, > but let's not design things in a way that requires the use of such hacks. I agree. The OP hasn't weighed in yet. But if it needs to be fixed, OP should file a bug report requesting that. Else, he can simply redefine the function in the config as Drew suggested. -- Kaushal Modi [-- Attachment #2: Type: text/html, Size: 1835 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: kill-matching-buffers without confirmation 2017-05-23 13:18 ` Kaushal Modi @ 2017-05-24 1:50 ` zhanghj 0 siblings, 0 replies; 17+ messages in thread From: zhanghj @ 2017-05-24 1:50 UTC (permalink / raw) To: Kaushal Modi; +Cc: netjune, Stefan Monnier, emacs-devel Kaushal Modi <kaushal.modi@gmail.com> writes: > On Tue, May 23, 2017 at 9:03 AM Stefan Monnier <monnier@iro.umontreal.ca> > wrote: > >> >> The suggestions to wrap `kill-matching-buffers' with `cl-letf' or `flet' >> >> are overkill - misguided, IMHO. >> > Using cl-letf is one of the valid ways. I wouldn't call it an >> > overkill. It instead precisely does what the OP needed without have >> > to rewrite the whole function in the user's config. >> >> No, not "precisely". It does more than you want. E.g. it will also >> affect other threads which could be running at the same time, or any >> other piece of code that might run during this dynamic scope (e.g. while >> debugging this code). >> > > TIL. Thanks. > > >> It's good we can use such a workaround when there's no other solution, >> but let's not design things in a way that requires the use of such hacks. > > > I agree. > > The OP hasn't weighed in yet. But if it needs to be fixed, OP should file a > bug report requesting that. > > Else, he can simply redefine the function in the config as Drew suggested. What about a command like this: (defun kill-matching-buffers (donot-ask) (interactive "P") (...)) ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2017-05-24 1:50 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <537757403.6158992.1495470490914.ref@mail.yahoo.com> 2017-05-22 16:28 ` kill-matching-buffers without confirmation R. Diez 2017-05-22 18:21 ` Kaushal Modi 2017-05-22 18:34 ` Clément Pit-Claudel 2017-05-22 18:42 ` Kaushal Modi 2017-05-22 18:45 ` Clément Pit-Claudel 2017-05-22 19:00 ` Kaushal Modi 2017-05-22 19:13 ` Clément Pit-Claudel 2017-05-22 19:20 ` Kaushal Modi 2017-05-22 19:34 ` Stefan Monnier 2017-05-22 22:21 ` Drew Adams 2017-05-23 5:28 ` Yuri Khan 2017-05-23 6:28 ` R. Diez 2017-05-23 20:34 ` Drew Adams 2017-05-23 12:51 ` Kaushal Modi 2017-05-23 13:03 ` Stefan Monnier 2017-05-23 13:18 ` Kaushal Modi 2017-05-24 1:50 ` zhanghj
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).