branch: externals/org
commit f78a3c2bdcc9c88bcfb8a4aed7f7b4378534afac
Author: Jonathan Gregory <j...@autistici.org>
Commit: Ihor Radchenko <yanta...@posteo.net>

    lisp/ob-lilypond.el: Prevent full page results in basic-mode
    
    * ob-lilypond.el (org-babel-lilypond-paper-settings): New variable.
    * lisp/ob-lilypond.el (org-babel-lilypond-process-basic): Pass the new
    variable value to correctly set paper size on the generated transcript.
    
    Link: https://list.orgmode.org/87a5w15jur.fsf@localhost/
    
    TINYCHANGE
---
 lisp/ob-lilypond.el | 32 ++++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/lisp/ob-lilypond.el b/lisp/ob-lilypond.el
index a4fab00e04..8b2bd231fd 100644
--- a/lisp/ob-lilypond.el
+++ b/lisp/ob-lilypond.el
@@ -173,31 +173,51 @@ specific arguments to =org-babel-tangle=."
   (if (org-babel-tangle nil "yes" "lilypond")
       (org-babel-lilypond-execute-tangled-ly) nil))
 
+;; https://lilypond.org/doc/v2.24/Documentation/usage/other-programs
+(defvar org-babel-lilypond-paper-settings
+  "#(if (ly:get-option 'use-paper-size-for-page)
+            (begin (ly:set-option 'use-paper-size-for-page #f)
+                   (ly:set-option 'tall-page-formats '%s)))
+\\paper {
+  indent=0\\mm
+  tagline=\"\"
+  oddFooterMarkup=##f
+  oddHeaderMarkup=##f
+  bookTitleMarkup=##f
+  scoreTitleMarkup=##f
+}\n"
+  "The paper settings required to generate music fragments.
+They are needed for mixing music and text in basic-mode.")
+
 (defun org-babel-lilypond-process-basic (body params)
   "Execute a lilypond block in basic mode."
   (let* ((out-file (cdr (assq :file params)))
+         (file-type (file-name-extension out-file))
         (cmdline (or (cdr (assq :cmdline params))
                      ""))
         (in-file (org-babel-temp-file "lilypond-")))
 
     (with-temp-file in-file
-      (insert (org-babel-expand-body:generic body params)))
+      (insert
+       (format org-babel-lilypond-paper-settings file-type)
+       (org-babel-expand-body:generic body params)))
     (org-babel-eval
      (concat
       org-babel-lilypond-ly-command
       " -dbackend=eps "
       "-dno-gs-load-fonts "
       "-dinclude-eps-fonts "
-      (or (cdr (assoc (file-name-extension out-file)
-                     '(("pdf" . "--pdf ")
-                       ("ps" . "--ps ")
-                       ("png" . "--png "))))
+      (or (assoc-default file-type
+                         '(("pdf" . "--pdf ")
+                          ("eps" . "--eps ")))
          "--png ")
       "--output="
       (file-name-sans-extension out-file)
       " "
       cmdline
-      in-file) "")) nil)
+      in-file)
+     ""))
+  nil)
 
 (defun org-babel-prep-session:lilypond (_session _params)
   "Return an error because LilyPond exporter does not support sessions."

Reply via email to