References

2024-12-28

@user denote에서 내보내기 할 때, 동적 블록을 Evaluation해서 최신 변경을 반영하도록 변경하려면?

@assistant =denote=에서 동적 블록을 평가하여 최신 변경 사항을 반영하려면 다음 단계를 따르세요:

  1. 동적 블록 설정: 동적 블록을 설정할 때, =#+BEGIN: …=과 같은 블록을 사용하여 동적 블록을 정의합니다. 예를 들어:

  2. 동적 블록 함수 작성: 동적 블록을 평가하는 함수를 작성합니다. 예를 들어:

        (defun my-dynamic-block (params)
          (let ((result (some-function-to-generate-content)))
            (insert result)))
  3. 동적 블록 평가: 내보내기 전에 동적 블록을 평가하도록 설정합니다. 이를 위해 =org-export-before-processing-hook=를 사용할 수 있습니다:

        (add-hook 'org-export-before-processing-hook
                  (lambda (backend)
                    (org-update-all-dblocks)))
  4. 내보내기 설정: 내보내기 설정에서 동적 블록을 평가하도록 설정합니다. =org-export-with-broken-links=와 같은 변수를 조정하여 동적 블록이 평가되도록 할 수 있습니다:

        (setq org-export-with-broken-links 'mark)
  5. 내보내기: 이제 내보내기를 실행하면 동적 블록이 평가되고 최신 변경 사항이 반영됩니다.

이렇게 하면 =denote=에서 내보내기 시 동적 블록이 평가되어 최신 상태로 내보내집니다.

@user 특정 폴더의 dblock만 업데이트 하려고해. .dir-locals.el 파일에 추가할 수 있도록 샘플 만들어줘

@assistant 특정 폴더의 동적 블록만 업데이트하려면, 해당 폴더에 .dir-locals.el 파일을 생성하고 다음과 같은 설정을 추가할 수 있습니다:

((org-mode . ((eval . (progn
                         (add-hook 'org-export-before-processing-hook
                                   (lambda (backend)
                                     (org-update-all-dblocks)
                                     (org-update-dynamic-blocks 'force))
                                   nil t)
                         (setq-local org-export-with-broken-links 'mark)))
              (org-dynamic-blocks . t))))

이 설정은 다음과 같은 기능을 합니다:

  • =org-export-before-processing-hook=에 동적 블록을 강제로 업데이트하는 함수를 추가합니다.
  • =org-export-with-broken-links=를 =mark=로 설정하여 동적 블록이 평가되도록 합니다.
  • =org-dynamic-blocks=를 =t=로 설정하여 동적 블록을 활성화합니다.

이 설정을 해당 폴더에 넣으면, 그 폴더 내의 파일에서 내보내기를 실행할 때 동적 블록이 평가되고 최신 상태로 내보내집니다.

@user