1fa13eef3SBram Moolenaar" Vim filetype plugin file 2fa13eef3SBram Moolenaar" Language: Clojure 3fa13eef3SBram Moolenaar" Author: Meikel Brandmeyer <[email protected]> 4fa13eef3SBram Moolenaar" 5fa13eef3SBram Moolenaar" Maintainer: Sung Pae <[email protected]> 6fa13eef3SBram Moolenaar" URL: https://github.com/guns/vim-clojure-static 7fa13eef3SBram Moolenaar" License: Same as Vim 8*baca7f70SBram Moolenaar" Last Change: 08 September 2013 9fa13eef3SBram Moolenaar 10fa13eef3SBram Moolenaarif exists("b:did_ftplugin") 11fa13eef3SBram Moolenaar finish 12fa13eef3SBram Moolenaarendif 13fa13eef3SBram Moolenaarlet b:did_ftplugin = 1 14fa13eef3SBram Moolenaar 15fa13eef3SBram Moolenaarlet s:cpo_save = &cpo 16fa13eef3SBram Moolenaarset cpo&vim 17fa13eef3SBram Moolenaar 18*baca7f70SBram Moolenaarlet b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring<' 19*baca7f70SBram Moolenaar 20*baca7f70SBram Moolenaarsetlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$ 21fa13eef3SBram Moolenaar 22fa13eef3SBram Moolenaar" There will be false positives, but this is better than missing the whole set 23fa13eef3SBram Moolenaar" of user-defined def* definitions. 24fa13eef3SBram Moolenaarsetlocal define=\\v[(/]def(ault)@!\\S* 25fa13eef3SBram Moolenaar 26fa13eef3SBram Moolenaar" Remove 't' from 'formatoptions' to avoid auto-wrapping code. The '+=croql' 27fa13eef3SBram Moolenaar" is standard ftplugin boilerplate, although it is arguably intrusive. 28fa13eef3SBram Moolenaarsetlocal formatoptions-=t formatoptions+=croql 29fa13eef3SBram Moolenaar 30fa13eef3SBram Moolenaar" Lisp comments are routinely nested (e.g. ;;; SECTION HEADING) 31fa13eef3SBram Moolenaarsetlocal comments=n:; 32fa13eef3SBram Moolenaarsetlocal commentstring=;\ %s 33fa13eef3SBram Moolenaar 34fa13eef3SBram Moolenaar" Provide insert mode completions for special forms and clojure.core. As 35fa13eef3SBram Moolenaar" 'omnifunc' is set by popular Clojure REPL client plugins, we also set 36fa13eef3SBram Moolenaar" 'completefunc' so that the user has some form of completion available when 37fa13eef3SBram Moolenaar" 'omnifunc' is set and no REPL connection exists. 38fa13eef3SBram Moolenaarfor s:setting in ['omnifunc', 'completefunc'] 39fa13eef3SBram Moolenaar if exists('&' . s:setting) && empty(eval('&' . s:setting)) 40fa13eef3SBram Moolenaar execute 'setlocal ' . s:setting . '=clojurecomplete#Complete' 41fa13eef3SBram Moolenaar let b:undo_ftplugin .= ' | setlocal ' . s:setting . '<' 42fa13eef3SBram Moolenaar endif 43fa13eef3SBram Moolenaarendfor 44fa13eef3SBram Moolenaar 45fa13eef3SBram Moolenaar" Take all directories of the CLOJURE_SOURCE_DIRS environment variable 46fa13eef3SBram Moolenaar" and add them to the path option. 47fa13eef3SBram Moolenaar" 48fa13eef3SBram Moolenaar" This is a legacy option for VimClojure users. 49fa13eef3SBram Moolenaarif exists('$CLOJURE_SOURCE_DIRS') 50fa13eef3SBram Moolenaar for s:dir in split($CLOJURE_SOURCE_DIRS, (has("win32") || has("win64")) ? ';' : ':') 51fa13eef3SBram Moolenaar let s:dir = fnameescape(s:dir) 52fa13eef3SBram Moolenaar " Whitespace escaping for Windows 53fa13eef3SBram Moolenaar let s:dir = substitute(s:dir, '\', '\\\\', 'g') 54fa13eef3SBram Moolenaar let s:dir = substitute(s:dir, '\ ', '\\ ', 'g') 55fa13eef3SBram Moolenaar execute "setlocal path+=" . s:dir . "/**" 56fa13eef3SBram Moolenaar endfor 57fa13eef3SBram Moolenaar let b:undo_ftplugin .= ' | setlocal path<' 58fa13eef3SBram Moolenaarendif 59fa13eef3SBram Moolenaar 60fa13eef3SBram Moolenaar" Skip brackets in ignored syntax regions when using the % command 61fa13eef3SBram Moolenaarif exists('loaded_matchit') 62fa13eef3SBram Moolenaar let b:match_words = &matchpairs 63fa13eef3SBram Moolenaar let b:match_skip = 's:comment\|string\|regex\|character' 64fa13eef3SBram Moolenaar let b:undo_ftplugin .= ' | unlet! b:match_words b:match_skip' 65fa13eef3SBram Moolenaarendif 66fa13eef3SBram Moolenaar 67fa13eef3SBram Moolenaar" Win32 can filter files in the browse dialog 68fa13eef3SBram Moolenaarif has("gui_win32") && !exists("b:browsefilter") 69fa13eef3SBram Moolenaar let b:browsefilter = "Clojure Source Files (*.clj)\t*.clj\n" . 70fa13eef3SBram Moolenaar \ "ClojureScript Source Files (*.cljs)\t*.cljs\n" . 71fa13eef3SBram Moolenaar \ "Java Source Files (*.java)\t*.java\n" . 72fa13eef3SBram Moolenaar \ "All Files (*.*)\t*.*\n" 73fa13eef3SBram Moolenaar let b:undo_ftplugin .= ' | unlet! b:browsefilter' 74fa13eef3SBram Moolenaarendif 75fa13eef3SBram Moolenaar 76fa13eef3SBram Moolenaarlet &cpo = s:cpo_save 77fa13eef3SBram Moolenaar 78fa13eef3SBram Moolenaarunlet! s:cpo_save s:setting s:dir 79fa13eef3SBram Moolenaar 80*baca7f70SBram Moolenaar" vim:sts=8:sw=8:ts=8:noet 81