Chat wrote: > The Badger 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)? > > Copying the text, running (for example) query-replace, then pasting the text requires the following steps: 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.