syl20bnr / spacemacs

A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it's Emacs *and* Vim!
http://spacemacs.org
GNU General Public License v3.0
23.57k stars 4.9k forks source link

Minor improvement: option to disable query for whether to open newly saved file #16362

Open rommeswi opened 2 months ago

rommeswi commented 2 months ago

This is just a minor issue I have with saving copies of files since a while ago. I remember when first using spacemacs, I did not have this issue:

Whenever I save a buffer as a copy with SPC f c, spacemacs queries me whether I want to open the file. I have never not opened the new file. I understand that for some users who frequently create backups of files using SPC f c, not opening the newly saved file should be an option. What I would like to have is an option dotspacemacs-default-open-file-on-copy or something similar that I can set to "current", "other", or "nil" to avoid the extra query.

If this would be undesirable, feel free to directly reject the issue, it is really just a very minor annoyance.

rommeswi commented 2 months ago

Well, and something related that would be very intuitive to have is a default binding for creating a new buffer and saving it as a new file. SPC b n n and SPC f s should somehow be combined into SPC f n or something similar. Or is there a reason why this binding does not exist? For new users it would definitely be very natural.

bcc32 commented 2 months ago

default binding for creating a new buffer and saving it as a new file.

You can just use SPC f f to specify a file you want to create, write some contents, and then save as SPC f s (you'll have to press that at some point eventually to save whatever you write, so there's no way to do it in just one key binding).

rommeswi commented 2 months ago

Indeed, I totally missed that possibility. Thank you for improving my workflow! Regarding the SPC f c option of not querying for whether to open the file, it would still be a nice to have.

fnussbaum commented 2 months ago

I would not object to adding a user option. In any case, one could of course change the behaviour locally with something like:

(defun my/spacemacs/save-as (filename)
    (interactive (list (expand-file-name (read-file-name "Save buffer as: " nil nil nil
                                                         (when current-prefix-arg (buffer-name))))))
    (spacemacs/save-as filename :current))

(spacemacs/set-leader-keys "fc" 'my/spacemacs/save-as)

This is slightly inconvenient as there does not seem to be an idiomatic way to call a function using its interactive specification for some of its arguments, and using fixed values for the remaining ones. Hence I just copied the interactive specification[^1] of the first argument from spacemacs/save-as.

[^1]: As a side note, as an alternative to using a prefix argument, inserting the current file name can be done using the future history, i. e. by pressing M-n in the minibuffer prompt. Of course this uses the file name instead of the buffer name, which only makes sense for file-backed buffers. In the latter case, however, the behaviour might be preferable, for example when buffer names have been uniquified.