Bearbeiten: Während ich noch die Seile von Babel lerne, habe ich über die system-type
, emacs-version
und window-system
Variablen gelesen , die so klingen, als ob sie alle Informationen enthalten, die ich brauche, um das hier beschriebene Verhalten zu erhalten. Tatsächlich könnte ich OS-spezifischen Code bei Bedarf einfach in Codeblöcke einschließen. Ich frage mich jedoch, ob dies der beste Weg ist, dies zu tun.
Ich verwende Babel, um Konfigurationsdateien für Emacs zu schreiben. Ich möchte, dass meine Konfigurationsdateien auf allen Plattformen funktionieren, die ich häufig verwende (also im Grunde verschiedene Linux-Distributionen und Macs), und ein Teil davon beinhaltet Einstellungen, die vom System abhängen (z. B. die Standardschriftart, die ich auf meinem Mac verwende anders als die, die ich unter Linux Mint verwende).
Ich bin mir zwar sicher, dass ich Möglichkeiten gefunden habe, um zu erkennen, ob ich mit elisp auf einem Mac bin oder nicht (und daher systemspezifische Einstellungen in eine darauf basierende Bedingung einschließen könnte), aber ich frage mich, ob Org / Babel hat eine Möglichkeit, den Systemtyp zu erkennen, auf dem ich mich befinde, um verschiedene Codeblöcke für verschiedene Systeme zu schreiben. Besser noch, kann dies auch für verschiedene Versionen von Emacs durchgeführt werden? Ich stelle mir Code vor, der ungefähr so aussehen würde (wobei Plattform- und Headernamen erfundene Beispiele sind).
#+Platform: LinuxMint
#+Emacs: GNU Emacs
#+EmacsVersion: 24+
#+BEGIN_SOURCE EMACS-LISP
[Some configuration for Linux Mint and GNU Emacs 24+]
#+END_SOURCE
#+Platform: LinuxMint
#+Emacs: GNU Emacs
#+EmacsVersion: 22.1
#+BEGIN_SOURCE EMACS-LISP
[Some other configuration for Linux Mint and GNU Emacs 22.1]
#+END_SOURCE
#+Platform: Mac
#+Emacs: Aquamacs
#+EmacsVersion: 24+
#+BEGIN_SOURCE EMACS-LISP
[Some other configuration for Mac and Emacs 24+]
#+END_SOURCE
Der große Fisch zum Braten ist die Plattform, da die Version von Emacs und das von mir verwendete Emacsen wahrscheinlich in den meisten Situationen daraus abgeleitet werden können. Ich sollte erwähnen, dass die Plattform gröber sein könnte als das, was ich oben vorschlage. (Ich muss wirklich nur wissen, ob ich eine Linux-, Windows- oder Mac-Distribution verwende.) Wenn diese Funktionen nicht integriert sind, wie würde ich dann Codeblock-Header wie diese erstellen?
Bearbeiten: Ich nehme an, es könnte auch wahrscheinlicher sein, dass es ungefähr so aussieht.
#+BEGIN_SOURCE EMACS-LISP :os Linux :emacs GNU :emacs-version 24+
[Some configuration for Linux and GNU Emacs 24+]
#+END_SOURCE
Ich stelle mir vor, dass dies irgendwo in der Dokumentation zu finden ist, wenn es existiert, aber ich konnte anscheinend keine umfassende Liste von Headern für Codeblöcke finden. Vielen Dank für jede Hilfe, die Sie leisten können!