2015-01-02 4 views
3

Я хотел бы обернуть некоторый текст вокруг выделенного текста в emacs.Обтекание текста вокруг выделения в emacs

От выбора линий:

First item 
Second item 

Я хотел бы получить:

\begin{itemize} 
\item First item 
\item Second item 
\end{itemize} 

Использование C-c C-e в AucTeX сворачивает выбор в одну строку:

\begin{itemize} 
\item First item Second item 
\end{itemize} 

следующий фрагмент в yasnippet:

# -*- mode: snippet -*- 
# name : wrap item 
# expand-env : ((yas-wrap-around-region nil) (item-string "\item ")) 
# binding : C-M-z 
# -- 
\begin{itemize} 
`(let ((text (yas-selected-text))) (when text (replace-regexp-in-string "^" item-string text)))` $0 
\end{itemize} 

дает:

\begin{itemize} 
item First item 
item Second item 
\end{itemize} 

Я попытался с помощью (item-string "\\item ") вместо этого, но это дает ошибку:

[yas] elisp error: Invalid use of '\' in replacement text

Я хотел бы иметь сниппета работу, как я могу изменить его использования в других контекстах.

+0

Предложение: Сделайте то, что вам нужно сделать вручную, но запишите, что вы делаете в качестве * макроса клавиатуры *. Повторите макрос столько раз, сколько вам нужно. С точки зрения того, что вы хотите (но это не очень понятно), похоже, вам не нужно больше, чем это. – Drew

+2

Вот ссылка на недавний пример Yasnippet, содержащий оператор if/then 'elisp', с вставкой, для которой требуется четыре обратных слэша, равная одной обратной косой черте - пример связан с LaTeX: http: //emacs.stackexchange .com/a/5536/2287 Это * не * использовать все, что требует AUCTeX - я БЕСПЛАТНО AUCTeX :). – lawlist

+0

@Drew Не совсем, в результате отсутствует обратная косая черта '\ item'. – Christoph

ответ

2

Я только что написал код стартера, чтобы решить эту проблему в общем виде. Это на https://github.com/abo-abo/latex-wrap. Это уже работает в конкретном случае, который вы описываете, , и вы можете помочь мне продлить его, разместив issues.

+0

Спасибо, он работает хорошо, с возможностью выбора среды. – user1031565

Смежные вопросы