Edit: Enquanto eu ainda estou aprendendo as cordas de Babel, eu li sobre os system-type
, emacs-version
e window-system
variáveis, que soa como eles contêm todas as informações que eu preciso para obter o comportamento que eu descrevi aqui. Na verdade, eu poderia apenas envolver o código específico do SO em condicionais quando necessário em blocos de código. Eu estou querendo saber se esta é a melhor maneira de fazer isso, no entanto.
Estou usando o Babel para escrever arquivos de configuração alfabéticos para o Emacs. Gostaria que meus arquivos de configuração funcionassem em todas as plataformas que uso com freqüência (basicamente várias distribuições Linux e Macs), e parte disso envolve configurações que dependem do sistema (por exemplo, a fonte padrão usada no meu Mac é diferente do que eu uso no Linux Mint).
Embora tenha certeza de ter visto maneiras de reconhecer se estou em um Mac usando elisp (e, portanto, poderia agrupar qualquer configuração específica do sistema em algum tipo de condicional com base nisso), estou me perguntando se Org / Babel tem alguma maneira de detectar o tipo de sistema em que estou, o que me permitiria escrever diferentes blocos de código para diferentes sistemas. Melhor ainda, isso também pode ser feito para diferentes versões do Emacs? Estou visualizando um código que se pareceria com o seguinte (com nomes de plataforma e cabeçalho sendo exemplos inventados)
#+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
O peixe grande para fritar é a plataforma, já que a versão do emacs e do emacsen que eu uso provavelmente pode ser inferida disso na maioria das situações. Devo mencionar que a plataforma pode ser mais grossa do que sugeri acima. (Eu realmente só preciso saber se estou em uma distribuição Linux, Windows ou Mac.) Além disso, se esses não são recursos internos, como eu iria criar cabeçalhos de bloco de código como esses?
Edit: Suponho que também pode ser mais provável que algo parecido com o seguinte.
#+BEGIN_SOURCE EMACS-LISP :os Linux :emacs GNU :emacs-version 24+
[Some configuration for Linux and GNU Emacs 24+]
#+END_SOURCE
Imagino que isso possa ser encontrado em algum lugar da documentação, se existir, mas não consegui encontrar uma lista abrangente de cabeçalhos para blocos de código. Obrigado por qualquer ajuda que você pode fornecer!