1071d4279SBram Moolenaar" Vim filetype plugin file 2071d4279SBram Moolenaar" Language: Abaqus finite element input file (www.abaqus.com) 3071d4279SBram Moolenaar" Maintainer: Carl Osterwisch <[email protected]> 4*9a7224b5SBram Moolenaar" Last Change: 2012 Apr 30 5071d4279SBram Moolenaar 6071d4279SBram Moolenaar" Only do this when not done yet for this buffer 7071d4279SBram Moolenaarif exists("b:did_ftplugin") | finish | endif 8071d4279SBram Moolenaar 9071d4279SBram Moolenaar" Don't load another plugin for this buffer 10071d4279SBram Moolenaarlet b:did_ftplugin = 1 11071d4279SBram Moolenaar 12071d4279SBram Moolenaar" Save the compatibility options and temporarily switch to vim defaults 13071d4279SBram Moolenaarlet s:cpo_save = &cpoptions 14071d4279SBram Moolenaarset cpoptions&vim 15071d4279SBram Moolenaar 16071d4279SBram Moolenaar" Set the format of the include file specification for Abaqus 17071d4279SBram Moolenaar" Used in :check gf ^wf [i and other commands 18071d4279SBram Moolenaarsetlocal include=\\<\\cINPUT\\s*= 19071d4279SBram Moolenaar 20071d4279SBram Moolenaar" Remove characters up to the first = when evaluating filenames 21071d4279SBram Moolenaarsetlocal includeexpr=substitute(v:fname,'.\\{-}=','','') 22071d4279SBram Moolenaar 238299df96SBram Moolenaar" Remove comma from valid filename characters since it is used to 248299df96SBram Moolenaar" separate keyword parameters 258299df96SBram Moolenaarsetlocal isfname-=, 268299df96SBram Moolenaar 27071d4279SBram Moolenaar" Define format of comment lines (see 'formatoptions' for uses) 28071d4279SBram Moolenaarsetlocal comments=:** 29071d4279SBram Moolenaarsetlocal commentstring=**%s 30071d4279SBram Moolenaar 31071d4279SBram Moolenaar" Definitions start with a * and assign a NAME, NSET, or ELSET 32071d4279SBram Moolenaar" Used in [d ^wd and other commands 33071d4279SBram Moolenaarsetlocal define=^\\*\\a.*\\c\\(NAME\\\|NSET\\\|ELSET\\)\\s*= 34071d4279SBram Moolenaar 35071d4279SBram Moolenaar" Abaqus keywords and identifiers may include a - character 36071d4279SBram Moolenaarsetlocal iskeyword+=- 37071d4279SBram Moolenaar 385c73622aSBram Moolenaarlet b:undo_ftplugin = "setlocal include< includeexpr< isfname<" 395c73622aSBram Moolenaar \ . " comments< commentstring< define< iskeyword<" 405c73622aSBram Moolenaar 415c73622aSBram Moolenaarif has("folding") 425c73622aSBram Moolenaar " Fold all lines that do not begin with * 435c73622aSBram Moolenaar setlocal foldexpr=getline(v:lnum)[0]!=\"\*\" 445c73622aSBram Moolenaar setlocal foldmethod=expr 455c73622aSBram Moolenaar let b:undo_ftplugin .= " foldexpr< foldmethod<" 465c73622aSBram Moolenaarendif 475c73622aSBram Moolenaar 48071d4279SBram Moolenaar" Set the file browse filter (currently only supported under Win32 gui) 49071d4279SBram Moolenaarif has("gui_win32") && !exists("b:browsefilter") 50071d4279SBram Moolenaar let b:browsefilter = "Abaqus Input Files (*.inp *.inc)\t*.inp;*.inc\n" . 51071d4279SBram Moolenaar \ "Abaqus Results (*.dat)\t*.dat\n" . 52071d4279SBram Moolenaar \ "Abaqus Messages (*.pre *.msg *.sta)\t*.pre;*.msg;*.sta\n" . 53071d4279SBram Moolenaar \ "All Files (*.*)\t*.*\n" 54*9a7224b5SBram Moolenaar let b:undo_ftplugin .= "|unlet! b:browsefilter" 55071d4279SBram Moolenaarendif 56071d4279SBram Moolenaar 575c73622aSBram Moolenaar" Define patterns for the matchit plugin 585c73622aSBram Moolenaarif exists("loaded_matchit") && !exists("b:match_words") 595c73622aSBram Moolenaar let b:match_ignorecase = 1 605c73622aSBram Moolenaar let b:match_words = 615c73622aSBram Moolenaar \ '\*part:\*end\s*part,' . 625c73622aSBram Moolenaar \ '\*assembly:\*end\s*assembly,' . 635c73622aSBram Moolenaar \ '\*instance:\*end\s*instance,' . 645c73622aSBram Moolenaar \ '\*step:\*end\s*step' 65*9a7224b5SBram Moolenaar let b:undo_ftplugin .= "|unlet! b:match_ignorecase b:match_words" 665c73622aSBram Moolenaarendif 675c73622aSBram Moolenaar 685c73622aSBram Moolenaar" Define keys used to move [count] keywords backward or forward. 695c73622aSBram Moolenaarnoremap <silent><buffer> [[ ?^\*\a<CR>:nohlsearch<CR> 705c73622aSBram Moolenaarnoremap <silent><buffer> ]] /^\*\a<CR>:nohlsearch<CR> 71071d4279SBram Moolenaar 72071d4279SBram Moolenaar" Define key to toggle commenting of the current line or range 735c73622aSBram Moolenaarnoremap <silent><buffer> <LocalLeader><LocalLeader> 745c73622aSBram Moolenaar \ :call <SID>Abaqus_ToggleComment()<CR>j 75071d4279SBram Moolenaarfunction! <SID>Abaqus_ToggleComment() range 76071d4279SBram Moolenaar if strpart(getline(a:firstline), 0, 2) == "**" 77071d4279SBram Moolenaar " Un-comment all lines in range 78071d4279SBram Moolenaar silent execute a:firstline . ',' . a:lastline . 's/^\*\*//' 79071d4279SBram Moolenaar else 80071d4279SBram Moolenaar " Comment all lines in range 81071d4279SBram Moolenaar silent execute a:firstline . ',' . a:lastline . 's/^/**/' 82071d4279SBram Moolenaar endif 83071d4279SBram Moolenaarendfunction 84071d4279SBram Moolenaar 855c73622aSBram Moolenaarlet b:undo_ftplugin .= "|unmap <buffer> [[|unmap <buffer> ]]" 865c73622aSBram Moolenaar \ . "|unmap <buffer> <LocalLeader><LocalLeader>" 875c73622aSBram Moolenaar 88*9a7224b5SBram Moolenaar" Undo must be done in nocompatible mode for <LocalLeader>. 89*9a7224b5SBram Moolenaarlet b:undo_ftplugin = "let s:cpo_save = &cpoptions|" 90*9a7224b5SBram Moolenaar \ . "set cpoptions&vim|" 91*9a7224b5SBram Moolenaar \ . b:undo_ftplugin 92*9a7224b5SBram Moolenaar \ . "|let &cpoptions = s:cpo_save" 93*9a7224b5SBram Moolenaar \ . "|unlet s:cpo_save" 94*9a7224b5SBram Moolenaar 95071d4279SBram Moolenaar" Restore saved compatibility options 96071d4279SBram Moolenaarlet &cpoptions = s:cpo_save 9784f7235bSBram Moolenaarunlet s:cpo_save 98