You cannot use emacsclient to connect to an Emacs instance running on a remote computer. This client-server concept is related to (local) processes, not network nodes. However, you can use various network technologies to log in to the remote computer, attach to an emacs server running there and display the emacsclient's screen locally. Depending on the ...
[NOTE] this answer was heavily edited to follow the updates of with-editor developments. Most comments likely won't make much sense anymore. There are some new comments which do make sense.
Magit contains a library named with-editor available at https://github.com/magit/with-editor which allows you
to use your local Emacs as an $EDITOR on remote machines ...
I'm using Ubuntu, so the location of the desktop file may be different but I think the contents should be similar.
$ cat ~/.local/share/applications/emacsclient.desktop
Name=GNU Emacs 24
Comment=View and edit files
Interestingly enough, there appears to be no built-in function to do that.
The following code works by inserting a unique marker on the buffer-undo-list at the beginning of a collapsible block, and removing all boundaries (nil elements) at the end of a block, then removing the marker. In case something goes wrong, the marker is of the form (apply identity ...
You might be able to use the server-switch-hook and raise the frame. Something like:
(add-hook 'server-switch-hook #'raise-frame)
If that leaves you without focus on the new frame you might try something like this instead:
(add-hook 'server-switch-hook (lambda () (select-frame-set-input-focus (selected-frame))))
If you are looking to have a shell command ...
I do this by starting an emacs daemon when I login. Where you put this command depends on your desktop manager. I use i3, which is configured to run a script on login that includes the following:
emacs --daemon &
With that, emacs is always running in the background, and I open a new client with emacsclient -c -n, bound to a convenient keybinding in the ...
Set VISUAL to emacsclient -c (or some other variation without -n).
The option -n causes emacsclient to return as soon as it's contacted the running Emacs instance to tell it to edit the file. The program calling the editor (here, zsh, but this applies equally to any other program that invokes $VISUAL) knows that you've finished editing because the program ...
Probably not what you asked for but assuming you have ssh setup with X-forwarding, you could start emacsclient on the server and forward it to remote DISPLAY. (Disclaimer: code typed directly into webform)
local> ssh server -f emacsclient -c --display=$DISPLAY
I'm guessing that you are not really looking for a way to "execute the hook only once". I'm guessing that you are looking for a way to execute that particular function only once, whenever the hook is run.
The conventional, and simple, answer to that question is for your function to remove itself from the hook, after carrying out the one-time action that ...
If "start emacs gui in a similar fashion" is hoping to create a gui frame backed by the same daemon, then
alias ec="emacsclient --create-frame"
will instantiate another emacs frame backed by the same daemon. --create-frame can also be abbreviated with -c. -t or -nw or --tty are requesting the default for emacsclient which is to open another frame in a tty ...
I am not so sure about the advice in the emacswiki page. What you want to do is to the following:
Launch an emacs client connected to the running emacs server.
If the emacs server is not running, start it, and then connect the emacs
Don't wait for the client to finish (if you're starting from a command line).
The command I use is
Your included option of -c is causing this. Per the man page,
-c, --create-frame create a new frame instead of trying to use the current Emacs frame.
Remove this option from your command and Emacs should refrain from creating a new frame (AKA Window).
Thunar implements Freedesktop's desktop entry specification, so a .desktop entry is the answer you are looking for. Try saving this to $XDG_DATA_HOME/applications/emacs.desktop or $HOME/.local/share/applications/emacs.desktop if you don't have that set.
I think one of the things unclear from the FAQ is the necessity that both server and client be resolveable from each other. You can see this thread from 2009. Eventually, back then I did get it to work, but now I do see the same as the OP. This is what I tried:
(setq server-name "sx-test" ; name of the server
Some third-party Windows package managers offer a straightforward installation of GNU Emacs on Windows 7+. Notes:
Chocolatey requires an administrative shell access, whereas Scoop does not and makes installation portable.
Both Chocolatey and Scoop install 64-bit Emacs on 64-bit host system.
Both Chocolatey and Scoop automatically create corresponding shims ...
This may be not what you want but just in case see if it can help you some way.
I usually work inside a virtual machine bootstrapped with Vagrant, I have my ~/.emacs.d directory synced between my machine (local) and the virtual machine (remote) putting the following in the Vagrantfile file:
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
Nothing in your function tells Emacs where to insert the text, you need to tell it where to go.
If you’d like Emacs to place this link in a buffer named BUFFER-NAME
(which you know will be open), you can use
The following code inserts the link wherever point happens to
currently be in a window displaying that buffer. If no window ...
Some packages managers provides two different Emacs, emacs and emacs-nox. The core is the same and behave in a very similar way. The nox version (no X means without X11 support) and should be installed on systems that don't provide a X Window System.
These nox versions are compiled without support of X11. The standalone version can be run in the terminal ...
This is explained in the manual here:
C-hig (emacs)emacsclient Options RET
The new graphical or text terminal frames created by the ‘-c’ or ‘-t’
options are considered “client frames”. Any new frame that you create
from a client frame is also considered a client frame. If you type ‘C-x
C-c’ (‘save-buffers-kill-terminal’) in a client frame, that ...
Make sure you are using the same version of emacs and emacsclient.
When my system emacsclient is used instead of my custom build emacs, I'm getting a similar error:
$ /usr/bin/emacsclient --version
$ /usr/bin/emacsclient .
/usr/bin/emacsclient: can't find socket; have you started the server?
To start the server in Emacs, type "M-x server-...
No, you don’t want to use -i because you’re not launching an interactive shell. That is, this shell will not be connected to a terminal that the user can type in. It is instead going to be connected to a pipe so that Emacs can read whatever it prints. Removing the -i option will prevent Bash from trying to use inappropriate ioctls on the stdout and stdin, ...
Check the manual for initial-buffer-choice
If non-nil, this variable is a string that specifies a file or directory for Emacs to display after starting up, instead of the startup screen. If its value is a function, Emacs calls that function which must return a buffer which is then displayed. If its value is t, Emacs displays the *scratch* buffer.
The web ...
It looks like you can run functions each time a new frame is created with after-make-frame-functions (see this question for a bit more information).
The code would look something like
(defun set-my-scrollbars (_)
(add-to-list 'after-make-frame-functions #'set-my-scrollbars)
(I only briefly tested it). The dummy argument is ...
emacsclient waits for emacs server. When you do server-edit, the server notifies emacsclient to terminate.
It all depends on what you are going to do. In chrome I use the 'edit with emacs' extension, which uses emacs server to edit fields like these. From emacs I must notify chrome that I am done by calling server-edit. It is only at that moment that the ...
Run this in terminal (copy-paste it, then press Enter):
cat - <<EOFEOF > ~/.local/share/applications/my_emacsclient.desktop
Exec=/usr/bin/emacsclient --alternate-editor="" %F
Then open your file-manager and change the default program for opening that file type(s) you desire, to ...
In addition to offby1's answer (which is what you were asking for) also take note of:
https://www.emacswiki.org/emacs/CategorySql which covers sql-mode and sql-interactive-mode in general.
https://www.emacswiki.org/emacs/SqlQueryBuffer which has some tips on linking a sql-mode buffer to a sql-interactive-mode buffer (which is the super-useful feature it ...
Emacs is a big, complicated program. It must know how to handle large text files, and to interact with users in a graphical user interface or in a text terminal. It can display graphics. On my machine, it loads 34 libraries just in order to start. The binary is 15 megabytes. Many people, myself included, only start emacs once in a rare while, and hardly ever ...
I really don't mind Emacs.app always running, but the fact that I couldn't close the window without accidentally killing the Emacs server was annoying. And even if you try really hard to kill the last frame, it still doesn't let you: "Attempt to delete the sole visible or iconified frame". ...So we cheat.
This solution just hides Emacs (like ...