| 
									
										
										
										
											2013-09-22 14:42:24 +02:00
										 |  |  | " Vim filetype plugin | 
					
						
							|  |  |  | " Language:	J | 
					
						
							| 
									
										
										
										
											2019-11-17 15:55:14 +01:00
										 |  |  | " Maintainer:	David Bürgin <dbuergin@gluet.ch> | 
					
						
							|  |  |  | " URL:		https://gitlab.com/glts/vim-j | 
					
						
							|  |  |  | " Last Change:	2015-10-27 | 
					
						
							| 
									
										
										
										
											2013-09-22 14:42:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-22 21:02:50 +01:00
										 |  |  | if exists('b:did_ftplugin') | 
					
						
							| 
									
										
										
										
											2013-09-22 14:42:24 +02:00
										 |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | let b:did_ftplugin = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | let s:save_cpo = &cpo | 
					
						
							|  |  |  | set cpo&vim | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-13 23:21:27 +02:00
										 |  |  | setlocal iskeyword=48-57,A-Z,a-z,_ | 
					
						
							| 
									
										
										
										
											2013-09-22 14:42:24 +02:00
										 |  |  | setlocal comments=:NB. | 
					
						
							|  |  |  | setlocal commentstring=NB.\ %s | 
					
						
							| 
									
										
										
										
											2013-11-03 21:14:31 +01:00
										 |  |  | setlocal formatoptions-=t | 
					
						
							|  |  |  | setlocal matchpairs=(:) | 
					
						
							| 
									
										
										
										
											2015-10-13 23:21:27 +02:00
										 |  |  | setlocal path-=/usr/include | 
					
						
							| 
									
										
										
										
											2013-09-22 14:42:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-13 23:21:27 +02:00
										 |  |  | " Includes. To make the shorthand form "require 'web/cgi'" work, double the | 
					
						
							|  |  |  | " last path component. Also strip off leading folder names like "~addons/". | 
					
						
							|  |  |  | setlocal include=\\v^\\s*(load\|require)\\s*'\\zs\\f+\\ze' | 
					
						
							|  |  |  | setlocal includeexpr=substitute(substitute(tr(v:fname,'\\','/'),'\\v^[^~][^/.]*(/[^/.]+)$','&\\1',''),'\\v^\\~[^/]+/','','') | 
					
						
							|  |  |  | setlocal suffixesadd=.ijs | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-17 15:55:14 +01:00
										 |  |  | let b:undo_ftplugin = 'setlocal suffixesadd< includeexpr< include< path< matchpairs< formatoptions< commentstring< comments< iskeyword<' | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Section movement with ]] ][ [[ []. The start/end patterns below are amended | 
					
						
							|  |  |  | " inside the function in order to avoid matching on the current cursor line. | 
					
						
							| 
									
										
										
										
											2015-01-14 19:42:21 +01:00
										 |  |  | let s:sectionstart = '\%(\s*Note\|.\{-}\<\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\)\>.*' | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | let s:sectionend = '\s*)\s*' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function! s:SearchSection(end, backwards, visualmode) abort | 
					
						
							|  |  |  |   if a:visualmode !=# '' | 
					
						
							|  |  |  |     normal! gv | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2015-01-14 19:42:21 +01:00
										 |  |  |   let l:flags = a:backwards ? 'bsW' : 'sW' | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  |   if a:end | 
					
						
							| 
									
										
										
										
											2015-01-14 19:42:21 +01:00
										 |  |  |     call search('^' . s:sectionend . (a:backwards ? '\n\_.\{-}\%#' : '$'), l:flags) | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2015-01-14 19:42:21 +01:00
										 |  |  |     call search('^' . s:sectionstart . (a:backwards ? '\n\_.\{-}\%#' : '$'), l:flags) | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  |   endif | 
					
						
							|  |  |  | endfunction | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-14 19:42:21 +01:00
										 |  |  | noremap <buffer> <silent> ]] :<C-U>call <SID>SearchSection(0, 0, '')<CR> | 
					
						
							|  |  |  | xnoremap <buffer> <silent> ]] :<C-U>call <SID>SearchSection(0, 0, visualmode())<CR> | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | sunmap <buffer> ]] | 
					
						
							| 
									
										
										
										
											2015-01-14 19:42:21 +01:00
										 |  |  | noremap <buffer> <silent> ][ :<C-U>call <SID>SearchSection(1, 0, '')<CR> | 
					
						
							|  |  |  | xnoremap <buffer> <silent> ][ :<C-U>call <SID>SearchSection(1, 0, visualmode())<CR> | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | sunmap <buffer> ][ | 
					
						
							| 
									
										
										
										
											2015-01-14 19:42:21 +01:00
										 |  |  | noremap <buffer> <silent> [[ :<C-U>call <SID>SearchSection(0, 1, '')<CR> | 
					
						
							|  |  |  | xnoremap <buffer> <silent> [[ :<C-U>call <SID>SearchSection(0, 1, visualmode())<CR> | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | sunmap <buffer> [[ | 
					
						
							| 
									
										
										
										
											2015-01-14 19:42:21 +01:00
										 |  |  | noremap <buffer> <silent> [] :<C-U>call <SID>SearchSection(1, 1, '')<CR> | 
					
						
							|  |  |  | xnoremap <buffer> <silent> [] :<C-U>call <SID>SearchSection(1, 1, visualmode())<CR> | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | sunmap <buffer> [] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let b:undo_ftplugin .= ' | silent! execute "unmap <buffer> ]]"' | 
					
						
							|  |  |  |                    \ . ' | silent! execute "unmap <buffer> ]["' | 
					
						
							|  |  |  |                    \ . ' | silent! execute "unmap <buffer> [["' | 
					
						
							|  |  |  |                    \ . ' | silent! execute "unmap <buffer> []"' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Browse dialog filter on Windows (see ":help browsefilter") | 
					
						
							|  |  |  | if has('gui_win32') && !exists('b:browsefilter') | 
					
						
							|  |  |  |   let b:browsefilter = "J Script Files (*.ijs)\t*.ijs\n" | 
					
						
							|  |  |  |                    \ . "All Files (*.*)\t*.*\n" | 
					
						
							|  |  |  |   let b:undo_ftplugin .= ' | unlet! b:browsefilter' | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Enhanced "%" matching (see ":help matchit") | 
					
						
							|  |  |  | if exists('loaded_matchit') && !exists('b:match_words') | 
					
						
							|  |  |  |   let b:match_ignorecase = 0 | 
					
						
							| 
									
										
										
										
											2015-01-14 19:42:21 +01:00
										 |  |  |   let b:match_words = '^\%(\s*Note\|.\{-}\<\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(\:\s*0\|def\s\+0\|define\)\)\>:^\s*\:\s*$:^\s*)\s*$' | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  |                   \ . ',\<\%(for\%(_\a\k*\)\=\|if\|select\|try\|whil\%(e\|st\)\)\.:\<\%(case\|catch[dt]\=\|else\%(if\)\=\|fcase\)\.:\<end\.' | 
					
						
							|  |  |  |   let b:undo_ftplugin .= ' | unlet! b:match_ignorecase b:match_words' | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let &cpo = s:save_cpo | 
					
						
							|  |  |  | unlet s:save_cpo |