Spell check XML files without VIM syntax problems

I’ve been using XMLMind’s XML Editor lately to write some documentation in the Docbook XML format. The editor has very good support and I’m very glad to be using it. There’s one catch though, and it’s to do with the spell check support. XMLMind have implemented their own system for which there are no Greek dictionaries available. Not having the time to go and create one myself I looked at other solutions.

I have the Hunspell dictionaries on my system anyway but the command line program that comes with Hunspell garbles Greek characters in the terminal. I don’t know what that’s about and Google didn’t come up with any quick solutions. So my next try was using spell check support in VIM 7 and after a bit of trial and error I’m happy with the result. So here’s what I did:

  1. Download a Myspell compatible Greek dictionary word list and affix file, either the original one by Steve Stavropoulos or the one by Dimitrios Gianitsaros which combines the Greek words and English words as well as provides for Greek fully capitalized words with no accents.
  2. :mkspell el /path/to/hunspell/dictionaries/el_GR
  3. make sure the resulting .spl file gets copied to ~/.vim/spell
  4. create the file ~/.vim/after/syntax/xml.vim as described below.
  5. Open an XML file and execute :set spell spelllang=el,en or something to that effect.

One little problem with spell checking XML files in VIM is that the syntax highlighting interferes in a sub-optimal way. For example by default the text content of elements is not spell checked. Another example is that URL’s in href and xmlns attributes are reported as mistakes. These problems can be solved by the following syntax commands:

syn match xmlHref +href="[^"]*"+ contained contains=xmlAttrib,@NoSpell
syn match xmlXmlns +xmlns\(:[a-z]*\)\?="[^"]*"+ contained contains=xmlAttrib,@NoSpell
syn cluster xmlStartTagHook add=xmlHref
syn cluster xmlStartTagHook add=xmlXmlns
syn spell toplevel

Now you should be good to go with spell checking XML in VIM. Another little detail about my work-flow is that I have configured gvim as a helper application in XMLMind XML Editor and that permits me to type “Ctrl-Shift-D” while editing an XML file and get the file opened in VIM ready to be spell checked. After my corrections the file is reloaded in the XML editor.

Vote for me!

Σε αυτές τις εκλογές στον Δήμο Αθηναίων είμαι, ως μέλος της δημοτικής κίνησης «Πορτοκαλί», υποψήφιος με τον συνδυασμό «Δικαίωμα στην Πόλη» του Γιώργου Καμίνη . Ως υποψήφιος κοινοτικός (διαμερισματικός) σύμβουλος της 1ης Δημοτικής Κοινότητας του Δήμου το όνομα μου εμφανίζεται μόνο στο ψηφοδέλτιο του 1ου δημοτικού διαμερίσματος. Ωστόσο όσοι δεν ψηφίζετε στο 1ο Δημοτικό Διαμέρισμα  (μάθετε που ψηφίζετε εδώ) μπορεί να ενδιαφερθείτε για τους υπόλοιπους υποψήφιους του «Πορτοκαλί» εδώ.Ψηφοδελτιο 1ης Δημ. Κοινοτητας Αθηναιων

Στόχος της υποψηφιότητας μου είναι να προωθήσω εκείνες τις πολιτικές που θα κάνουν τον Δήμο μέρος της λύσης και όχι μέρος των αστικών προβλημάτων όσων ζούνε μόνιμα ή περνούν περιστασιακά μερικές ώρες στην πόλη μας. Βασική προϋπόθεση είναι ο έμπρακτος σεβασμός στις αρχές της λογοδοσίας και της διαφάνειας και φυσικά ο πλήρης σεβασμός των ατομικών δικαιωμάτων του κάθε ανθρώπου που βρίσκεται εντός του Δήμου, ανεξάρτητα της εθνικότητας, της θρησκείας και των προσωπικών του προτιμήσεων σε κάθε τομέα της ζωής του. Επίσης βασική προϋπόθεση είναι και η μείωση του μεγέθους του Δήμου, κόβοντας την διάθεση των υπέρογκων δημοτικών τελών σε άχρηστες και παρασιτικές δραστηριότητες, την μείωση τους και την αποτελεσματική χρήση του εναπομείναντος κλάσματος σε έργα που ωφελούν το σύνολο.

Μπορείτε να διαβάσετε περισσότερα για τις θέσεις του Πορτοκαλί εδώ και για το πρόγραμμα του συνδυασμού «Δικαίωμα στην Πόλη» εδώ.

Η ψήφος και η βοήθεια σας θα μας τιμούσε ιδιαιτέρως!