Emacs Dired: Retain lines instead of dired-do-kill-lines? - emacs

You can easily kill marked lines in Emacs Dired by typing in k or running the command dired-do-kill-lines. Is it also possible to retain the marked files and kill the rest?

Just toggle your selection first (t).

Related

Emacs multiple-cursor - Cut and yank in multiple lines

Using the 'multiple-cursor' emacs package,
when I mark a word and cut ('C-w') in different multiple cursors, the only word in the 'active' cursor I control is cut.
I want to select different words in multiple positions and yank it to other relative position.
When I first tried this I remember some yes or no option at the screen bottom, but I couldn't really notice this at first and some keystroke made it to "no". I guess this might have been an option for multiple-cut. But I don't know how to revert this choice.
How do you do multiple cut and yank in emacs?
This works by default, so at some point you have indeed asked the library not do do this.
These settings are stored (by default) in ~/.emacs.d/.mc-lists.el
Just edit that file appropriately, and then M-x eval-buffer RET to make those same changes in the running instance.

Emacsclient keep buffers after closing

In emacsclient, is there a way to open a file from the command line such that its buffer will remain open on the server after I close the client?
Alternatively, is there a command I can run from in a client to tell it to effectively detach from a buffer, so that the buffer does not get killed when the client exits?
Normally when closing emacsclient either with C-x C-c or C-x #, the buffer(s) associated with that client get killed, which is usually convenient behavior, but sometimes I would like for buffers to stay alive after closing. So far the only way I have found to accomplish this is to run the client without specifying any files, then visit them with C-x C-f, but I'm wondering if there's a better way to do this.
You should be able to do this by using the -n option. That means that it won't wait for you to "finish" the buffer and it'll just stay in the buffer list. I use this with emacsclient myself.
So, one option is to use emacsclient's eval command line option to run a lisp command to find the file you want.
emacsclient -c -e '(find-file "my_file")'
Obviously this is a lot more to type than the command sequence emacsclient -c, C-x C-f, my_file, but it could pretty easily be wrapped in a script that takes an extra argument to tell it whether to just choose the file or use find-file.
Someone more well versed in elisp than I could probably just add the option directly into emacs.
According the info manual, if you never want to kill emacsclient buffers, when you're done with them, you can customise the server-kill-new-buffers variable (more information at C-h v server-kill-new-buffers).
For you use-case, depending on how often you want the buffers killed or not, you could set the above variable to nil and then manually kill the buffers that you do want killed.

Navigate through the kill ring in emacs

Consider the following situation:
N items in the kill ring. The desired item needed to be yanked is item #k
A numerical argument solution won't really do since counting or keeping track of the position of things in the kill ring is annoying.
Try the browse-kill-ring+.el script or the other solutions on EmacsWiki.
What is the actual question? What's wrong with pressing C-y and then M-y k-times?
Use Icicles with key C-- C-y, that is, a negative prefix arg to C-y. That completes against the entries in the kill-ring, letting you choose yanks (kills) to insert. It is a multi-command, which means that you can yank as many candidates, as many times as you like, with a single C-- C-y.
While completing against the kill-ring you can also clean up the ring selectively, deleting entries on the fly. And you can sort the completions (the possible yanks) in various ways. And you can type multiple patterns that the completion candidates need to match, in arbitrary match order (progressive completion).

consecutive copying of text fragments in emacs

I want as I search backwards in the document to do copying (M-x) and then return to the saved mark after a few copying commands and paste the things I copied. What ways are there to do this?
Best,
Do you mean you want to paste all of the things you copied in a single go?
One way is to do the first copy via M-w (aka M-x kill-ring-save), and the subsequent copies using C_M-w M-w. You can read about that in the docs here.
If you want to paste the chunks you copied individually, you can cycle through the pastes by doing C-y M-y M-y ..., where each successive M-y replaces the previous yank with the prior entry in the kill ring.
One nice mode for choosing which element from the kill ring to paste is the BrowseKillRing package.
Not too sure what you're asking, but it sounds like you want random (i.e., direct) access to any entry in the kill ring.
In Icicles you can see all of your kill-ring, filter it dynamically to see only some of it, and yank any entries from it using completion. By default, C-y is bound in Icicle mode to icicle-yank-maybe-completing.
That's the same as yank, unless you give it a negative prefix arg (e.g., C--). In that case, it lets you complete against the kill-ring. Completion can be prefix, apropos (substring, regexp), or fuzzy.
http://www.emacswiki.org/emacs/Icicles_-_Multi-Commands

How do I stop Emacs from changing my split buffers?

I have a number of splits open, looking at various buffers. But when I for example check the help on a function it will replace one of the splits with the help buffer. Once I'm done reading the help I have to go back to the correct buffer manually which is a pain. How do I get Emacs to be nicer to my buffers?
Update: Help will let you press q to go back to the previous buffer. But causing the Emacs backtrace to pop up also steals one of my buffer windows and it doesn't have a q.
Update: Backtrace DOES have q to go back. My original question still remains: how do I ask Emacs not to steal one of my splits?
Adding the line(push "*Help*" special-display-buffer-names) to the init file should make subsequent invocations of the help buffer to appear in its own frame(what the desktop usually calls "window"), and leave the original frame with its configuration alone.
See Special Buffer Frames.
You could also use winner-mode. It came up on planet.emacsen.org a while back.
Winner Mode is a global minor mode. When activated, it allows to “undo” (and “redo”) changes in the window configuration with the key commands ‘C-c left’ and ‘C-c right’.
That way you can undo any changes to your splits immediately after they happen.
I hope this will help you :
C-x 0 to remove the current window
C-x 1 to keep only the current window
you can use windmove by adding the following line in your .emacs :
(windmove-default-keybindings)
Then, you can move the point between windows using S-right S-left S-up and S-down
There are lots of ways to store and restore emacs windows, see emacswiki.org on the subject.
What I do is just go to that changed buffer, C-x k it, and the current buffer in that window will be the previous buffer.
It may be possible to define advice for the help that saves the current window and buffer state and restores it with a simple keybind. But this is outside my basic elisp knowledge.