History

  • [2025-07-12 Sat 13:00] 저널에서 문제 생겨서 아래에 안보이게 하는 방법 적용함
  • [2025-03-09 Sun 14:21] 아 귀찮아 이 녀석

관련노트

로그

2025-03-09 W09

@user how to fix it below. reply in korean.

if: Tab width in Org files must be 8, not 4. Please adjust your ‘tab-width’ settings for Org mode

@assistant Org 파일에서 탭 너비가 4가 아닌 8이어야 한다는 오류가 발생한 경우, Emacs의 Org 모드에서 tab-width 설정을 8로 조정해야 합니다. 이를 위해 다음 명령어를 사용할 수 있습니다:

(setq-local tab-width 8)

이 명령어를 실행하면 현재 버퍼의 =tab-width=가 8로 설정됩니다. Org 모드에서 일관성을 유지하려면 이 설정을 사용하는 것이 좋습니다[2][4].

만약 Org 모드 전체에 대해 이 설정을 기본값으로 하려면, Emacs의 초기화 파일(init.el 또는 .emacs)에 다음 코드를 추가할 수 있습니다:

(add-hook 'org-mode-hook (lambda () (setq-local tab-width 8)))

이렇게 하면 Org 모드를 활성화할 때마다 =tab-width=가 자동으로 8로 설정됩니다.

|2025-07-12 Sat 10:50|

@user 왜 아래과 같은 문제가 발생하는 지 모르겠어.

⛔ Warning (emacs): Tab width in Org files must be 8, not 8.  Setting back to 8.  Please adjust your ‘tab-width’ settings for Org mode

@assistant 이 경고는 실제로 =tab-width=가 이미 8로 설정되어 있는데도, Emacs가 계속해서 “탭 너비는 8이어야 한다”는 경고를 반복적으로 출력하는 현상입니다. 주요 원인은 다음과 같습니다:

  1. 여러 곳에서 tab-width를 반복 설정 여러 패키지나 hook에서 =tab-width=를 중복해서 설정할 때, Org 모드 내부 로직이나 외부 패키지가 tab-width를 감시하면서 계속 경고를 띄울 수 있습니다.

  2. 외부 패키지(예: org-journal)에서 tab-width를 강제로 조정 어떤 패키지가 tab-width를 8로 바꾸고, 또 다른 곳에서 다시 바꿔버려 충돌이 발생할 수 있습니다.

  3. 설정 순서 문제 org-mode-hook, org-journal-mode-hook 등 여러 hook이 서로 순서 없이 실행되면서 tab-width가 여러 번 바뀌는 경우가 있습니다.

해결 방법

  • 중복 설정이 있는지 (init.el 등에서) 확인하고, 한 곳에서만 tab-width를 설정하세요.
  • hook 설정이 여러 번 실행되지 않도록 확인하세요.
  • 필요하다면, 아래처럼 한 번만 설정하는 것이 좋습니다.
(add-hook 'org-mode-hook (lambda () (setq-local tab-width 8)))

추가 팁 경고 메시지에 “Tab width in Org files must be 8, not 8”처럼 앞뒤가 똑같이 8로 나오는 경우, 이미 8로 맞춰져 있는데도 불필요하게 경고가 나오는 버그일 수도 있습니다. 이럴 땐 관련 패키지(특히 org-journal 등) 이슈 트래커를 확인해보세요.

필요하다면 경고 메시지를 무시하거나, 관련 패키지의 업데이트를 확인하세요.

@user 이러한 경고를 무시하도록 popup 룰을 설정하는 방법을 알려줘

@assistant 이러한 경고 메시지를 Emacs에서 팝업이나 echo area에 표시되지 않도록 무시하려면, 몇 가지 방법이 있습니다.

1. display-warning 무력화 (권장)

아래 코드를 =init.el=이나 config에 추가하면, 해당 경고 메시지가 표시되지 않습니다.

(defun my/org-tab-width-warning-filter (orig-fun type message &rest args)
  (unless (and (eq type 'emacs)
               (string-match-p "Tab width in Org files must be 8" message))
    (apply orig-fun type message args)))
(advice-add 'display-warning :around #'my/org-tab-width-warning-filter)

2. warning-minimum-level 조정

경고 전체 레벨을 높여서 표시 안 되게 할 수도 있지만, 다른 중요한 경고도 안 보일 수 있으니 권장하지 않습니다.

(setq warning-minimum-level :error)

3. popper 패키지 사용 시 룰 추가 예시

만약 popper 패키지를 쓴다면, 아래처럼 echo area가 아닌 별도 팝업으로 안 뜨게 룰을 추가할 수 있습니다.

(add-to-list 'popper-reference-buffers "Warnings")

하지만 이 방법은 경고 자체를 숨기진 않습니다.


요약: 가장 안전한 방법은 첫 번째 =advice-add=로 해당 경고만 골라 무시하는 것입니다.

@user 둠이맥스의 팝업룰을 사용 중이야. 다음과 같아. 여기에 추가해보는게 어떨까?

(set-popup-rules!
    '(
      ;; ("^\\*scratch*" :ignore t) ; for TEST
      ("^\\.doom.d/diary" :ignore t) ; for TEST
      ("^\\*Completions" :ignore t)
      ("*Org Preview LaTeX Output*" :ingnore t) ; 2025-01-24
      ("^\\*Local variables\\*$" :vslot -1 :slot 1 :size +popup-shrink-to-fit)
      ;; ("^\\*$?:[Cc]ompil$$?:ation\\|e-Log$\\|Messages$$" :vslot -2 :size 0.3 :autosave t :quit t :ttl nil) ; +default
      ("^\\*Compil$?:ation\\|e-Log$" :size 0.3 :ttl 0 :quit t)
      ("^\\*Messages\\*" :vslot -4 :side right :size 0.4 :quit t :ttl 0) ; jh
      ("^\\*$?:doom \\|Pp E$" ; transient buffers (no interaction required)
       :vslot -3 :size +popup-shrink-to-fit :autosave t :select ignore :quit t :ttl 0)
      ("^\\*doom:" :vslot -4 :size 0.35 :side right :autosave t :select t :modeline t :quit nil :ttl t) ; editing buffers (interaction required)
      ("^\\*doom:$?:v?term\\|e?shell$-popup" ; editing buffers (interaction required)
       :vslot -5 :size 0.35 :select t :modeline nil :quit nil :ttl nil)
      ("^\\*jupyter-repl.*?$\\*\\|<[[:digit:]]>$$" :vslot -5 :side right :size 0.35 :select t :modeline t :quit nil :ttl t) ; 2025-02-27 python
      ("^\\*$?:Wo$?Man " :vslot -6 :size 0.45 :select t :quit t :ttl 0)
      ("^\\*Calc" :vslot -7 :side bottom :size 0.4 :select t :quit nil :ttl 0)
      ("^\\*Customize" :slot 2 :side right :size 0.5 :select t :quit nil)
      ("^ \\*undo-tree\\*" :slot 2 :side left :size 20 :select t :quit t)
      ;; `help-mode', `helpful-mode'
      ("^\\*$[Hh]elp\\|Apropos$" :slot 2 :vslot -8 :size 0.42 :select t)
 
      ;; ("^\\*eww\\*"  ; `eww' (and used by dash docsets)
      ;;  :vslot -11 :size 0.35 :select t)
      ("^\\*xwidget" :vslot -11 :size 0.35 :select nil)
      ;; ("*Org Agenda(n)*" :size 0.5 :side left :select nil :quit nil :ttl 0)
      ("^\\*eww.*" :size 82 :side left :modeline t :select t :quit nil :ttl t) ; jh
 
      ;; =M-x eldoc-doc-buffer= 함수 호출로 표시하는 buffer 크기 조절
      ("^\\*eldoc for" :size 0.2 :vslot -1) ; "*eldoc*"
      ("*Ilist*" :size 40 :side left :modeline t :select nil :quit nil) ; imenu-list 45
      ;; ("^ ?\\*Treemacs" :slot 7 :size 45 :side left :modeline nil :select nil :quit nil)
      ;; ("^ ?\\*NeoTree" :slot 7 :size 45 :side left :modeline t :slect nil :quit nil)
 
      ;; ("^\\*gptel\\*" :size 84 :side right :modeline t :select t :quit nil :ttl t)
      ;; ("^\\*gptel-ask\\*" :size 80 :side right :modeline nil :select nil :quit nil)
      ;; ("^\\*gptel-quick\\*" :size 80 :side right :modeline nil :select nil :quit nil)
      ;; "*EKG Capture.*\\*" "*EKG Edit.*\\*"  "*[Ee][Kk][Gg] .*\\*"
      ;; ("*EKG Capture.*\\*" :slot 3 :side bottom :size 0.4 :select t :quit nil) ; jh
      ;; ("*EKG Edit.*\\*" :slot 3 :side bottom :size 0.4 :select t :quit nil) ; jh
      ("*Go-Translate*" :side bottom :size 0.4 :select t :quit t) ; jh
      ("\\`\\*evil-owl\\*\\'" :side bottom :ttl t :height 20 :quit t)
      ;; ("\\*Embark Actions\\*" :side bottom :ttl t :height 20 :quit t) ; mixed
      ;; ("^\\*info\\*$" :slot 2 :vslot 2 :size 0.45 :select t))
      ("^\\*info\\*$"
       :slot 2
       :vslot 2
       :size 82
       :side left
       :modeline t
       :select t
       :ttl nil)) ;; `Info-mode' jh
    )

@assistant 네, Doom Emacs의 팝업 룰에 추가할 수 있습니다. 경고 메시지는 보통 *Warnings/ 버퍼에 출력되므로, 해당 버퍼를 무시(= :ignore t =)하도록 아래와 같이 추가하면 됩니다.

(set-popup-rules!
 '(
   ;; ... 기존 룰 ...
   ("^\\*Warnings\\*$" :ignore t) ; 경고 팝업 무시
   ;; ... 나머지 룰 ...
 ))

이렇게 하면 *Warnings/ 버퍼가 팝업으로 뜨지 않습니다. 단, 경고 메시지가 완전히 사라지는 것은 아니고, echo area에는 표시될 수 있습니다. 만약 아예 경고 자체를 무시하고 싶다면, 앞서 안내한 advice 방법을 함께 적용하세요.

@user