LPC mit vim

Zum Programmieren in LPC nutze ich den Editor vim . Der kann zwar gut mit C umgehen, für LPC hingegen muss man ihn erst einmal bändigen. Folgende kurze Anleitung dient dazu, vim in der Version > 7 inkl. der omni-completion einzurichten.

Die Anleitung geht davon aus, dass man UNIX oder ein Derivat wie Linux nutzt.

tags generieren

Damit vim überhaupt weiß, welche Funktionen in der Mudlib, muss als erstes ein kompatibles tag-File generiert werden. Hierzu benötigt man das Programm ctags. Für die Anleitung wurde die Version 5.7 genutzt.

Der Aufruf exuberant-ctags -R --extra=-f --format=1 (gegebenenfalls heißt das Programm auch nur ctags oder ctags-exuberant (Debian) ) im Mudlibverzeichnis generiert ein solches File mit dem Namen tags. (Da ctags leider nicht hundertprozentig mit der Mudlib zurecht kommt, gibt es diverse False-Positives, wie z.B. defines, welche man leider händisch aus der Datei entfernen muss.)
Den Aufbau des Files erkläre ich jetzt nicht, dazu gibt es ja die Hilfeseite zu lesen. Diese Datei kann man entweder im Mudlib-Verzeichnis liegen lassen oder z.B. nach $HOME/.vim kopieren. Ich gehe im folgenden von letzterem aus.

.vimrc-Einstellungen

Nun muss man vim noch sagen, in welchem File die tags zu finden sind. Dazu editiert man die .vimrc und fügt folgendes hinzu:

.vimrc
1
2
set tags+=~/.vim/tags
set omnifunc=lpccomplete#Complete

Da man eh schon gerade dabei ist, kann man noch einige andere Sachen konfigurieren, um das Arbeiten mit vim so angenehm wie möglich erscheinen zu lassen, in Form von Code-Einrückung etc.

.vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
" automatic switch to filetype lpc when insinde the mudlib-directory
autocmd BufNewFile,BufRead /Pfad/zur Mudlib/*.[c|h]
  \set filetype=lpc

" indenting
set autoindent
set smartindent
set autoread
set cindent
set cino+=>2e2n2:2l1j1

" wrap lines after 78 characters
set textwidth=78

Als nächstes legt man unter $HOME/.vim ein Verzeichnis namens autoload an. Dorthin kopiert ihr die Datei ccomplete.vim und benennt sie gleich in lpccomplete.vim um. Bei mir liegt diese Datei unter /usr/share/vim/vim71/autoload. Zur Not einfach den hoffentlich vorhandenen Paketmanager fragen, wo vim installiert ist. Die Datei muss dann auch gleich in den Editor geladen und die Zeilefunction! ccomplete#Complete(findstart, base) gegen function! lpccomplete#Complete(findstart, base) ersetzen werden.

omni-completion

Jetzt sollte der vim alles haben, um einen bei der Arbeit zu unterstützen. Testen kann man das ganz einfach, in dem man in das Mudlibverzeichnis wechselt und dort ein beliebiges File öffnet.

Nehmen wir an, wir möchten die Funktion QueryCoinsPerUnits nutzen. Man schreibt nun die ersten Buchstaben der Funktion und drückt dann CTRL+x CTRL+O. Nun sollte eine Liste wie in der Abbildung erscheinen.

Omni-Completion in vim In der Liste kann man mittels CTRL+n und CTRL+p vor und zurück springen.