org 내보내기 디스패처를 수평 분할 화면에 표시
소개
Org mode
는 강력한 내보내기 기능을 구현합니다. 따라서 "Org로 쓰고 XX로 출력"이 매우 간단합니다. 게다가 내보내기 기능의 추가는 ox.el
의 프레임 워크에 맞추어 쉽게 실현할 수 있습니다.
예를 들어 pandoc을 사용하여 출력 기능을 통합하려면 ox-pandoc.el
를로드하면됩니다. (require 'ox-pandoc)
그러면 내보내기 디스패처 화면에 pandoc에서 출력 할 수있는 형식이 나열됩니다. 로드는 org-modules
에 추가하는 방법도 있습니다.
문제
확장 패키지를 읽는 것만으로, 새로운 출력 형식에 용이하게 대응 가능한 것은 훌륭합니다만, 편입을 반복해 가면, 디스패처가 세로 방향으로 길어져, 열람성이 저하합니다.
이전 pandoc이 좋은 예로 20 행 이상에 걸쳐 출력 형식이 나열됩니다.
나의 경우는 그 밖에도, 다양한 모듈을 짜넣고 있으므로, 100행에 육박하는 기세의 리스트가 구축됩니다. 따라서 세로 방향의 표시에 여유가 없어집니다.
(with-eval-after-load "ox"
(add-to-list 'org-modules 'ox-odt)
(add-to-list 'org-modules 'ox-org)
(add-to-list 'org-modules 'ox-json)
(require 'ox-twbs nil t)
(require 'ox-reveal nil t)
(require 'ox-hugo nil t)
(require 'ox-pandoc nil t)
(require 'ox-qmd nil t)
(require 'ox-gfm nil t))
해결
세로 방향으로 화면을 분할하여 디스패처를 표시하는 대신 가로 방향으로 화면 분할하도록 개선합니다. 다음은 debug-on-error
가 nil
의 상태 또는 org의 HEAD를 사용한다고 가정합니다.
(with-eval-after-load "ox"
(defvar my-org-export-before-hook nil)
(add-hook 'my-org-export-before-hook #'split-window-horizontally)
(defvar my-org-export-after-hook nil)
(add-hook 'my-org-export-after-hook #'delete-window)
(defun my-org-export--post-processing ()
(when (eq this-command 'org-export-dispatch)
(run-hooks 'my-org-export-after-hook))
(when this-command
(remove-hook 'post-command-hook #'my-org-export--post-processing)))
(defun my-org-export-dispatch (f ARG)
(cond (org-export-dispatch-use-expert-ui
(apply f ARG))
((> (frame-width) 160)
(when my-org-export-after-hook
(add-hook 'post-command-hook #'my-org-export--post-processing))
(run-hooks 'my-org-export-before-hook)
(apply f ARG))
(t
(apply f ARG))))
(advice-add 'org-export-dispatch :around #'my-org-export-dispatch)
(defun my-org-export-insert-default-template (f &optional backend subtreep)
(let ((this-command nil))
(apply f backend subtreep)))
(advice-add 'org-export-insert-default-template :around
#'my-org-export-insert-default-template))
이 설정을 포함하면 프레임의 가로 폭이 160을 초과 할 때 수평 분할로 디스패처를 표시하게됩니다.
my-org-export-before-hook
와 my-org-export-after-hook
에는 임의의 함수가 매달릴 수 있으므로 디스패처 표시 전후에 무언가를 처리하고 싶을 때 사용하십시오.
moom과 결합
나는 80자리 원리주의자이므로, 프레임의 가로폭이 160이라고 하는 폭넓게 사용하는 것이 거의 없습니다. 반대로 임기 응변으로 프레임 폭을 변경하고 싶기 때문에 졸작의 moom.el을 사용하고 있습니다. 다음은 디스패처를 호출 할 때만 프레임 폭을 넓혀 작업을 마치면 자동으로 되돌리는 설정입니다.
(with-eval-after-load "ox"
(defvar my-org-export-before-hook nil)
(add-hook 'my-org-export-before-hook #'moom-split-window)
(defvar my-org-export-after-hook nil)
(add-hook 'my-org-export-after-hook #'moom-delete-windows)
(defun my-org-export--post-processing ()
(when (eq this-command 'org-export-dispatch)
(run-hooks 'my-org-export-after-hook))
(when this-command
(remove-hook 'post-command-hook #'my-org-export--post-processing)))
(defun my-org-export-dispatch (f ARG)
(cond
(org-export-dispatch-use-expert-ui
(apply f ARG))
((eq (frame-width) 80)
(if (not (require 'moom nil t))
(apply f ARG)
(when my-org-export-after-hook
(add-hook 'post-command-hook #'my-org-export--post-processing))
(run-hooks 'my-org-export-before-hook)
(apply f ARG)))
(t
(apply f ARG))))
(advice-add 'org-export-dispatch :around #'my-org-export-dispatch)
(defun my-org-export-insert-default-template (f &optional backend subtreep)
(let ((this-command nil))
(apply f backend subtreep)))
(advice-add 'org-export-insert-default-template :around
#'my-org-export-insert-default-template))
이렇게하면 내보낼 때만 프레임이 퍼지고 디스패처를 표시합니다.
버퍼로 내보내기로 자동 복사
내보내기 옵션은 파일로 내보내는 것 외에도 버퍼에 내보내는 옵션을 제공 할 수 있습니다. org-export-show-temporary-export-buffer
가 t
이면 내보낸 버퍼가 팝업되어 표시되지만 복사까지는하지 않습니다.
다음과 같이 확장하면 약간 강력하지만 버퍼로 내 보낸 내용이 자동으로 복사됩니다. 적당한 버퍼로 양크하거나 환경에 따라서는 그대로 다른 앱으로 붙여넣을 수 있습니다. 이 기사의 my-org-export-after-hook
를 조속히 사용하고 있으므로, 상기의 설정에 추가하는 형태로 사용해 주세요.
(with-eval-after-load "ox"
(defvar my-org-export-last-buffer nil)
(defun my-org-export-to-buffer (_backend
buffer
&optional _async _subtreep _visible-only
_body-only _ext-plist _post-process)
(setq my-org-export-last-buffer buffer))
(advice-add 'org-export-to-buffer :after #'my-org-export-to-buffer)
(defun my-copy-exported-buffer ()
(interactive)
(when my-org-export-last-buffer
(with-current-buffer my-org-export-last-buffer
(mark-whole-buffer)
(kill-ring-save (point-min) (point-max))
(message "Copied: %s" my-org-export-last-buffer))
(setq my-org-export-last-buffer nil)))
(add-hook 'my-org-export-after-hook #'my-copy-exported-buffer))
요약
org 내보내기를 수평으로 분할하여 디스패처를 표시하는 방법을 보여줍니다. 수평 방향으로 분할하여 표시할 수 없습니까? 라는 아이디어는, EmacsJP의 slack 로 @conao3씨에게 받았습니다. 감사!
최근 릴리즈 된 최신 Org mode
버전 9.3에서는 소스 블록 편집 화면을 수평 분할 창에 표시하는 기능이 새로 구현되었습니다. 이쪽도 함께 시험해 주세요.
Reference
이 문제에 관하여(org 내보내기 디스패처를 수평 분할 화면에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takaxp/items/017ccc4655877b827551
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
확장 패키지를 읽는 것만으로, 새로운 출력 형식에 용이하게 대응 가능한 것은 훌륭합니다만, 편입을 반복해 가면, 디스패처가 세로 방향으로 길어져, 열람성이 저하합니다.
이전 pandoc이 좋은 예로 20 행 이상에 걸쳐 출력 형식이 나열됩니다.
나의 경우는 그 밖에도, 다양한 모듈을 짜넣고 있으므로, 100행에 육박하는 기세의 리스트가 구축됩니다. 따라서 세로 방향의 표시에 여유가 없어집니다.
(with-eval-after-load "ox"
(add-to-list 'org-modules 'ox-odt)
(add-to-list 'org-modules 'ox-org)
(add-to-list 'org-modules 'ox-json)
(require 'ox-twbs nil t)
(require 'ox-reveal nil t)
(require 'ox-hugo nil t)
(require 'ox-pandoc nil t)
(require 'ox-qmd nil t)
(require 'ox-gfm nil t))
해결
세로 방향으로 화면을 분할하여 디스패처를 표시하는 대신 가로 방향으로 화면 분할하도록 개선합니다. 다음은 debug-on-error
가 nil
의 상태 또는 org의 HEAD를 사용한다고 가정합니다.
(with-eval-after-load "ox"
(defvar my-org-export-before-hook nil)
(add-hook 'my-org-export-before-hook #'split-window-horizontally)
(defvar my-org-export-after-hook nil)
(add-hook 'my-org-export-after-hook #'delete-window)
(defun my-org-export--post-processing ()
(when (eq this-command 'org-export-dispatch)
(run-hooks 'my-org-export-after-hook))
(when this-command
(remove-hook 'post-command-hook #'my-org-export--post-processing)))
(defun my-org-export-dispatch (f ARG)
(cond (org-export-dispatch-use-expert-ui
(apply f ARG))
((> (frame-width) 160)
(when my-org-export-after-hook
(add-hook 'post-command-hook #'my-org-export--post-processing))
(run-hooks 'my-org-export-before-hook)
(apply f ARG))
(t
(apply f ARG))))
(advice-add 'org-export-dispatch :around #'my-org-export-dispatch)
(defun my-org-export-insert-default-template (f &optional backend subtreep)
(let ((this-command nil))
(apply f backend subtreep)))
(advice-add 'org-export-insert-default-template :around
#'my-org-export-insert-default-template))
이 설정을 포함하면 프레임의 가로 폭이 160을 초과 할 때 수평 분할로 디스패처를 표시하게됩니다.
my-org-export-before-hook
와 my-org-export-after-hook
에는 임의의 함수가 매달릴 수 있으므로 디스패처 표시 전후에 무언가를 처리하고 싶을 때 사용하십시오.
moom과 결합
나는 80자리 원리주의자이므로, 프레임의 가로폭이 160이라고 하는 폭넓게 사용하는 것이 거의 없습니다. 반대로 임기 응변으로 프레임 폭을 변경하고 싶기 때문에 졸작의 moom.el을 사용하고 있습니다. 다음은 디스패처를 호출 할 때만 프레임 폭을 넓혀 작업을 마치면 자동으로 되돌리는 설정입니다.
(with-eval-after-load "ox"
(defvar my-org-export-before-hook nil)
(add-hook 'my-org-export-before-hook #'moom-split-window)
(defvar my-org-export-after-hook nil)
(add-hook 'my-org-export-after-hook #'moom-delete-windows)
(defun my-org-export--post-processing ()
(when (eq this-command 'org-export-dispatch)
(run-hooks 'my-org-export-after-hook))
(when this-command
(remove-hook 'post-command-hook #'my-org-export--post-processing)))
(defun my-org-export-dispatch (f ARG)
(cond
(org-export-dispatch-use-expert-ui
(apply f ARG))
((eq (frame-width) 80)
(if (not (require 'moom nil t))
(apply f ARG)
(when my-org-export-after-hook
(add-hook 'post-command-hook #'my-org-export--post-processing))
(run-hooks 'my-org-export-before-hook)
(apply f ARG)))
(t
(apply f ARG))))
(advice-add 'org-export-dispatch :around #'my-org-export-dispatch)
(defun my-org-export-insert-default-template (f &optional backend subtreep)
(let ((this-command nil))
(apply f backend subtreep)))
(advice-add 'org-export-insert-default-template :around
#'my-org-export-insert-default-template))
이렇게하면 내보낼 때만 프레임이 퍼지고 디스패처를 표시합니다.
버퍼로 내보내기로 자동 복사
내보내기 옵션은 파일로 내보내는 것 외에도 버퍼에 내보내는 옵션을 제공 할 수 있습니다. org-export-show-temporary-export-buffer
가 t
이면 내보낸 버퍼가 팝업되어 표시되지만 복사까지는하지 않습니다.
다음과 같이 확장하면 약간 강력하지만 버퍼로 내 보낸 내용이 자동으로 복사됩니다. 적당한 버퍼로 양크하거나 환경에 따라서는 그대로 다른 앱으로 붙여넣을 수 있습니다. 이 기사의 my-org-export-after-hook
를 조속히 사용하고 있으므로, 상기의 설정에 추가하는 형태로 사용해 주세요.
(with-eval-after-load "ox"
(defvar my-org-export-last-buffer nil)
(defun my-org-export-to-buffer (_backend
buffer
&optional _async _subtreep _visible-only
_body-only _ext-plist _post-process)
(setq my-org-export-last-buffer buffer))
(advice-add 'org-export-to-buffer :after #'my-org-export-to-buffer)
(defun my-copy-exported-buffer ()
(interactive)
(when my-org-export-last-buffer
(with-current-buffer my-org-export-last-buffer
(mark-whole-buffer)
(kill-ring-save (point-min) (point-max))
(message "Copied: %s" my-org-export-last-buffer))
(setq my-org-export-last-buffer nil)))
(add-hook 'my-org-export-after-hook #'my-copy-exported-buffer))
요약
org 내보내기를 수평으로 분할하여 디스패처를 표시하는 방법을 보여줍니다. 수평 방향으로 분할하여 표시할 수 없습니까? 라는 아이디어는, EmacsJP의 slack 로 @conao3씨에게 받았습니다. 감사!
최근 릴리즈 된 최신 Org mode
버전 9.3에서는 소스 블록 편집 화면을 수평 분할 창에 표시하는 기능이 새로 구현되었습니다. 이쪽도 함께 시험해 주세요.
Reference
이 문제에 관하여(org 내보내기 디스패처를 수평 분할 화면에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takaxp/items/017ccc4655877b827551
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(with-eval-after-load "ox"
(defvar my-org-export-before-hook nil)
(add-hook 'my-org-export-before-hook #'split-window-horizontally)
(defvar my-org-export-after-hook nil)
(add-hook 'my-org-export-after-hook #'delete-window)
(defun my-org-export--post-processing ()
(when (eq this-command 'org-export-dispatch)
(run-hooks 'my-org-export-after-hook))
(when this-command
(remove-hook 'post-command-hook #'my-org-export--post-processing)))
(defun my-org-export-dispatch (f ARG)
(cond (org-export-dispatch-use-expert-ui
(apply f ARG))
((> (frame-width) 160)
(when my-org-export-after-hook
(add-hook 'post-command-hook #'my-org-export--post-processing))
(run-hooks 'my-org-export-before-hook)
(apply f ARG))
(t
(apply f ARG))))
(advice-add 'org-export-dispatch :around #'my-org-export-dispatch)
(defun my-org-export-insert-default-template (f &optional backend subtreep)
(let ((this-command nil))
(apply f backend subtreep)))
(advice-add 'org-export-insert-default-template :around
#'my-org-export-insert-default-template))
나는 80자리 원리주의자이므로, 프레임의 가로폭이 160이라고 하는 폭넓게 사용하는 것이 거의 없습니다. 반대로 임기 응변으로 프레임 폭을 변경하고 싶기 때문에 졸작의 moom.el을 사용하고 있습니다. 다음은 디스패처를 호출 할 때만 프레임 폭을 넓혀 작업을 마치면 자동으로 되돌리는 설정입니다.
(with-eval-after-load "ox"
(defvar my-org-export-before-hook nil)
(add-hook 'my-org-export-before-hook #'moom-split-window)
(defvar my-org-export-after-hook nil)
(add-hook 'my-org-export-after-hook #'moom-delete-windows)
(defun my-org-export--post-processing ()
(when (eq this-command 'org-export-dispatch)
(run-hooks 'my-org-export-after-hook))
(when this-command
(remove-hook 'post-command-hook #'my-org-export--post-processing)))
(defun my-org-export-dispatch (f ARG)
(cond
(org-export-dispatch-use-expert-ui
(apply f ARG))
((eq (frame-width) 80)
(if (not (require 'moom nil t))
(apply f ARG)
(when my-org-export-after-hook
(add-hook 'post-command-hook #'my-org-export--post-processing))
(run-hooks 'my-org-export-before-hook)
(apply f ARG)))
(t
(apply f ARG))))
(advice-add 'org-export-dispatch :around #'my-org-export-dispatch)
(defun my-org-export-insert-default-template (f &optional backend subtreep)
(let ((this-command nil))
(apply f backend subtreep)))
(advice-add 'org-export-insert-default-template :around
#'my-org-export-insert-default-template))
이렇게하면 내보낼 때만 프레임이 퍼지고 디스패처를 표시합니다.
버퍼로 내보내기로 자동 복사
내보내기 옵션은 파일로 내보내는 것 외에도 버퍼에 내보내는 옵션을 제공 할 수 있습니다. org-export-show-temporary-export-buffer
가 t
이면 내보낸 버퍼가 팝업되어 표시되지만 복사까지는하지 않습니다.
다음과 같이 확장하면 약간 강력하지만 버퍼로 내 보낸 내용이 자동으로 복사됩니다. 적당한 버퍼로 양크하거나 환경에 따라서는 그대로 다른 앱으로 붙여넣을 수 있습니다. 이 기사의 my-org-export-after-hook
를 조속히 사용하고 있으므로, 상기의 설정에 추가하는 형태로 사용해 주세요.
(with-eval-after-load "ox"
(defvar my-org-export-last-buffer nil)
(defun my-org-export-to-buffer (_backend
buffer
&optional _async _subtreep _visible-only
_body-only _ext-plist _post-process)
(setq my-org-export-last-buffer buffer))
(advice-add 'org-export-to-buffer :after #'my-org-export-to-buffer)
(defun my-copy-exported-buffer ()
(interactive)
(when my-org-export-last-buffer
(with-current-buffer my-org-export-last-buffer
(mark-whole-buffer)
(kill-ring-save (point-min) (point-max))
(message "Copied: %s" my-org-export-last-buffer))
(setq my-org-export-last-buffer nil)))
(add-hook 'my-org-export-after-hook #'my-copy-exported-buffer))
요약
org 내보내기를 수평으로 분할하여 디스패처를 표시하는 방법을 보여줍니다. 수평 방향으로 분할하여 표시할 수 없습니까? 라는 아이디어는, EmacsJP의 slack 로 @conao3씨에게 받았습니다. 감사!
최근 릴리즈 된 최신 Org mode
버전 9.3에서는 소스 블록 편집 화면을 수평 분할 창에 표시하는 기능이 새로 구현되었습니다. 이쪽도 함께 시험해 주세요.
Reference
이 문제에 관하여(org 내보내기 디스패처를 수평 분할 화면에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takaxp/items/017ccc4655877b827551
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(with-eval-after-load "ox"
(defvar my-org-export-last-buffer nil)
(defun my-org-export-to-buffer (_backend
buffer
&optional _async _subtreep _visible-only
_body-only _ext-plist _post-process)
(setq my-org-export-last-buffer buffer))
(advice-add 'org-export-to-buffer :after #'my-org-export-to-buffer)
(defun my-copy-exported-buffer ()
(interactive)
(when my-org-export-last-buffer
(with-current-buffer my-org-export-last-buffer
(mark-whole-buffer)
(kill-ring-save (point-min) (point-max))
(message "Copied: %s" my-org-export-last-buffer))
(setq my-org-export-last-buffer nil)))
(add-hook 'my-org-export-after-hook #'my-copy-exported-buffer))
org 내보내기를 수평으로 분할하여 디스패처를 표시하는 방법을 보여줍니다. 수평 방향으로 분할하여 표시할 수 없습니까? 라는 아이디어는, EmacsJP의 slack 로 @conao3씨에게 받았습니다. 감사!
최근 릴리즈 된 최신
Org mode
버전 9.3에서는 소스 블록 편집 화면을 수평 분할 창에 표시하는 기능이 새로 구현되었습니다. 이쪽도 함께 시험해 주세요.
Reference
이 문제에 관하여(org 내보내기 디스패처를 수평 분할 화면에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takaxp/items/017ccc4655877b827551텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)