Nästa Föregående Innehållsförteckning

7. En insert-sgml-header-funktion

Denna funktion låter användaren infoga ett specialkomponerat dokumenthuvud i ett Linux Documentation Project-dokument. Den kan anropas automatiskt när en fil öppnas, eller explicit, av användaren.

Denna funktion frågar användaren, genom mini-bufferten, om en del information, av vilken en del är nödvändig, och annat ej.

Först kommer titeln. Om ingen anges, så avslutas funktionen omedelbart, och infogar inget. Sedan kommer datumet, författaren, hans e-postadress och hemsida (de två sista är valfria).

Sedan kommer en fråga efter namnet på översättaren. Om det inte finns någon, tryck bara Return och inga fler frågor om en hypotetisk översättare kommer ställas. Om det finns en, så tillfrågas du om hans e-postadress och hemsida (också valfria).

Funktionen skriver sedan in detta i den aktuella buffern, inklusive informationen du skrev in i en mall, och inklusive taggarna, som används till sammanfattning och första kapitlet. Slutligen placeras markören där sammanfattningen ska skrivas.

(defun insert-sgml-header ()
  "Infoga dokumenthuvudet för ett LinuxDoc-dokument"
  (interactive)
  (let (titel forfattare epost hem oversattare epost-oversattare hem-oversattare datum 
              starting-point)
    (setq titel (read-from-minibuffer "Titel: "))
    (if (> (length titel) 0)
        (progn 
          (setq datum (read-from-minibuffer "Datum: ")
                forfattare (read-from-minibuffer "Författare: ")
                epost (read-from-minibuffer "Författarens e-post: ")
                hem (read-from-minibuffer "Författarens hemsida: http://")
                oversattare (read-from-minibuffer "Översättare: "))
          (insert "<!doctype linuxdoc system>\n<article>\n<titel>")
          (insert titel)
          (insert "</titel>\n<forfattare>\nFörfattare: ") (insert forfattare) (insert "<newline>\n")
          (if (> (length epost) 0)
              (progn
                (insert "<htmlurl url=\"mailto:")
                (insert epost) (insert "\" name=\"") (insert epost)
                (insert "\"><newline>\n")))
          (if (> (length hem) 0)
              (progn
                (insert "<htmlurl url=\"http://")
                (insert hem) (insert "\" name=\"") (insert hem)
                (insert "\">\n<newline>")))
          (if (> (length oversattare) 0)
              (progn
                (setq epost-oversattare (read-from-minibuffer "Översättarens e-post: ")
                      hem-oversattare (read-from-minibuffer "Översättarens hemsida: http://"))
                (insert "Översättare : ") 
                (insert oversattare) 
                (insert "<newline>\n")
                (if (> (length epost-oversattare) 0)
                    (progn 
                      (insert "<htmlurl url=\"mailto:") 
                      (insert epost-oversattare) (insert "\" name=\"") 
                      (insert epost-oversattare)
                      (insert "\"><newline>\n")))
                (if (> (length hem-oversattare) 0)
                    (progn 
                      (insert "<htmlurl url=\"http://") 
                      (insert hem-oversattare) (insert "\" name=\"")
                      (insert hem-oversattare)
                      (insert "\"><newline>\n")))))
          (insert "</forfattare>\n<datum>\n")
          (insert datum)
          (insert "\n</datum>\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)
          ))))
 

Nästa Föregående Innehållsförteckning