Enredo de fuente de organización de una línea

7

A veces, especialmente al tomar notas, un archivo de organización alfabetizado puede contener bloques de origen de una línea, de la siguiente manera:

* Taking notes
:PROPERTIES:
:tangle: whatever.pl
:comments: org
:END:

Perl set command
#+BEGIN_SRC perl
set $random_var=1;
#+END_SRC

Perl unset command (just making it up... :P)
#+BEGIN_SRC perl
unset $random_var;
#+END_SRC

Para tales aplicaciones, el #+BEGIN_SRC...#+END_SRCpragma parece ser una exageración. Las plantillas fáciles reducen el tipeo, pero el documento de la organización todavía parece un poco desbordado.

¿Hay una forma fácil de hacer esto? Sé que una línea que comienza con un :llega al texto literal automáticamente. ¿Hay alguna manera de hacer algo similar con org-tangle?

Estoy buscando una solución similar a esta, o al menos cerca de estas líneas, al tiempo que conserva las funciones de resaltado y enredado de la fuente para el modo principal:

* Taking notes
:PROPERTIES:
:tangle: whatever.pl
:comments: org
:mode: perl
:END:

Perl set command
: set $random_var=1;

Perl unset command (just making it up... :P)
: unset $random_var;

Es más limpio, fácil de ver y, en mi humilde opinión, un poco menos ruidoso.

Cualquier sugerencia sera apreciada. ¡Gracias por adelantado!

deejay
fuente
¿Qué tal un comando de ocultar / mostrar para todo el archivo en cuanto a los bloques de código fuente inicial y final, dejando todo lo que se intercala entre ellos? En cambio, el principio y el final tendrían ..., o puede usar cualquier taquigrafía que desee para indicar texto oculto (por ejemplo, una cara sonriente ), o no puede tener ningún indicador para las líneas ocultas
leyes
@lawlist No puedo entender tu ejemplo ... ¿puedes mostrar una demostración?
deejay
1
En un búfer que contenga su primer ejemplo, evalúe el siguiente fragmento para ocultar el texto: (save-excursion (goto-char (point-max)) (while (re-search-backward "#\\+BEGIN_SRC\\|#\\+END_SRC" nil t) (let ((ov (make-overlay (line-beginning-position) (1+ (line-end-position))))) (overlay-put ov 'invisible t)))) cuando haya terminado con su prueba, evalúe (remove-overlays). Este es solo un ejemplo simple de cómo ocultar texto. Puede crear lugar los titulares para el texto oculto que la mirada ...o como se quiera - por ejemplo, hidden text lies here. Evaluar código conM-x eval-expression
lawlist
@lawlist gracias. eso limpia el buffer significativamente. Sin embargo, habría estado más ansioso por la solución del modo de organización propuesta anteriormente. Una pregunta: Traté de envolver su código en una función: (defun clean-org-buffer() (save-excursion (goto-char (point-max)) (while (re-search-backward "#\\+BEGIN_SRC\\|#\\+END_SRC" nil t) (let ((ov (make-overlay (line-beginning-position) (1+ (line-end-position))))) (overlay-put ov 'invisible t)))))Sin embargo, la evaluación de los resultados de esta función en el error de la siguiente manera: Wrong type argument: commandp, clean-org-buffer. ¿Puedes sugerir cómo ayudar a esto?
deejay
1
Puede usar M-x eval-expression RET (clean-org-buffer) RET(sin modificaciones en el fragmento) y / o puede agregar (interactive)justo antes del fragmento en mi comentario anterior (2 párrafos anteriores) para que se pueda usar de forma interactiva M-x clean-org-buffer.
abogados

Respuestas:

4

De (org) Estructura de bloques de código :

Los bloques de código en vivo también se pueden especificar en línea usando

src_<language>{<body>}

o

src_<language>[<header arguments>]{<body>}

Por lo tanto, debería poder usar en src_perl{set $random_var=1;}lugar del bloque completo.

Tyler
fuente
1
Parece que esto no funciona. 1) El resaltado de sintaxis se ha ido, 2) El código enredado viene como un comentario, no como una declaración en el archivo de salida (whatever.pl, en este caso). ¿Lo estoy haciendo mal?
deejay