Jeden fragment kodu yasnippet dla wielu trybów

13

Mam następujący fragment kodu:

# -*- mode: snippet -*-
# contributor: Song Qiang <[email protected]>
# key: m
# group: Math
# name: Inline math \( ... \)
# --
\\($1\\)$0

i chcę, żeby był dostępny zarówno dla, jak latex-modei dla org-mode. Jak można to osiągnąć? Mogę dowiązać symbolicznie, ale staram się znaleźć mądrzejszy sposób.

Dror Atariah
źródło
1
Tryb c i tryb c ++ - oba dzielą fragmenty z trybu cc, możesz sprawdzić, jak to robią. Powinien być plik „.yas-rodzice”.
bmag
Możesz wypróbować yankpad, warto spróbować! github.com/Kungsgeten/yankpad youtube.com/watch?v=xkkyE7d0Bpc&feature=youtu.be
ragloo

Odpowiedzi:

18

Dokumentacja Yasnippet wyjaśnia, że ​​musisz dołączyć .yas-parentsplik z trybami nadrzędnymi:

Bardzo przydatne jest, aby niektóre tryby dzieliły fragmenty między sobą. Aby to zrobić, wybierz podkatalog trybu i umieść .yas-parentszawierającą oddzieloną spacjami listę innych nazw trybów. Po ponownym załadowaniu tryby stają się rodzicami oryginalnego trybu.

.
|-- c-mode
|   |-- .yas-parents    # contains "cc-mode text-mode"
|   `-- printf
|-- cc-mode
|   |-- for
|   `-- while
|-- java-mode
|   |-- .yas-parents    # contains "cc-mode text-mode"
|   `-- println
`-- text-mode
    |-- email
    `-- time

Stąd, można na przykład umieścić fragment kodu w text-modekatalogu, a następnie, w latex-modei org-modekatalogów, zawierać .yas-parentsplik, który zawiera tekst text-mode.

Dan
źródło
1
Jeśli jednak dobrze rozumiem, możesz udostępniać tylko całe tryby, ale nie poszczególne fragmenty w kilku trybach?
Picaud Vincent