Avanti Indietro Indice

7. Una funzione insert-sgml-header

Questa funzione permette all'utente di inserire un header personalizzato in un documento per il Linux Documentation Project all'interno di un file. Può essere richiamata automaticamente quando viene aperto un nuovo file, oppure in modo esplicito dall'utente.

Questa funzione attende un input dell'utente attraverso il mini-buffer, per alcune informazioni, di cui alcune sono necessarie, altre invece no.

Per prima cosa il titolo. Se non viene inserito, la funziona esce immediatamente, e niente viene inserito. Segue poi la data, l'autore, la sua email e home-page (le ultime due sono opzionali).

Successivamente c'è una richiesta per il nome del traduttore. Se non volete inserire niente, basta premere Invio, e nessun altra domanda circa un ipotetico traduttore verrà richiesta. Se invece ne esiste uno, verrà richiesta la sua email e home-page (come sempre opzionali).

Questa funzione quindi inserirà nel file corrente tutte le informazioni da voi inserite, inclusi naturalmente tutti i tag necessari. Inserirà anche quelli per l'abstract e per il primo capitolo. Infine posizionerà il cursore dove l'abstract deve essere inserito.

(defun insert-sgml-header ()
  "Inserisce gli header per un documento LinuxDoc"
  (interactive)
  (let (title author email home translator email-translator home-translator date 
              starting-point)
    (setq title (read-from-minibuffer "Titolo: "))
    (if (> (length title) 0)
        (progn 
          (setq date (read-from-minibuffer "Data: ")
                author (read-from-minibuffer "Autore: ")
                email (read-from-minibuffer "E-mail autore: ")
                home (read-from-minibuffer "Home page autore: http://")
                translator (read-from-minibuffer "Traduttore: "))
          (insert "<!doctype linuxdoc system>\n<article>\n<title>")
          (insert title)
          (insert "</title>\n<author>\nAutore: ") (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 "E-mail traduttore: ")
                      home-translator (read-from-minibuffer "Home page traduttore: http://"))
                (insert "Traduzione : ") 
                (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)
          ))))
 


Avanti Indietro Indice