別のバッファへのorg-babelの結果


9

私はorg-babelを使用して、自動的に処理できないレポートをいくつか生成しています。orgは優れたアウトライン形式なので、結果をorgに出力して、ツリーとして表現します。

orgマークアップを#+begin_exampleブロックにネストすると、emacsが非常に遅くなることに気づきました(結果のフォーマットもオフになっています)。

エラーを処理するのと同じ方法で、特定のコードブロックの出力をバベルに別のバッファーに配置(そしてウィンドウも開く)させるのは本当に素晴らしいことです。

ドキュメントを確認しましたが、そのようなオプションはないようです。

私が間違っている?そうでない場合、おそらく誰かがそのようなスニペットを持っていますか?

また、速度が遅いのは私の構成の他のいくつかのオプションが原因である可能性がありますexample。たぶん私はここで間違った木の下で吠えています。

ありがとう


1
これらは巨大なレポートや複雑なレポートではないことを付け加えておきます。それは全体で数百のノードの下に数百行、2〜3レベルの深さです。私の実際の組織ファイルはかなり大きいです。削除すると#+begin_example、問題なく動作します
Roman Grazhdan

1
あまり問題なくこの新機能を作成できましたorg-modeが、常に進化しorg-babel-insert-resultており、すでにかなり長くなっており、この変更によりさらに長くなります。 ステップ1:単語のような新しい結果パラメーターを決定しseparateます。ソース・コード・ブロックのようなもの含めることができます:results output separate ステップ#2:ターンif/then条件を含むステートメント(and result-params (member "silent" result-params))新しいものがいると三つの条件に(and result-params (member "separate" result-params))新しいBUFとのセットを。
法律家2017

回答:


7

ドキュメントを確認しましたが、そのようなオプションはないようです。

驚くべきことに、オプションorgはありません:output buffer。たぶん、これは将来のorgバージョンの作業中です。

...特定のコードブロックの出力を別のバッファに配置します...

この機能をシミュレートする方法の1つは次のとおりです。1つのソースブロックの出力をstreamそれからaに取り込みますnew buffer

#+NAME: mycontent
#+BEGIN_SRC emacs-lisp :results value :results raw :exports results
(print "this content is streamed to a new buffer")
#+END_SRC

#+NAME: mystream
#+BEGIN_SRC emacs-lisp :var c=mycontent :results none
(prin1 c (generate-new-buffer "new"))
#+END_SRC

mycontentソースブロックはコンテンツをmystreamにフィードするため、mystreamsrcブロックのみを実行する必要があります。つまり、ブロックC-c C-cmystreamです。

srcブロックを使用C-c C-cしている場合mycontent、結果は同じバッファーに挿入されます。

mycontentemacsの-lispのSRCのブロックとして示され、これは任意の有効な組織SRCブロックすることができます。:results言語に基づいてオプションを調整する必要がある場合があります。

:results none以下のためのmystreamSRCブロックは、直感的ですが、新しいバッファにあなたのコンテンツを取得する魔法。


5

私は答えを受け入れたので、しばらくの間、「必要なレポートごとにelispスニペットを用意する」という設定で生活してきました。

しかし、私は次のトリックを思いついた:

そこであると別のバッファでオープンORG-バベルのoutpuptへの道はC-o- org-open-at-pointそのような空想です。問題は、結果ブロックが作成されることです。しかし、コマンドもありorg-babel-remove-resultます。2つを組み合わせて、ちょっと汚いハックをしました

(defun my-babel-to-buffer ()
  "A function to efficiently feed babel code block result to a separate buffer"
  (interactive)
  (org-open-at-point)
  (org-babel-remove-result)
)

(defun my-org-mode-config ()
  "To use with `org-mode-hook'"
  (local-set-key (kbd "C-`") 'my-babel-to-buffer)
)

(add-hook 'org-mode-hook 'my-org-mode-config)

そのように使用するコードブロックにはプロパティがあります :results output :format raw :exports results

ヒントとハウツーを含む私のファイルが大量の出力で乱雑にならず、バッファが再利用されます(これは私のワークフローに適しています)。


常にこの動作が必要な場合は、カスタムコマンドをフックとして使用できます(add-hook 'org-babel-after-execute-hook 'my-bable-to-buffer)))
グルカ

いいえ、場合によっては、人形の失敗などのレポートを入手することはできません。
ローマのグラジダン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.