xref: /vim-8.2.3635/runtime/ftplugin/clojure.vim (revision baca7f70)
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