1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990
|
LinuxDoc+Emacs+Ispell-HOWTO
di Philippe Martin (feloy@wanadoo.fr)
27 Febbraio 1998
Questo documento dedicato a tutti coloro che scrivono o traducono
gli HOWTO di Linux o qualunque altro documento per il Linux Documenta
tion Project (anche ILDP, ovviamente!). Pu fornire loro suggerimenti
su come usare i vari applicativi tra cui Emacs e Ispell. Traduzione a
cura di Christopher Gabriel, cgabriel@pluto.linux.it, ultima revisione
12 Ottobre 1998.
1.
Presentazione
1.1. Copyright
Copyright Philippe Martin 1998
You may redistribute and/or modify this document as long as you comply
with the terms of the GNU General Public Licence, version 2 or later.
L'unica licenza valida quella originale in lingua inglese.
Di seguito ne trovate una traduzione abbastanza fedele che
per non ha alcun valore.
Copyright Philippe Martin 1998
Potete redistribuire e/o modificare questo documento nelle modalit e
limiti come descritti nella Licenza Pubblica Generale GNU, versione 2
o successive.
1.2.
Ringraziamenti
Ringrazio vivamente Sbastien Blondeel, che mi ha chiesto molto sulla
configurazione di Emacs. Le sue intelligenti domande mi hanno permesso
di capire meglio certe cose e di renderle disponibili a voi attraverso
questo documento.
1.3.
Commenti
Non esitate a dirmi qualunque cosa che pensate possa rendere questo
documento migliore. Esaminer le vostre critiche attentamente. Non
esitate neppure a pormi domande riguardanti qualunque argomento
trattato in questo documento. Sar molto felice di rispondervi, visto
che molto probabilmente questo mi permetter di migliorare il mio
lavoro (-- Nota del traduttore: Se questo italiano orribile, allora
mandatele a me!--) .
1.4.
Versioni
Questo documento prender in esame le seguenti versioni:
Sgml-tools versione 0.99,
Emacs versione 19.34,
Ispell versione 3.1,
Tutte le librerie di Emacs a cui fa riferimento questo documento
sono distribuite con la versione di Emacs di cui sopra, ad eccetto
di iso-sgml, che fornito assieme a XEmacs, e psgml, che una
libreria a se stante.
2.
Introduzione
2.1.
SGML
Standard Generalised Mark-up Language, o SGML, un linguaggio per
definire la tipologia di un documento.
Per esempio, potete definire il tipo di documento ricetta, con una
prima parte per la presentazione degli ingredienti, una seconda che
introduce gli accessori, una terza che descrive le istruzioni passo
passo per cuocere la torta, e una immagine finale che mostra il
risultato, la torta pronta da mangiare.
Questo chiamato Document Type Definition (DTD), Definizione di Tipo
di Documento. Non servir a descrivere l'aspetto del prodotto finale,
definisce solamente cosa pu contenere.
Per usare nuovamente lo stesso esempio, sono sicuro che leggendo la
mia idea di ricetta, riconoscerete le vostre ricette, o le vostre
preferite. In ogni caso, attualmente hanno aspetto differente: le mie
hanno una piccola immagine di una tazza nell'angolo in alto a
sinistra, e gli ingredienti elencati nel giardino posteriore, fra la
piscina e il barbecue. Le vostre?
Grazie a questa definizione standard, chiunque pu scrivere un
documento, senza doversi preoccupare di come apparir al lettore.
2.2.
La tipologia LinuxDoc
Questa tipologia usata per scrivere, come potete avere indovinato,
documenti relativi a Linux.
Questi documenti sono usualmente strutturati in questo modo: un titolo
di inizio, seguito dal nome dell'autore, la versione del documento e
la data. Successivamente presente una breve descrizione (non avete
quindi bisogno di girellare per tutto il documento per capire di cosa
si parla o per realizzare che quello che c' scritto non vi interessa
), poi l'indice che mostra la struttura di tutto il documento, che vi
permette di accedere direttamente alla sezione che pi vi interessa.
presente la lista dei capitoli, delle sezioni dei paragrafi.
Attraverso questi, si pu inserire piccole parti di programmi,
cambiare i font per enfatizzare parole o frasi, inserire liste, fare
riferimenti ad altre parti del documento etc.
Per scrivere questo tipo di documento, dovete specificare nel punto
giusto il titolo, l'autore, la data, la versione, e ancora i capitoli
e le sezioni, definire quando deve essere visualizzata una lista di
oggetti, quali sono i suoi elementi etc.
2.3.
SGML-Tools
Gli SGML-Tools permettono di creare dal documento con le vostre
specifiche il risultato finale, nel formato che preferite. Se volete
inserirlo nella vostra libreria privata, sceglierete PostScript. Se
volete condividerlo attraverso il World Wide Web, sar allora HTML. Se
dovete leggerlo con Windows, potete trasformarlo in RTF in modo tale
da renderlo leggibile con qualunque Word Processor. Oppure potete
utilizzare tutti e tre questi formati, cos sarete pronti a qualunque
evenienza.
Gli SGML-Tools sono disponibili via FTP anonimo a
ftp://ftp.lip6.fr/pub/sgml-tools/
3.
Il vostro primo documento
3.1.
Da un documento di testo
Se desiderate convertire un documento di solo testo in SGML per
crearlo in altri formati, questo fa al caso vostro:
1. Aggiungete le seguenti linee all'inizio del file:
<!doctype linuxdoc system>
<article>
<title>Qui metteteci il titolo</title>
<author>
nome dell'autore, email dell'autore etc
</author>
<date>
versione e data
</date>
2. Se volete aggiungere una breve descrizione del documento circondate
il paragrafo con i tag <abstract> e </abstract>.
3. Dopodich inserite il tag <toc>, che signifiva Table of Contents,
ovvero l'Indice.
4. All'inizio di ogni nuovo capitolo, sostituite la linea contenente
il numero e il titolo del capitolo con:
<sect>Titolo del nuovo Capitolo
e aggiungete il tag </sect> all fine del capitolo stesso.
Nota : Non dovete inserire il numero del capitolo, questo viene
inserito automaticamente.
5. Procede allo stesso modo per le sezioni. Dovete cancellare i loro
numeri e circondate il titolo con il tag <sect1> e terminate con
</sect1>.
6. Potete definite fino a 4 livelli di sezione nidificati, usando
<sectn> ande </sectn> dove n= 2, 3, o 4.
7. All'inizio di ogni paragrafo, inserite il tag <p>.
8. Se dovete enfatizzare alcune parti del testo, usate il tag <it> e
</it> (italico), <bf> e </bf> (grassetto), o <tt> e </tt> (macchina
da scrivere).
9. Per inserire una lista come la seguente:
Questa una lista di quattro elementi:
- qui va la prima linea
- seguita dalla seconda
- ancora un'altra, per favore
- ok, basta cos.
dovete sostituirla con:
Questa una lista di quattro elementi:
<itemize>
<item>qui va la prima linea
<item>seguita dalla seconda
<item>ancora un'altra, per favore
<item> ok, basta cos.
</itemize>
10.
Quando un intero blocco parte di codice di un programma, e
qualunque altra cosa deve essere evidenziata, tipo:
<verb>
10 REM Oh mio Dio cosa questo?
20 REM Penso che ormai sia scomparso!
30 PRINT "Sono tornato baby";
40 PRINT "per salvare il mondo."
50 INPUT "Da chi? chi sei tu? ",M$
60 IF M$="Bill" THEN PRINT "Verso la saggezza.":GOTO PARADISE
70 ELSE PRINT "Non hai via di scampo...":GOTO RICHMOND
</verb>
11.
In questo modo, il vostro documento SGML formattato avr un aspetto
decente. Se lo volete rifinire ulteriormenete, potete leggervi il
manuale utente degli SGML-Tools, che fornisco ulteriori dettagli
sul tipo di documento LinuxDoc.
4.
Configurare Emacs
4.1.
Caratteri accentati
Se volete scrivere documenti in francese o in qualunque altra lingua
dell'Europa occidentale, avete bisogno del set di caratteri a 8-bit.
Di seguito come configurare Emacs per fargli accettare questi
caratteri.
4.1.1.
La visualizzazione di caratteri 8-bit
Per permetter a Emacs di visualizzare caratteri a 8-bit, dovete
aggiungere le seguenti linee nel vostro file .emacs:
(standard-display-european 1)
(load-library "iso-syntax")
Se state usando Emacs su di un terminale che non ha il supporto per i
caratteri 8-bit, potete usare la libreria iso-ascii ((load-library
"iso-ascii")), che permette ad Emacs di visualizzare questo tipo di
caratteri con la migliore approssimazione.
4.1.2.
Digitare caratteri 8-bit
Se la vostra tastiera vi permette di digitare caratteri accentati,
allora nessun problema. Se invece non cos ecco alcuni rimedi:
4.1.2.1. La libreria iso-acc
La libreria iso-acc di Emacs vi permette di digitare caratteri 8-bit
da una tastiera a 7-bit.
Per utilizzarla, inserite il seguente codice nel vostro file .emacs:
(load-library "iso-acc")
Quindi, mentre state usando Emacs e aprendo il file che volete
editare, digitate Meta-x iso-accents-mode.
Potete inserire la della parola francese caf digitando ' e e.
Solitamente potete inserire una lettera accentata digitando prima
l'accento, e poi la lettera da accentare ( maiuscola o minuscola). I
seguenti sono accenti che potete usare:
` : Grave
^ : Circonflesso
" : Dieresi
~ : Tilde, cedilla, e altri casi particolari
/ : Per barrare una lettera etc.
Se avete bisogno di uno di questi caratteri e non della lettera
accentata, inseritelo facendo seguire uno spazio. Per esempio, per
inserire l'lphant, premete l ' <spc> ' e l ' e ...
Potete trovare tutte le combinazioni possibili nel file iso-acc.el.
4.1.2.2. Il tasto<Meta>
Alcuni terminali vi permettono di digitare caratteri a 8-bit con il
tasto<Meta> (oppure <Alt>). Per esempio, premendo <Meta-i> otterrete
il carattere . Ma Emacs riserva al tasto <Meta> altri usi, e io so
che non esiste nessuna libreria che permette di usarlo per i caratteri
accentati.
Questa una soluzione:
(global-set-key "\ei" '(lambda () (interactive) (insert ?\351)))
_ ___
Una linea di questo genere, se inserita nel vostro .emacs, permetter
di digitare usando la combinazione <Meta>-i. Potete ridefinire in
questo modo la combinazione che permetter di inserire i nel tasto
giusto e 351 nel giusto codice (il collegamento con il codice viene
estratto dalla tabella del set di caratteri ISO-8859-1).
Attenzione! Qualche impostazione di localizzazione pu ridefinire
queste combinazioni.
4.1.3.
La visualizzazione di caratteri SGML a 8-bit
Lavorando con SGML, potete accentare i caratteri con delle macro. Per
esempio, il tasto é. Generalmente, le applicazioni che
devono leggere SGML possono gestire caratteri a 8-bit e non c'
bisogno di usare queste macro. Ma alcune di queste non sono in grado
di farlo. Ma, visto che c' un modo per risolvere questo problema,
sarebbe fastidioso vedere queste applicazioni non funzionare
correttamente, no?
La libreria iso-sgml vi permette di digitare caratteri accentati sotto
Emacs, come normale, ma quando il file sar salvato su disco, allora
questi caratteri saranno convertiti nel loro equivalente SGML.
quindi molto semplice, grazie a questa libreria, digitare e
rileggere il proprio documento con Emacs, e sarete sicuri che
qualunque applicazione che non supporta i caratteri 8-bit potr
accettarlo.
Per usare questa libreria, dovete soltanto aggiungere le seguenti
linee nel vostro file .emacs:
(setq sgml-mode-hook
'(lambda () "Default per SGML-mode"
(load-library "iso-sgml")))
4.2.
Modalit SGML
Una volta caricato un file che ha una estensione di tipo .sgml, Emacs
entra automaticamente in modalit SGML, o sgml-mode. Se non cos,
potete sempre avviarla manualmente digitando Meta-x sgml-mode, oppure
automaticamente aggiungendo queste righe nel vostro .emacs:
(setq auto-mode-alist
(append '(("\.sgml$" . sgml-mode))
auto-mode-alist))
Questa modalit vi permette di scegliere come inserire i caratteri a
8-bit per esempi. Con Meta-x sgml-nome-8bit-mode (o la voce di menu
SGML/Toggle 8-bit insertion), potete scegliere di digitare i caratteri
a 8-bit cos come sono, oppure in forma SGML, per esempio &...;. Per
mette inoltre di nascondere o mostare i tag SGML, con Meta-x sgml-
hide-tags e Meta-x sgml-show-tags.
4.3. Modalit PSGML
La modalit PSGML aiuta moltissimo a editare documenti SGML con Emacs.
La documentazione psgml-linuxdoc spiega come installare questa
modalit e usarla con LinuxDoc.
4.4.
Miscellanea
4.4.1.
Modalit auto-fill
In modalit normale, quando digitate un paragrafo e arrivate alla fine
della linea, dovete usare il tasto <Invio> da soli per poter
raggiungere la linea successiva, oppure la linea continuer per tutto
il paragrafo.
Se proseguite con alcune linee oltre una larghezza ragionevole, non
sarete in grado di vedere il resto della linea con alcuni editors.
La modalit auto-fill automatizza questa procedura, peraltro noiosa:
quando arrivate a una determinata colonna (solitamente la
settantesima), sarete automaticamente spostati nelle linea successiva.
Il testo seguente descrive come utilizzare questa modalit, e
impostare la larghezza delle vostre linee a 80:
(setq sgml-mode-hook
'(lambda () "Default per SGML mode."
(auto-fill-mode)
(setq fill-column 80)))
5.
Ispell
Se volete controllare l'ortografia dei vostri documenti all'interno di
Emacs, allora potete usare il pacchetto Ispell e la sua modalit
Emacs.
5.1.
Impostare il dizionario predefinito
Potete impostare Emacs in modo tale che quando un file viene caricato
scelga automaticamente quale dizionario usare (potete selezionarne
diversi). Il primo, sicuramente il pi importante, il dizionario
distribuito con Ispell. Potete scegliere fra varie lingue. Il secondo
il vostro dizionario personale, dove Ispell inserir le parole che
non pu trovare nel dizionario principale ma che devono essere
ricordate. Se desiderate usare come dizionario predefinito quello
Francese che distribuito con Ispell, e se volete usare il file
.ispell-dico-perso, che si trova nella vostra directory home, come
dizionario personale, inserite le seguenti linee nel vostro file
.emacs:
(setq sgml-mode-hook
'(lambda () "Defaut per SGML mode."
(setq ispell-personal-dictionary "~/.ispell-dico-perso")
(ispell-change-dictionary "francais")
))
5.2.
Selezionare un dizionario per determinati file
Potreste avere qualche problema se non si fate la correzione
ortografica dei vostri documenti sempre con la lingua. Se traducete
documenti, normale che passiate da un linguaggio (e dizionario)
all'altro molto spesso.
Non sono a conoscenza di una funzione Lisp che permetta di
selezionare, sia automaticamente oppure con un click del mouse, il
dizionario principale e quello personale associato al linguaggio che
viene utilizzato (se qualcuno lo sa, per favore me lo dica!).
In ogni caso, possibile indicare, alla fine del file, quale
dizionario volete che venga utilizzato per quel determinato documento.
sufficiente aggiungere queste specifiche come commenti, in modo tale
che Ispell possa leggerli quando viene avviata la correzione
ortografica. Ecco un esempio per la lingua inglese:
<!-- Local IspellDict: english -->
<!-- Local IspellPersDict: ~/emacs/.ispell-english -->
Se avete precedentemente definito, nel vostro file .emacs, che il
vostro dizionario , per esempio, quello francese, allora potete
aggiungere queste linee alla fine di ogni file scritto in inglese.
5.3.
Correzione ortografica dei vostri documenti
Per eseguire la correzione ortografica del vostro documento, usate, in
qualcunque punto del documento, il comando Meta-x ispell-buffer.
Potete in ogni caso eseguire questo controllo in una singola sezione
del documento:
Marcare l'inizio della sezione con Ctrl-Spc (mark-set-command),
Muovetevi fino alla fine della sezione da correggere,
digitate Meta-x ispell-region.
A questo punto Emacs avvia Ispell. Appena incontra una parola
sconosciuta, questa viene mostrata evidenziata e aspetta che
immettiate un comando:
spazio accetta la parola, questa volta soltanto
i accetta la parola e la inserisce nel dizionario personale
a accetta la parola per questa sessione di Ispell
A accetta la parola per questo file, e la inserisce nel dizionario
personale
r permette di correggere la parola manualmente
R permette di correggere tutte le ricorrenze della parola che
stata corretta
x arresta la correzione, e riporta il cursore dove si era lasciato
inizialmente
X arresta la correzione e lascia il cursore dove si trova,
permettendo di correggere il file; sarete in grado di continuare la
correzione in un secondo tempo usando Meta-x ispell-continue
? accede alla guida in linea.
Se Ispell trova una o pi parole nel dizionario simili a quella
sconosciuta, le mostrer in una piccola finestra, ognuna preceduta
da un numero. Basta premere questo numero per sostituire la parola
sbagliata con quella corrispondente.
5.4.
Dizionario personale VS dizionario nel file locale
Il tasto i vi permette di inserire una parola nel vostro dizionario
personale, come A permette di inserirla nel dizionario in file locale.
Il dizionario nel file locale una sequenza di parole inserite alla
fine del file, come commento, rilette da Ispell ogni volta che viene
eseguito sul quel file specifico. In questo modo possibile accetare
alcune parole nel file in questione, ma non in altri.
Dal mio punto di vista credo che sia meglio che il dizionario
personale venga utilizzato per parole che non sono contenute nel
dizionario principale ma che sono tipiche del linguaggio (come le
parole accentate), con in pi parole comuni come nomi propri o altre
(come Linux), se non sono troppo simili ad altre presenti in quello
principale; aggiungere troppe parole nel dizionario personale, come
nomi propri, pu essere "pericoloso", poich possono essere viste come
parole della lingua in uso (immaginate Ispell alle prese con qualcosa
del genere: `When the going gets tof, the tof get going'). (-- Tof
l'abbreviazione francese per il nome proprio Christophe!.--)
5.5.
Correzione ortografica durante la digitazione
Ispell pu controllare l'ortografia mentre state digitando il vostro
documento. Dovete utilizzare ispell-minor-mode per questo. Per
avviarlo o arrestarlo, digitate Meta-x ispell-minor-mode. Ispell
emetter un beep ogni volta che digiterete una parola che non nei
due dizionari.
Se questi beep vi stanno annoiando (oppure il vostro compagno di
stanza si stancato di voi.. ), potete rimpiazzarli con un flash
sullo schermo, con il comando Meta-x set-variable RET visible-bell RET
t RET. Potete anche aggiungere le seguenti linee nel vostro file
.emacs e Emacs non parler mai pi:
(setq visible-bell t)
6.
Trucchetti Sporchi
6.1.
Inserire automaticamente un header
Emacs permette di associare delle procedure ad eventi specifici
(aprire un file, salvarlo, avviare una nuova modalit etc ).
La libreria autoinsert utilizza questa caratteristica: quando aprite
un nuovo file con Emacs, questa libreria inserisce, dipendentemente
dal tipo di file, un header standard.
Nel nostro caso, questo header standard pu definire il tipo di
documento (LinuxDoc), il titolo, l'autore, e la data.
Descriver adesso due modi per fare questo. Potete creare un template
che contenga le informazioni da inserire, oppure potete avviare una
routine elisp.
6.1.1.
Inserendo un file
Per prima cosa dovete permettere a Emacs di avviare la auto-insert
quando un file viene aperto, quindi di leggere la libreria auto-insert
che dichiara la auto-insert-alist che necessita di cambiamenti. Questa
lista definisce gli header da inserire per ogni tipo di file. Per
default, il file da inserire deve trovarsi nella cartella ~/insert/,
ma possibile definire la variabile auto-insert-directory se volete
mettere i vostri file da qualche altra parte.
Aggiungere le seguenti linee al vostro .emacs per il inserire il file
~/emacs/sgml-insert.sgml ogni volta che aprite un nuovo documento
SGML:
(add-hook 'find-file-hooks 'auto-insert)
(load-library "autoinsert")
(setq auto-insert-directory "~/emacs/")
(setq auto-insert-alist
(append '((sgml-mode . "sgml-insert.sgml"))
auto-insert-alist))
A questo punto potete scrivere nel file ~/emacs/sgml-insert.sgml il
vostro header personalizzato, quindi riavviare Emacs e aprire qualche
nuovo file .sgml. Emacs dovrebbe chiedervi la conferma per
l'inserimento automatico, e se rispondete 'Yes', inserire il nuovo
header.
6.1.2.
Avviando una routine
Questo funziona come prima, ma invece di impostare la auto-insert-
alist in un file da inserire, dovete impostare una funzione da
eseguire. Questo il procedimento, assumendo come esempio che volete
scrivere una funziona in un file chiamato ~/emacs/sgml-header.el (non
il caso di appesantire il vostro .emacs con questo tipo di funzioni,
oppure diventer troppo grande):
(add-hook 'find-file-hooks 'auto-insert)
(load-library "autoinsert")
(add-to-list 'load-path "~/emacs")
(load-library "sgml-header")
(setq auto-insert-alist
(append '(((sgml-mode . "SGML Mode") . insert-sgml-header))
auto-insert-alist))
Troverete nella ``appendice'' un esempio di una funzione insert-sgml-
header.
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))
(goto-char point-beginning)
))))
|