Claude-skill-registry emacs-navigation
Use when navigating files and positions in Emacs - provides elisp patterns for finding files, searching, and position management
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/emacs-navigation" ~/.claude/skills/majiayu000-claude-skill-registry-emacs-navigation && rm -rf "$T"
manifest:
skills/data/emacs-navigation/SKILL.mdsource content
Emacs Navigation Skill
Display Guidelines
E-ink Monitor Compatibility: User uses an e-ink monitor that only supports black, white, and grey.
- NEVER use colors (
,:foreground "red"
, etc.):foreground "cyan" - Use
,:weight bold
,:weight light
,:slant italic
for differentiation:underline t - Standard Emacs faces (font-lock-*-face) are acceptable as they adapt to themes
File Navigation
Open file
(find-file "/path/to/file") (find-file-noselect "/path/to/file") ; open without switching
Find file in project
(project-find-file) ; interactive (project-root (project-current)) ; get project root
Recent files
recentf-list ; list of recent files (recentf-open-files) ; interactive
Position Navigation
Line navigation
(goto-line 42) (forward-line n) ; move n lines (negative goes backward) (beginning-of-line) (end-of-line)
Character navigation
(goto-char position) (forward-char n) (backward-char n)
Word navigation
(forward-word) (backward-word)
Search Navigation
Search forward
(search-forward "text" nil t) ; returns nil if not found (re-search-forward "regex" nil t)
Search backward
(search-backward "text" nil t) (re-search-backward "regex" nil t)
Search with bounds
(re-search-forward "pattern" limit-pos t) ; stop at limit-pos
Save/Restore Positions
save-excursion
(save-excursion (goto-char (point-min)) (search-forward "target") ;; point restored after body )
save-restriction
(save-restriction (narrow-to-region start end) ;; work with narrowed buffer ) ; narrowing restored
Markers
(point-marker) ; marker at current point (set-marker marker position) (marker-position marker) (goto-char marker)
Window Navigation
Switch windows
(other-window 1) ; next window (select-window window)
Find window
(get-buffer-window "*buffer*") (selected-window)
Split windows
(split-window-right) (split-window-below) (delete-window)
Match Data
After successful search
(re-search-forward "\\(group1\\).*\\(group2\\)") (match-string 1) ; first group (match-string 2) ; second group (match-beginning 0) ; start of full match (match-end 0) ; end of full match
Common Patterns
Find and process all matches
(save-excursion (goto-char (point-min)) (while (re-search-forward "pattern" nil t) ;; process each match (let ((matched (match-string 0))) ;; do something )))
Navigate to specific file and line
(let ((file "/path/to/file") (line 42)) (find-file file) (goto-char (point-min)) (forward-line (1- line))) ; lines are 1-indexed
Narrow to function/section
(save-restriction (org-narrow-to-subtree) ; or narrow-to-defun ;; work within narrowed region (point-min) ; now returns subtree start )
Visit file at point
(find-file-at-point) ; interactive (ffap-file-at-point) ; get filename at point
Directory Navigation
Default directory
default-directory ; current directory (cd "/new/path")
List directory
(directory-files "/path") (directory-files "/path" t "\\.el$") ; full paths, only .el files
Walk directory tree
(directory-files-recursively "/path" "\\.org$")