개요

리포지토리 중심의 Denote Silo 자동 관리 시스템입니다.

핵심 기능

  1. 자동 발견: ~/repos/gh/*/docs 디렉토리 자동 인식
  2. 심볼릭 링크 지원: 실제 경로로 resolve
  3. 동적 업데이트: 새 프로젝트 추가 시 자동 인식
  4. 통합 검색: 모든 Silo에서 파일 검색

파일 구조

~/sync/emacs/doomemacs-config/
├── +denote-silo-dynamic.el    # 핵심 구현
├── config.el                   # 로드 설정
└── +keybindings.el            # 키바인딩

설정된 Silo 목록

기본 Silo (고정)

  • ~/claude-memory : AI 메모리 시스템
  • ~/org : 지식베이스
  • ~/org/llmlog : LLM 대화 기록

동적 Silo (자동 발견)

  • ~/repos/gh/GLG-Mono/docs : 폰트 프로젝트
  • ~/repos/gh/hawaii-trip-2025/docs : 여행 계획

사용 방법

키바인딩 (SPC n 접두어)

함수설명
nconsult-notes전체 노트 검색
Gconsult-notes-search전체 노트 grep 검색
sdenote-silo-open-or-createSilo 선택 후 파일 열기
Sdenote-silo-select-commandSilo 선택 후 명령 실행
M-ldenote-silo-list-all모든 Silo 목록 표시
M-rdenote-silo-refreshSilo 목록 새로고침
M-Fdenote-silo-find-file-all모든 Silo에서 파일 찾기
M-cdenote-silo-count-files전체 파일 개수 확인

워크플로우 예시

1. 전체 Silo 확인

M-x denote-silo-list-all

출력 예시:

=== Registered Denote Silos ===
 
Total: 5 directories
 
• claude-memory
  Path: ~/claude-memory/
  Files: 25
 
• org
  Path: ~/org/
  Files: 120
 
• llmlog
  Path: ~/org/llmlog/
  Files: 15
 
• docs (GLG-Mono)
  Path: ~/repos/gh/GLG-Mono/docs/
  Files: 7
 
• docs (hawaii-trip-2025)
  Path: ~/repos/gh/hawaii-trip-2025/docs/
  Files: 0

2. 특정 프로젝트 문서 찾기

SPC n s  ; denote-silo-open-or-create
;; → "GLG-Mono/docs" 선택
;; → 파일 검색 또는 생성

3. 전체 Silo에서 파일 검색

SPC n F  ; denote-silo-find-file-all
;; → 모든 Silo의 파일 목록 표시

4. 새 프로젝트 추가 후 갱신

# 새 프로젝트 생성
mkdir -p ~/repos/gh/new-project/docs
 
# Emacs에서 갱신
SPC n R  ; denote-silo-refresh

기술적 세부사항

자동 발견 알고리즘

(defun denote-silo-discover-repo-docs ()
  "~/repos/gh/*/docs 자동 발견."
  (let ((valid-silos '()))
    (dolist (repos-root denote-silo-repos-roots)
      (dolist (repo-dir (directory-files repos-root t "^[^.]"))
        (let* ((real-repo-dir (file-truename repo-dir))  ; 심볼릭 링크 resolve
               (docs-path (expand-file-name "docs" real-repo-dir)))
          (when (file-directory-p docs-path)
            (push docs-path valid-silos)))))
    (nreverse valid-silos)))

커스터마이징

다른 리포지토리 루트 추가

;; config.el에 추가
(after! denote-silo
  (setq denote-silo-repos-roots
        '("~/repos/gh"
          "~/repos/work"    ; 회사 프로젝트
          "~/repos/3rd")))  ; 외부 오픈소스

기본 Silo 수정

(setq denote-silo-base-directories
      '("~/claude-memory"
        "~/org"
        "~/documents/notes"))

장점

  1. 자동화: 수동 등록 불필요
  2. 확장성: 새 프로젝트 자동 인식
  3. 통합성: 기존 denote-silo + consult-notes 완벽 통합
  4. 유연성: 심볼릭 링크 지원으로 실제 경로 위치 자유

문제 해결

Silo가 인식되지 않을 때

  1. 디렉토리 구조 확인:

    ls -la ~/repos/gh/*/docs
  2. Silo 목록 수동 갱신:

    M-x denote-silo-refresh
  3. 현재 등록된 Silo 확인:

    M-x denote-silo-list-all

심볼릭 링크 문제

심볼릭 링크는 자동으로 실제 경로로 변환됩니다:

# 심볼릭 링크 생성
ln -s /path/to/real/project ~/repos/gh/project-link
 
# Emacs는 실제 경로를 사용
# /path/to/real/project/docs → 자동 인식

향후 계획

  • denote-silo-grep-all 함수 개선 (ripgrep 통합)
  • Silo 통계 대시보드 추가
  • 프로젝트별 태그 자동 추천
  • Git 연동 (최근 커밋 정보 표시)

참고 링크

관련 문서

  • +denote-silo-dynamic.el:1 : 핵심 구현
  • config.el:63 : 로드 설정
  • +keybindings.el:88 : 키바인딩 정의