Czy jest możliwe, aby yasnippets rozwijały fragmenty wewnątrz sekcji babel w trybie org w odpowiednim trybie?
10
Na przykład mam tryb organizacji, który ma następujące
#+BEGIN_SRC emacs-lisp
#+END_SRC
Czy można skonfigurować yasnippety w taki sposób, aby wszystkie fragmenty trybu emacs-lisp mogły zostać rozszerzone wewnątrz tego bloku, ale nie poza nim?
Myślę, że „standardowym” sposobem byłoby edytowanie tych bloków za pomocą C-c '- w takim przypadku tryb główny emacs-lisp miałby załadowane odpowiednie fragmenty yasnippet podczas edycji bloku w osobnym oknie (co również dba o właściwe wcięcie itp.)
VanLaser,
Tak, zgadzam się na odpowiedź VanLaser. Działa w każdym języku obsługiwanym przez emacs.
dmg,
Och, prawda. Masz rację. Czy umiesz podać odpowiedź, aby oznaczyć odpowiedź jako prawidłową? Nie myślałem o tym: P
Rafa de Castro,
Odpowiedzi:
7
Począwszy od 2017 roku, 22 stycznia, jeśli ustawisz org-src-tab-acts-nativelyi org-src-fontify-natively, a następnie TAB w blokach źródłowych rozszerzy fragmenty języka bloku. Możesz ustawić yas-buffer-local-conditionopcję zatrzymywania fragmentów kodu w trybie organizacji przed zacieniowaniem fragmentów kodu trybu blokowego:
Używam do tego dwóch metod. Mam fragmenty organizacji, które pomagają mi tworzyć nagłówki babel. Na przykład ten tworzy C ++ - 14 nagłówków dla Babel. Piszę <s C++_i rozwijam:
# -*- 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;
}
Następnie używam Cc ', który przełącza się w tryb konkretnego języka i używam fragmentów dla tego języka. Następnie użyj Cc ', aby wrócić do pliku org. To dobrze działa.
C-c '
- w takim przypadku tryb główny emacs-lisp miałby załadowane odpowiednie fragmenty yasnippet podczas edycji bloku w osobnym oknie (co również dba o właściwe wcięcie itp.)Odpowiedzi:
Począwszy od 2017 roku, 22 stycznia, jeśli ustawisz
org-src-tab-acts-natively
iorg-src-fontify-natively
, a następnie TAB w blokach źródłowych rozszerzy fragmenty języka bloku. Możesz ustawićyas-buffer-local-condition
opcję zatrzymywania fragmentów kodu w trybie organizacji przed zacieniowaniem fragmentów kodu trybu blokowego:Zobacz także https://github.com/joaotavora/yasnippet/issues/761 , https://github.com/joaotavora/yasnippet/pull/760
źródło
Używam do tego dwóch metod. Mam fragmenty organizacji, które pomagają mi tworzyć nagłówki babel. Na przykład ten tworzy C ++ - 14 nagłówków dla Babel. Piszę
<s C++_
i rozwijam:Następnie używam Cc ', który przełącza się w tryb konkretnego języka i używam fragmentów dla tego języka. Następnie użyj Cc ', aby wrócić do pliku org. To dobrze działa.
źródło
Ponieważ npostavs już odpowiedziały, fragmenty są rozwijane w różny sposób w zależności od języków w jednym pliku trybu org.
Wystarczy wpisać „co” i [tab] w bloku kodu Python lub Emacs Lisp.
źródło