On Fri, Aug 19, 2011 at 05:28:09PM +0300, Dan Frincu wrote: > Hi, > > On Thu, Aug 18, 2011 at 5:53 PM, Digimer <li...@alteeve.com> wrote: > > On 08/18/2011 10:39 AM, Trevor Hemsley wrote: > >> Hi all > >> > >> I have attached a first stab at a vim syntax highlighting file for 'crm > >> configure edit' > >> > >> To activate this, I have added 'filetype plugin on' to my /root/.vimrc > >> then created /root/.vim/{ftdetect,ftplugin}/pcmk.vim > >> > >> In /root/.vim/ftdetect/pcmk.vim I have the following content > >> > >> au BufNewFile,BufRead /tmp/tmp* set filetype=pcmk > >> > >> but there may be a better way to make this happen. /root/.vim/pcmk.vim > >> is the attached file. > >> > >> Comments (not too nasty please!) welcome. > > I've added a couple of extra keywords to the file, to cover a couple > more use cases. Other than that, great job. > > Regards, > Dan > > > > > I would love to see proper support added for CRM syntax highlighting > > added to vim. I will give this is a test and write back in a bit. > > > > -- > > Digimer
Cool. I remember that I had some initial attempt about a year ago myself writing some vim syntax file, I attach as pacemaker-crm.vim. (took me some minutes to dig it up again). I did not really look at the current pcmk.vim, just tried it, and apparently it does not attempt to give the user hints for common errors, or at least not for those I do most commonly. If you use the pacemaker-crm.vim (which I attached), it would highlight a few things as error, like spurious space after backslash, spurious backslash before new primitive definition, forgetting the colon after an order or colocation score, all these things. It is incomplete, and I don't even know anymore what I thought when I wrote it, it was never in active use, and I won't have time do actually work on this myself. I may or may not be able to answer questions ;-) Not perfect, either. Probably "detects" much more errors than necessary, and does not detect some that would be nice to have detected. (brace errors, quotation errors ...) But if there should be some vim syntax wizard out there, maybe our two attempts on doing it can somehow be merged. I'll just throw it at you, feel free to ignore, or reuse (parts) of it. Cheers, Lars -- : Lars Ellenberg : LINBIT | Your Way to High Availability : DRBD/HA support and consulting http://www.linbit.com
" Vim syntax file " Language: pacemaker-crm configuration style (http://www.clusterlabs.org/doc/crm_cli.html) "" Filename: pacemaker-crm.vim "" Language: pacemaker crm configuration text "" Maintainer: Lars Ellenberg <l...@linbit.com> "" Last Change: Thu, 18 Feb 2010 16:04:36 +0100 "What to do to install this file: " $ mkdir -p ~/.vim/syntax " $ cp pacemaker-crm.vim ~/.vim/syntax " to set the filetype manually, just do :setf pacemaker-crm " TODO: autodetection logic, maybe " augroup filetypedetect " au BufNewFile,BufRead *.pacemaker-crm setf pacemaker-crm " augroup END " "If you do not already have a .vimrc with syntax on then do this: " $ echo "syntax on" >>~/.vimrc " "Now every file with a filename matching *.pacemaker-crm will be edited "using these definitions for syntax highlighting. " TODO: maybe add some indentation rules as well? " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded "if version < 600 " syntax clear "elseif exists("b:current_syntax") " finish "endif syn clear syn sync lines=30 syn case ignore syn match crm_unexpected /[^ ]\+/ syn match crm_lspace transparent /^[ \t]*/ nextgroup=crm_node,crm_container,crm_head syn match crm_tspace_err /\\[ \t]\+/ syn match crm_tspace_err /\\\n\(primitive\|node\|group\|ms\|order\|location\|colocation\|property\).*/ syn match crm_node transparent /\<node \$id="[^" ]\+" \([a-z0-9.-]\+\)\?/ \ contains=crm_head,crm_assign,crm_nodename \ nextgroup=crm_block syn region crm_block transparent keepend contained start=/[ \t]/ skip=/\\$/ end=/$/ \ contains=crm_assign,crm_key,crm_meta,crm_tspace_err,crm_ops syn region crm_order_block transparent keepend contained start=/[ \t]/ skip=/\\$/ end=/$/ \ contains=crm_order_ref syn region crm_colo_block transparent keepend contained start=/[ \t]/ skip=/\\$/ end=/$/ \ contains=crm_colo_ref syn region crm_meta transparent keepend contained start=/[ \t]meta\>/ skip=/\\$/ end=/$/ end=/[ \t]\(params\|op\)[ \t]/ \ contains=crm_key,crm_meta_assign syn keyword crm_container contained group clone ms nextgroup=crm_id syn keyword crm_head contained node syn keyword crm_head contained property nextgroup=crm_block syn keyword crm_head contained primitive nextgroup=crm_res_id syn keyword crm_head contained location nextgroup=crm_id syn match crm_id contained nextgroup=crm_ref,crm_block /[ \t]\+\<[a-z0-9_-]\+\>/ syn keyword crm_head contained colocation nextgroup=crm_colo_id syn match crm_colo_id contained nextgroup=crm_colo_score /[ \t]\+\<[a-z0-9_-]\+\>/ syn match crm_colo_score contained nextgroup=crm_colo_block /[ \t]\+\(-\?inf\|mandatory\|advisory\|#[a-z0-9_-]\+\|[0-9]\+\):/he=e-1 syn keyword crm_head contained order nextgroup=crm_order_id syn match crm_order_id contained nextgroup=crm_order_score /[ \t]\+\<[a-z0-9_-]\+\>/ syn match crm_order_score contained nextgroup=crm_order_block /[ \t]\+\(-\?inf\|mandatory\|advisory\|#[a-z0-9_-]\+\|[0-9]\+\):/he=e-1 syn match crm_ref contained nextgroup=crm_ref,crm_block /[ \t]\+\<[a-z0-9_-]\+\>/ syn match crm_ref contained /[ \t]\+\<[a-z0-9_-]\+\>$/ syn match crm_order_ref contained /[ \t]\+\<[a-z0-9_-]\+\>\(:\(start\|stop\|promote\|demote\)\)\?/ contains=crm_ops syn match crm_colo_ref contained /[ \t]\+\<[a-z0-9_-]\+\>\(:\(Slave\|Master\|Started\)\)\?/ contains=crm_roles syn match crm_res_id contained /[ \t]\+\<[a-z0-9_-]\+\>/ nextgroup=crm_RA syn match crm_RA contained /[ \t]\+\<\(ocf:[a-z0-9_-]\+\|heartbeat\|lsb\):[a-z0-9_-]\+\>/ \ contains=crm_ra_class,crm_ocf_vendor \ nextgroup=crm_block syn match crm_ra_class contained /[ \t]\(ocf\|heartbeat\|lsb\)/ syn keyword crm_ocf_vendor contained heartbeat pacemaker linbit syn keyword crm_key contained attributes params meta op operations date attributes rule syn keyword crm_roles contained Master Slave Started syn match crm_nodename contained / [a-z0-9.-]\+\>/ " crm_ops: match, not keyword, to avoid highlighting it inside attribute names syn match crm_ops contained /\(start\|stop\|monitor\|promote\|demote\)/ syn match crm_assign transparent contained \ /[ \t]\(\$\(id\|role\|id-ref\)\|[a-z0-9_-]\+\)=\("[^"\n]*"\|[^" ]\+\([ \t]\|$\)\)/ms=s+1,me=e-1 \ contains=crm_attr_name,crm_attr_value syn match crm_meta_assign transparent contained \ /[ \t]\(\$\(id\|role\|id-ref\)\|[a-z0-9_-]\+\)=\("[^"\n]*"\|[^" ]\+\([ \t]\|$\)\)/ms=s+1,me=e-1 \ contains=crm_mattr_name,crm_attr_value syn match crm_attr_name contained /[^=]\+=/me=e-1 syn match crm_mattr_name contained /[^=]\+=/me=e-1 contains=crm_m_err syn match crm_m_err contained /_/ syn match crm_attr_value contained /=\("[^"\n]*"\|[^" ]\+\)/ms=s+1 if !exists("did_dic_syntax_inits") "let did_dic_syntax_inits = 1 hi link crm_container Keyword hi link crm_head Keyword hi link crm_key Keyword hi link crm_id Type hi link crm_colo_id Type hi link crm_order_id Type hi link crm_colo_score Special hi link crm_order_score Special hi link crm_ref Identifier hi link crm_colo_ref Identifier hi link crm_order_ref Identifier hi link crm_res_id Identifier hi link crm_nodename Identifier hi link crm_attr_name Identifier hi link crm_mattr_name Identifier hi link crm_tspace_err Error hi link crm_m_err Error hi link crm_attr_value String hi link crm_RA Function hi link crm_ra_class keyword hi link crm_ocf_vendor Type hi link crm_unexpected Error hi link crm_ops Special hi link crm_roles Special endif
_______________________________________________ Pacemaker mailing list: Pacemaker@oss.clusterlabs.org http://oss.clusterlabs.org/mailman/listinfo/pacemaker Project Home: http://www.clusterlabs.org Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf Bugs: http://bugs.clusterlabs.org