org-mode
tiene la capacidad de representar el código fuente, con bloques de la siguiente sintaxis:
#+NAME: <name>
#+BEGIN_SRC <language> <switches> <header arguments>
<body>
#+END_SRC
¿Existe un comando existente para insertar rápidamente estos bloques org-mode
, o necesito usar una herramienta externa como yasnippet
?
hydra
paquete: blogpost (3) Otro fragmento para una fácil inserción del bloque fuente de la organización.Respuestas:
Como @kaushalmodi menciona en los comentarios que puede usar
(org) Easy Templates
para acelerar la inserción de diferentes tipos de bloques.El procedimiento general es insertar
<
seguido de un selector de plantilla (generalmente una sola letra) en una línea vacía y presionar TAB.El selector de plantilla para una plantilla de bloque fuente genérico es
s
, por lo que escribir<s
seguido TABle dará esto:El punto se colocará al final de la primera línea.
Esta es una buena primera aproximación de lo que quieres lograr, pero esto es Emacs, ¡así que hagámoslo mejor!
Puede definir plantillas personalizadas agregando una o más entradas a una variable llamada
org-structure-template-alist
. Por ejemplo:Este código agrega una
#+NAME:
plantilla aorg-structure-template-alist
, utilizandon
como un selector de plantilla. Después de expandir esta plantilla, el punto se colocará en la ubicación de?
.Si siempre nombra sus bloques de código, también puede sobrescribir la versión original de la plantilla de bloque de origen con una versión extendida que incluya la
#+NAME:
línea:Escribir
<s
seguido de TABentonces te dará:Esto es sólo la punta del iceberg; puede usar un enfoque similar para definir plantillas adicionales para bloques de código específicos del idioma, bloques de código con argumentos de encabezado específicos, etc.
fuente
<s TAB
Emacs 25 en Mac OS X y parecía funcionar.org-try-structure-completion
función (para Easy-templates). Pero de todos modos, será reemplazado por Template-templates en el futuro. cf. code.orgmode.org/bzg/org-mode/commit/…¿Por qué no lo escribes tú mismo?
fuente
En mi caja, el 99% del tiempo estoy creando bloques fuente y el 1% del tiempo estoy haciendo todo lo demás. Para el 1%, las plantillas fáciles son perfectas y para el 99% tengo un YaSnippet.
NAME
uso único,org-id
pero eso no nos importa nada a nosotros) y luego me pregunta qué idioma quiero usar limitándolo a los que le dije a Org-Mode Literate Programming (babel)Aquí está el YaSnippet con mi código de respaldo al final.
Requiere tablero y modo org cargado.
Aquí hay un ejemplo de cómo podría funcionar esta identificación:
Resultados en
fuente
fuente