Emacs e SICStus
Obbiettivo
Lo scopo di questa documentazione � quello di installare e configurare un ambiente integrato e completamente
personalizzabile per la programmazione PROLOG. L'ambiente � basato sull'editor Emacs (chiamarlo editor � forse un po'
limitativo) e sul compilatore/interprete PROLOG SICStus. Questo tutorial l'ho creato utilizzando Emacs 21.1 e SICStus
3.8.2 su sistema operativo Windows XP professional ed. ma � facilmente adattabile ad altre piattaforme e versioni.
Prerequisiti
- Installazione di Emacs
- Download del file emacs-XX.X-bin-i386.tar.gz (12Mb circa) ftp://ftp.gnu.org/gnu/windows/emacs/ (in caso di congestione �
meglio cercare in un sito FTP mirror)
- Scompattare il file nella cartella di installazione definitiva
- Eseguire il programma bin/addpm.exe per completare l'installazione e creare i
collegamenti nel men� di avvio
- Installazione di SICStus
- Scaricare ed installare il pacchetto autoestraente dal sito del corso di linguaggi simbolici
Configurazione
Per prima cosa compiliamo i file lisp gi� presenti in SICStus per comunicare con Emacs:
- Eseguiamo Emacs
(il simbolo M-x corrisponde alla combinazione di tasti Alt-X)
- M-x byte-compile-file [invio] c:/Programmi/SICStus Prolog/emacs/pltrace.el [invio]
- M-x byte-compile-file [invio] c:/Programmi/SICStus Prolog/emacs/prolog.el [invio]
- M-x byte-compile-file [invio] c:/Programmi/SICStus Prolog/emacs/sicstus-support.el [invio]
(modificare c:/Programmi/SICStus Prolog con la corretta directory di installazione; si puo'
utilizzare l'autocoposizione mediante il tasto [TAB])
Settare le seguenti variabili di ambiente (per sist.op. Win NT/2000/XP: Pannello di controllo->Sistema->Avanzate->Variabili
d'ambiente)
- HOME -> La vostra home directory preferita (ad es. c:/home)
- EPROLOG -> C:\Programmi\SICStus Prolog\bin\sicstus.exe (impostate la directory giusta)
- INFOPATH -> C:\Programmi\SICStus Prolog\doc\info (impostate la directory giusta)
Crea (nella tu directory settata con HOME) ed edita il file _emacs aggiungendo:
(global-font-lock-mode t) ; GNU Emacs
(setq font-lock-maximum-decoration t)
(setq load-path (cons (expand-file-name "C:/Programmi/SICStus Prolog/emacs") load-path))
(autoload 'run-prolog "prolog" "Start a Prolog sub-process." t)
(autoload 'prolog-mode "prolog" "Major mode for editing Prolog programs." t)
(setq prolog-use-sicstus-sd t)
(setq prolog-align-comments-flag t)
(setq prolog-indent-width 3)
(setq prolog-electric-dot-flag t)
(setq prolog-electric-underscore-flag t)
(setq auto-mode-alist (cons '("\\.pl$" . prolog-mode) auto-mode-alist))
(Ricordarsi di editare la terza riga inserendo la directory corretta)
Utilizzo
Se si fanno programmi su piu' moduli e' utile iniziare i file con:
%%% -*- Mode: Prolog; Module: ModuleName; -*-
Per avere il Source level debugging durante i trace dei programmi:
(men� di Emacs con un file prolog aperto) -> Prolog -> Source level debugging -> Active
Finalmente, per vedere girare SICStus dentro Emacs: (C-c equivale a [CTRL-c], C-u a [CTRL-u])
C-c [invio] per lanciarlo
C-u C-c [invio] per riavviarlo
Infine una serie di comandi emacs utili.
C-c C-f Consult file
C-c C-b Consult buffer
C-c C-r Consult region
C-c C-p Consult predicate
C-c C-c f Compile file
C-c C-c b Compile buffer
C-c C-c r Compile region
C-c C-c p Compile predicate
M-n Go to the next clause.
M-p Go to the previous clause.
M-a Go to beginning of clause.
M-e Go to end of clause.
M-C-c Mark clause.
M-C-a Go to beginning of predicate.
M-C-e Go to end of predicate.
M-C-h Mark predicate.
M-{ Go to the previous paragraph (i.e. empty line).
M-} Go to the next paragraph (i.e. empty line).
M-h Mark paragraph.
M-C-n Go to matching right parenthesis.
M-C-p Go to matching left parenthesis.
M-; Crea un commento a comment-column
C-c C-t Enable tracing
C-u C-c C-t Disable tracing
C-c C-d disable debugging
C-u C-c C-d enable debugging
C-c C-z enable zipping
C-u C-c C-z disable zipping
C-x SPC set a line breakpoint
C-u C-x SPC remove a line breakpoint
C-c C-s Insert the PredSpec of the current predicate into the code.
C-c C-n Insert the name of the current predicate into the code.
C-c C-v a Convert all variables in a region to anonymous variables.
C-c ? Help on predicate.
Filippo Vitale (@filippovitale) - 2 Gennaio 2002 (versione 1.0)