I am using Mac OS and emacs -nw
(the terminal mode).
I don't know how can I paste things (having been implemented by M-w in emacs -nw) outside the emacs.
I know that the emacs -ns
can do it.
Searching the internet and the command C-h b, i find out that method, but it didn't work out.
(setq x-select-enable-clipboard t)
(setq interprogram-cut-function 'x-select-text)
I don't know much about the argument of interprogram-cut-function. Where does the x-select-text come from and what does it mean?
If you are using Ubuntu 12.04 or Fedora 21, there are a couple of options to make this work.
First you need to install xclip
First Option: For Emacs 24
If you are using emacs24 you can install from the list of packages
Select
In your .emacs add:
Second Option. For emacs before version 24
Install xclip.el: Integrating Emacs with the X11 Clipboard in Linux
Third Option. Using @Nicholas Riley code shown in the answer
To use the code in the answer you need pbcopy / pbpaste in Ubuntu (command line clipboard)
If you want a way to place the contents of the emacs region onto the clipboard only sometimes, as opposed to every time you do an emacs yank (which causes the clipboard contents the be overwitten all the time), you should check this answer to a related question:
https://stackoverflow.com/a/19625063/3363328
I found that it solved my problem much better than setting xclip mode.
x-select-text
is only used if you're running Emacs in a GUI. (Emacs maps the Mac/Windows pasteboard/clipboard APIs to the X11 model, hence the name). You can always useC-h f
to find out more about a function like this one and view its definition if it's written in elisp.On the Mac, there is no concept of
CLIPBOARD
versusPRIMARY
selections, so there is no point in settingx-select-enable-clipboard
.The whole point of running
emacs -nw
is that it doesn't interact with the windowing system. Why use Emacs in a terminal when there are plenty of graphical Emacsen that work very nicely on the Mac?That said, if you really wanted to hook up terminal Emacs to the Mac pasteboard, you could do something like this: