|
From: | The Badger |
Subject: | Re: Insert word at point in minibuffer |
Date: | Mon, 18 Aug 2008 16:37:09 -0700 |
User-agent: | Thunderbird 2.0.0.16 (Windows/20080708) |
Chat wrote:
Copying the text, running (for example) query-replace, then pasting the text requires the following steps:The Badger <badgy@example.com> writes:Hi, I wanted to be able to insert the word at point into the minibuffer. This is useful when doing, for example, M-x query-replace on the word at point. You run the query-replace, hit a key to put the current word into the minibuffer, and go from there. Quite often I want to do this, so it saves time over typing the word in over and over. My solution is presented below. However, can this be done out of the box in Emacs? The less custom code I have to write, the better. God knows I have enough of that in Emacs already. (defun badger-minibuffer-yank-word () "Insert into the minibuffer the word at point in the selected window. If invoked outside of the minibuffer, throw an error. A good way to use this function is to bind it to a key in mini-buffer-local-map, like so: (define-key minibuffer-local-map (kbd \"C-w\") 'njs-buffer-yank) If point is not at a word, throw an error." (interactive) (insert (njs-call-in-buffer (lambda () (thing-at-point 'word)) (window-buffer (minibuffer-selected-window)))) (save-excursion (set-buffer (window-buffer (minibuffer-selected-window))) (thing-at-point 'word))) (define-key minibuffer-local-map (kbd "M-w") 'badger-minibuffer-yank-word)Isn't it simpler to copy the text you want while in the buffer and then invoke the command? Or even easier to use, write another function that calls query-replace (or whatever command you want to call)? C-M-SPC ;; mark-sexp M-w ;; kill-ring-save M-% ;; query-replace C-y ;; yank RET ;; newline Running the command, then hitting my custom M-w key, requires the following steps: M-% ;; query-replace M-C-w ;; badger-minibuffer-yank-sexp RET ;; newline So, there's 2 extra steps in there. Not a big deal, but I also tend to invoke query-replace before I select the query text. Perhaps that's because I think in English where the verb comes first in "replace dog with cat"? Also, regarding writing another function that calls query-replace; that's a good idea, but I'm happy with my solution so far. I guess I just want to be able to yank the word at point into the minibuffer - this is re-usable in many situations - rather than a cooler, more souped-up query-replace. |
[Prev in Thread] | Current Thread | [Next in Thread] |