Re: [dk-tug] [OT] egne emacs-makroer

Lars Madsen <[email protected]>
Newsgroups gmane.comp.tex.danish
Message-ID <[email protected]>
On 01/17/2012 03:29 PM, Lars Madsen wrote:
> Hej
>
> Er der nogen af jer som har nogle gode referencer til hvordan man
> skriver sine egne lidt mere avancerede makoer?
>
> Jeg editerer tit noget som andre har skrevet, og det vil i den
> forbindelse være rart hvis man kan lave sig nogle makroer som kan hjælpe
> en med at rydde op i det andre skriver (således at det der afleveres er
> af en kodemæssig bedre kvalitet).
>
> Forresten: Et et nice tip jeg opdagede forleden (antag der ikke er
> $$...$$ i din buffer), så vil 'M-x LaTeX-fill-buffer' sørge for at
> omformatere hele bufferen så den ser 'pæn' ud (indrykning af
> environments etc.), meget rart at opdage den, min kode er i hvertfald
> blevet meget pænere at kigge på.
>
>
> Nuvel tilbage til emnet.
>
> Konkret sidder jeg med en bruger som anvender |...| i flere forskellige
> sammenhænge (f.eks. absolutværdi og kardinalitet), dette skal
> naturligvis skrives så det er separeret syntaksmæssigt.
>
> Jeg forestiller mig lidt at lave en makro som skal virker på denne måde
> (Sørg for at |...| allerede er markeret som region, og at fortolkningen
> af dette er kardinalitet)
>
> * gå til starten af regionen
> * find første eksemplar fra listen '|', '\vert' eller '\lvert' og slet
> denne
> * gå til slutningen af regionen
> * søg baglæns efter første eksemplar fra listen '|', '\vert' eller
> '\rvert' og slet denne
> * erstat den resterende region med \card{<region>}
>
> Nogen forslag til hvordan denne kodes?
>
>
>

Et muligt svar:

(defun cardinality-replace (beg end)
   (interactive "r")
   (let ((string (delete-and-extract-region beg end)))
     (setq string (replace-regexp-in-string
"^[ \t]*\\(|\\|\\\\vert\\|\\\\lvert\\)" "" string))
     (setq string (replace-regexp-in-string
"\\(|\\|\\\\vert\\|\\\\rvert\\)[ \t]*$" "" string))
     (insert (concat "\\card{" string "}"))
     )
)

forslag til forbedringer modtages gerne.

En naturlig tilføjelse vil være at teste om de to regexp'er matcher, 
også kun gøre noget hvis der er et match
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.