2015-01-02 15 views
3

我想在emacs的選定文字周圍換一些文字。在emacs的選區周圍換行文字

從選擇線路:

First item 
Second item 

我想獲得:

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

使用AucTeX C-c C-e摺疊選擇成一條線:

\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

下面是一個包含if/then'elisp'語句的Yasnippet的最近示例的鏈接,其中包含一個insert,它需要四個反斜槓等於一個反斜槓 - 該示例與LaTeX相關:http://emacs.stackexchange .com/a/5536/2287它不*使用任何需要AUCTeX的東西 - 我是AUCTeX FREE :)。 – lawlist

+0

@Drew不完全,結果中缺少'\ item'的反斜槓。 – Christoph

回答

2

我剛剛寫了一些入門代碼,以一般的方式解決這個問題。 這是在https://github.com/abo-abo/latex-wrap。 它已適用於您描述的特定情況, ,您可以通過發帖issues來幫助我擴展它。

+0

謝謝,它運作良好,可以選擇環境。 – user1031565