Ad esempio ho una modalità org che ha i seguenti
#+BEGIN_SRC emacs-lisp
#+END_SRC
È possibile configurare yasnippet in modo tale che tutti gli snippet in modalità emacs-lisp possano essere espansi all'interno di quel blocco ma non all'esterno?
Ad esempio ho una modalità org che ha i seguenti
#+BEGIN_SRC emacs-lisp
#+END_SRC
È possibile configurare yasnippet in modo tale che tutti gli snippet in modalità emacs-lisp possano essere espansi all'interno di quel blocco ma non all'esterno?
Risposte:
A partire dal 2017, il 22 gennaio, se si imposta org-src-tab-acts-nativelye org-src-fontify-natively, quindi TAB nei blocchi di origine espanderà frammenti della lingua del blocco. Potresti voler impostare yas-buffer-local-conditionper impedire agli snippet della modalità org di oscurare gli snippet della modalità blocco:
(defun my-org-mode-hook ()
(setq-local yas-buffer-local-condition
'(not (org-in-src-block-p t))))
(add-hook 'org-mode-hook #'my-org-mode-hook)
Vedi anche https://github.com/joaotavora/yasnippet/issues/761 , https://github.com/joaotavora/yasnippet/pull/760
Uso due metodi per questo. Ho alcuni frammenti di org per aiutarmi a creare le intestazioni delle babele. Ad esempio, questo crea intestazioni C ++ - 14 per Babele. Scrivo <s C++_ed espando:
# -*- mode: snippet -*-
# name: c++_header
# key: C++_
# --
C++ :main no :flags -std=c++14 -Wall --pedantic -Werror :results output :exports both
#include <iostream>
int main()
{
$0
return 0;
}
Quindi uso Cc 'che passa alla modalità lingua specifica e uso i frammenti per quella lingua. Quindi utilizzare Cc 'per tornare al file org. Funziona bene.
Poiché npostavs ha già risposto, gli snippet vengono espansi in modo diverso a seconda delle lingue all'interno di un file in modalità organizzazione.
Digita "co" e [tab] all'interno del blocco di codice Python o Emacs Lisp.
#+BEGIN_SRC python :session *Python* :results output
co[tab]
# comment
#+END_SRC
#+BEGIN_SRC emacs-lisp :results value scalar
co[tab]
; comment
#+END_SRC
C-c 'comunque - in quel caso, la modalità principale emacs-lisp avrebbe i frammenti yasnippet appropriati caricati mentre si modifica il blocco nella sua finestra separata (che si occupa anche della giusta rientranza ecc.)