43 lines
1.4 KiB
Markdown
43 lines
1.4 KiB
Markdown
---
|
|
name: emacsclient
|
|
description: 'Always use emacsclient instead of emacs. This applies to all Emacs operations: user requests, byte compilation, check-parens, running ERT tests, and any other elisp evaluation.'
|
|
tools: Bash
|
|
---
|
|
|
|
# Always use emacsclient
|
|
|
|
The user has an Emacs server running. **All** Emacs operations must go through `emacsclient`, never `emacs` or `emacs --batch`. This includes both user-requested actions and agent-initiated operations like byte compilation, syntax checking, or running tests.
|
|
|
|
## Examples
|
|
|
|
- Open a file: `emacsclient --no-wait "/path/to/file"`
|
|
- Evaluate elisp: `emacsclient --eval '(some-function)'`
|
|
- Open at a line: `emacsclient --no-wait +42 "/path/to/file"`
|
|
- Byte compile a file:
|
|
```sh
|
|
emacsclient --eval '
|
|
(byte-compile-file "/path/to/file.el")'
|
|
```
|
|
- Check parentheses:
|
|
```sh
|
|
emacsclient --eval '
|
|
(with-temp-buffer
|
|
(insert-file-contents "/path/to/file.el")
|
|
(check-parens))'
|
|
```
|
|
- Run ERT tests:
|
|
```sh
|
|
emacsclient --eval '
|
|
(progn
|
|
(load "/path/to/test-file.el" nil t)
|
|
(ert-run-tests-batch-and-exit "pattern"))'
|
|
```
|
|
|
|
## Rules
|
|
|
|
- Always use `emacsclient`, never `emacs` or `emacs --batch`.
|
|
- Use `--no-wait` when opening files so the command returns immediately.
|
|
- Use `--eval` when evaluating elisp.
|
|
- Always format `--eval` elisp across multiple lines with proper indentation.
|
|
- Run `emacsclient` commands via the Bash tool.
|