| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2022-08-19 17:15:35 +01:00
										 |  |  | " Last Change:	2022-08-06 | 
					
						
							| 
									
										
										
										
											2024-01-14 20:59:02 +01:00
										 |  |  | "		2024 Jan 14 by Vim Project (browsefilter) | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							| 
									
										
										
										
											2022-08-19 17:15:35 +01:00
										 |  |  | if !exists('no_plugin_maps') && !exists('no_j_maps') | 
					
						
							|  |  |  |   let s:sectionstart = '\%(\s*Note\|.\{-}\<\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\)\>.*' | 
					
						
							|  |  |  |   let s:sectionend = '\s*)\s*' | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-19 17:15:35 +01:00
										 |  |  |   function! s:SearchSection(end, backwards, visualmode) abort | 
					
						
							|  |  |  |     if a:visualmode !=# '' | 
					
						
							|  |  |  |       normal! gv | 
					
						
							|  |  |  |     endif | 
					
						
							|  |  |  |     let l:flags = a:backwards ? 'bsW' : 'sW' | 
					
						
							|  |  |  |     if a:end | 
					
						
							|  |  |  |       call search('^' . s:sectionend . (a:backwards ? '\n\_.\{-}\%#' : '$'), l:flags) | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       call search('^' . s:sectionstart . (a:backwards ? '\n\_.\{-}\%#' : '$'), l:flags) | 
					
						
							|  |  |  |     endif | 
					
						
							|  |  |  |   endfunction | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-19 17:15:35 +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> | 
					
						
							|  |  |  |   sunmap <buffer> ]] | 
					
						
							|  |  |  |   noremap <buffer> <silent> ][ :<C-U>call <SID>SearchSection(1, 0, '')<CR> | 
					
						
							|  |  |  |   xnoremap <buffer> <silent> ][ :<C-U>call <SID>SearchSection(1, 0, visualmode())<CR> | 
					
						
							|  |  |  |   sunmap <buffer> ][ | 
					
						
							|  |  |  |   noremap <buffer> <silent> [[ :<C-U>call <SID>SearchSection(0, 1, '')<CR> | 
					
						
							|  |  |  |   xnoremap <buffer> <silent> [[ :<C-U>call <SID>SearchSection(0, 1, visualmode())<CR> | 
					
						
							|  |  |  |   sunmap <buffer> [[ | 
					
						
							|  |  |  |   noremap <buffer> <silent> [] :<C-U>call <SID>SearchSection(1, 1, '')<CR> | 
					
						
							|  |  |  |   xnoremap <buffer> <silent> [] :<C-U>call <SID>SearchSection(1, 1, visualmode())<CR> | 
					
						
							|  |  |  |   sunmap <buffer> [] | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-19 17:15:35 +01:00
										 |  |  |   let b:undo_ftplugin .= ' | silent! execute "unmap <buffer> ]]"' | 
					
						
							|  |  |  |                      \ . ' | silent! execute "unmap <buffer> ]["' | 
					
						
							|  |  |  |                      \ . ' | silent! execute "unmap <buffer> [["' | 
					
						
							|  |  |  |                      \ . ' | silent! execute "unmap <buffer> []"' | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-19 17:15:35 +01:00
										 |  |  | " Browse dialog filter on Windows and GTK (see ":help browsefilter") | 
					
						
							|  |  |  | if (has('gui_win32') || has('gui_gtk')) && !exists('b:browsefilter') | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  |   let b:browsefilter = "J Script Files (*.ijs)\t*.ijs\n" | 
					
						
							| 
									
										
										
										
											2024-01-14 20:59:02 +01:00
										 |  |  |   if has("win32") | 
					
						
							|  |  |  |     let b:browsefilter .= "All Files (*.*)\t*\n" | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     let b:browsefilter .= "All Files (*)\t*\n" | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2014-04-06 14:09:13 +02:00
										 |  |  |   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 |