Verder Terug Inhoud

7. Een insert-sgml-header functie

Deze functie zal voor de gebruiker een aangepaste header, voor een Linux Documentatie Project document, in een nieuw bestand invoegen. Het kan automatisch, wanneer er een nieuw bestand wordt geopend, of expliciet door de gebruiker worden aangeroepen.

Deze functie vraagt de gebruiker, via de mini-buffer, om wat informatie, een deel daarvan is nodig, een deel daarvan niet.

Als eerste komt de titel. Als er geen wordt opgegeven, keert de functie onmiddellijk terug, en voegt niets in. Dan komt de datum, de auteur, zijn e-mail en home-page (deze laatste twee zijn optioneel).

Dan komt een verzoek voor de naam van de vertaler. Als er geen is, typ je gewoon Return, en er zullen verder geen vragen meer worden gesteld over een hypothetische vertaler. Als er wel één is, wordt je om zijn e-mail en home-pagina gevraagd (ook optioneel).

Deze functie drukt je verzoek vervolgens naar de huidige buffer af, natuurlijk inclusief alle informatie die je in het invoerformulier hebt ingetikt, en ook inclusief de tags die dienen voor de samenvatting en het eerste hoofdstuk. Als laatste zet het de cursor op die plaats waar de samenvatting moet worden ingetypt.

(defun insert-sgml-header ()
"Voegt de header voor een LinuxDoc document in"
(interactive)
(let (title author email home translator email-translator home-translator date 
              starting-point)
(setq title (read-from-minibuffer "Titel: "))
(if (> (length title) 0)
        (progn 
          (setq date (read-from-minibuffer "Datum: ")
                author (read-from-minibuffer "Auteur: ")
                email (read-from-minibuffer "Auteur e-mail: ")
                home (read-from-minibuffer "Auteur home-pagina: http://")
                translator (read-from-minibuffer "Vertaler: "))
          (insert "<!doctype linuxdoc system>\n<article>\n<title>")
          (insert title)
          (insert "</title>\n<author>\nAuthor: ") (insert author) (insert "<newline>\n")
          (if (> (length email) 0)
              (progn
                (insert "<htmlurl url=\"mailto:")
                (insert email) (insert "\" name=\"") (insert email)
                (insert "\"><newline>\n")))
          (if (> (length home) 0)
              (progn
                (insert "<htmlurl url=\"http://")
                (insert home) (insert "\" name=\"") (insert home)
                (insert "\">\n<newline>")))
          (if (> (length translator) 0)
              (progn
                (setq email-translator (read-from-minibuffer "Vertaler e-mail: ")
                      home-translator (read-from-minibuffer "Vertaler home-pagina: http://"))
                (insert "Vertaald door : ") 
                (insert translator) 
                (insert "<newline>\n")
                (if (> (length email-translator) 0)
                    (progn 
                      (insert "<htmlurl url=\"mailto:") 
                      (insert email-translator) (insert "\" name=\"") 
                      (insert email-translator)
                      (insert "\"><newline>\n")))
                (if (> (length home-translator) 0)
                    (progn 
                      (insert "<htmlurl url=\"http://") 
                      (insert home-translator) (insert "\" name=\"")
                      (insert home-translator)
                      (insert "\"><newline>\n")))))
          (insert "</author>\n<date>\n")
          (insert date)
          (insert "\n</date>\n\n<abstract>\n")
          (setq point-beginning (point))
          (insert "\n</abstract>\n<toc>\n\n<sect>\n<p>\n\n\n</sect>\n\n</article>\n")
          (goto-char point-beginning)
          ))))
 

Verder Terug Inhoud