src.nth.io/

summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2025-10-02 14:37:20 -0500
committerLuke Hoersten <[email protected]>2025-10-02 14:37:20 -0500
commit55d2fc1b3fe8e03fd6f5941017494534b374782a (patch)
tree7bc301dc3af197dfc7acecf7120f7f9b805c55d4 /README.md
Initial commit.
Diffstat (limited to 'README.md')
-rw-r--r--README.md174
1 files changed, 174 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1be2357
--- /dev/null
+++ b/README.md
@@ -0,0 +1,174 @@
+# claude-code-context.el
+
+Share your Emacs buffer context automatically with [Claude Code](https://github.com/anthropics/claude-code).
+
+## Features
+
+- **Automatic context sharing**: Automatically sends your current file, line number, column, and text selection to Claude Code
+- **Flymake integration**: Optionally include linter/diagnostic output in the context
+- **Idle-timer based**: Updates context only when Emacs is idle to avoid performance impact
+- **Simple keybindings**: Easy-to-use commands for manual control
+
+## Installation
+
+### From MELPA (coming soon)
+
+```elisp
+(use-package claude-code-context
+ :config
+ (claude-code-context-mode 1))
+```
+
+### Manual Installation
+
+1. Clone this repository:
+ ```bash
+ git clone https://github.com/lhoersten/claude-code-context.git
+ ```
+
+2. Add to your Emacs configuration:
+ ```elisp
+ (add-to-list 'load-path "/path/to/claude-code-context")
+ (require 'claude-code-context)
+ (claude-code-context-mode 1)
+ ```
+
+## Configuration
+
+### Emacs Setup
+
+Add to your `init.el`:
+
+```elisp
+(require 'claude-code-context)
+
+;; Enable automatic context updates
+(claude-code-context-mode 1)
+
+;; Optional: customize the update interval (default: 2 seconds)
+(setq claude-code-context-update-interval 3)
+
+;; Optional: customize the context file location
+(setq claude-code-context-file "~/.emacs.d/claude-context.txt")
+```
+
+### Claude Code Hook Setup
+
+Add this hook configuration to your `~/.claude/settings.json`:
+
+```json
+{
+ "hooks": {
+ "UserPromptSubmit": [
+ {
+ "hooks": [
+ {
+ "type": "command",
+ "command": "CONTEXT_FILE=\"$HOME/.emacs.d/claude-context.txt\"; if [ -f \"$CONTEXT_FILE\" ]; then echo \"\\n---\\n## Emacs Context\\n\"; cat \"$CONTEXT_FILE\"; echo \"\\n---\"; fi"
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+See [claude-code-hook-example.json](claude-code-hook-example.json) for a complete example.
+
+## Usage
+
+### Automatic Mode
+
+When `claude-code-context-mode` is enabled, your current buffer context is automatically written to `~/.emacs.d/claude-context.txt` every time Emacs is idle for the configured interval.
+
+### Manual Commands
+
+| Keybinding | Command | Description |
+|-------------|---------------------------------|------------------------------------------------|
+| `C-c C-l u` | `claude-code-update-context` | Manually update context |
+| `C-c C-l d` | `claude-code-add-diagnostics` | Add flymake diagnostics to context |
+| `C-c C-l c` | `claude-code-clear-context` | Clear the context file |
+| `C-c C-l m` | `claude-code-context-mode` | Toggle automatic context mode |
+
+### Workflow Example
+
+1. Open a file in Emacs
+2. Position your cursor where you want help
+3. Optionally select some code
+4. Use `C-c C-l d` to include any linter errors
+5. Switch to your terminal and ask Claude Code a question
+6. Claude Code will automatically see your Emacs context!
+
+## Context Format
+
+The context file includes:
+
+- **File**: Full path to the current buffer's file
+- **Line**: Current line number
+- **Column**: Current column number
+- **Selection**: Any highlighted text (if region is active)
+- **Diagnostics**: Flymake errors/warnings (when using `C-c C-l d`)
+
+Example context:
+
+```
+# Emacs Context for Claude Code
+# This file is automatically updated by Emacs
+
+File: /Users/username/project/src/main.py
+Line: 42, Column: 8
+Selection:
+```
+def process_data(items):
+ return [x * 2 for x in items]
+```
+
+Flymake Diagnostics:
+ 45 error e-f-b-c undefined variable 'result'
+ 52 warning e-f-b-c unused variable 'temp'
+```
+
+## Customization
+
+### Variables
+
+- `claude-code-context-file`: Location of the context file (default: `~/.emacs.d/claude-context.txt`)
+- `claude-code-context-update-interval`: Idle time in seconds before updating context (default: 2)
+
+### Custom Keybindings
+
+If you prefer different keybindings:
+
+```elisp
+(global-set-key (kbd "C-c u") 'claude-code-update-context)
+(global-set-key (kbd "C-c d") 'claude-code-add-diagnostics)
+```
+
+## How It Works
+
+1. **Emacs side**: This package writes your current buffer context to a file (`~/.emacs.d/claude-context.txt`)
+2. **Claude Code side**: A hook in Claude Code's settings reads this file before every prompt submission
+3. **Integration**: Claude Code automatically receives your Emacs context with each query
+
+## Troubleshooting
+
+**Context not appearing in Claude Code:**
+- Verify the hook is properly configured in `~/.claude/settings.json`
+- Check that the context file exists: `cat ~/.emacs.d/claude-context.txt`
+- Make sure `claude-code-context-mode` is enabled in Emacs
+
+**Performance issues:**
+- Increase `claude-code-context-update-interval` to reduce update frequency
+- Disable automatic mode and use manual commands only
+
+## Contributing
+
+Contributions are welcome! Please feel free to submit a Pull Request.
+
+## License
+
+GPL-3.0-or-later
+
+## Author
+
+Luke Hoersten <[email protected]>