Werkoverleg met GvN.
Taken:
Syntactic profile of Dutch (SPOD)
? Verschillen tussen gewone queries, en met geëxpandeerde nodes: queries of macro's aanpassen?
- Emacs
- ✔ Edit-modus met formatteren voor macrobestand
- → losse functie, zie beneden
- ✔ Edit-modus met formatteren voor macrobestand
- FoLIA
- ❏ programma voor omzetting van CHAT naar FoLiA
;;;###autoload
(defun indent-xpath-macros ()
"Indent XPath macro's in buffer"
(interactive)
(save-excursion
(save-restriction
(widen)
(atomic-change-group
;; = """ -> = ";;;";(
(goto-char (point-min))
(while (re-search-forward "\\(=[ \t\n]*\\)\"\"\"*" nil t)
(replace-match "\\1\";;;\";("))
;; """ -> )";;;";
(goto-char (point-min))
(while (search-forward "\"\"\"" nil t)
(replace-match ")\";;;\";"))
;; ../ -> @@/
(goto-char (point-min))
(while (search-forward "../" nil t)
(replace-match "@@/"))
;; perl-mode: indent buffer
(perl-mode)
(unwind-protect
(indent-region (point-min) (point-max))
(fundamental-mode))
;; ";;;";( -> """
(goto-char (point-min))
(while (search-forward "\";;;\";(" nil t)
(replace-match "\"\"\""))
;; )";;;"; -> """
(goto-char (point-min))
(while (search-forward ")\";;;\";" nil t)
(replace-match "\"\"\""))
;; @@/ -> ../
(goto-char (point-min))
(while (search-forward "@@/" nil t)
(replace-match "../"))
;; trim white space and remove tabs
(goto-char (point-min))
(while (re-search-forward "[ \t]+$" nil t)
(replace-match ""))
(untabify (point-min) (point-max))
;; indent volgende regel van lijst
(goto-char (point-min))
(while (re-search-forward "^\\( *[^ \n#].*, *\n\\)" nil t)
(replace-match "\\1 ")
(beginning-of-line))
;; ^4 spaties -> 8 spaties
(goto-char (point-min))
(while (re-search-forward "^ " nil t)
(replace-match " "))
))))
Let op: Er worden wat tekenreeksen tijdelijk vervangen door andere reeksen. Aanname is dat deze vervangende reeksen verder niet voorkomen. Als dat wel het geval is dan zitten er fouten in de macro's na een indent.
Als indent mislukt dan worden alle veranderingen ongedaan gemaakt.