mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	Problem:  Modula2 filetype support lacking
Solution: Improve the Modula-2 runtime support, add additional modula2
          dialects, add compiler plugin, update syntax highlighting,
          include syntax tests, update Makefiles (Doug Kearns)
closes: vim/vim#6796
closes: vim/vim#8115
68a8947069
- Luaify the detection script:
  - Split the `(*!m2foo*)` and `(*!m2foo+bar*)` detection into two Lua patterns,
    as Lua capture groups cannot be used with `?` and friends (as they only work
    on character classes).
  - Use `vim.api.nvim_buf_call()` (ew) to call `modula2#SetDialect()` to ensure
    `b:modula2` is set for the given bufnr.
- Skip the syntax screendump tests. (A shame as they test some of the detection
  from `(*!m2foo+bar*)` tags, but I tested this locally and it seems to work)
- Port the synmenu.vim changes from Vim9 script. (Also tested this locally)
- (And also add the missing comma for `b:browsefilter` from earlier.)
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
		
	
		
			
				
	
	
		
			32 lines
		
	
	
		
			691 B
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			691 B
		
	
	
	
		
			VimL
		
	
	
	
	
	
" Vim filetype plugin file
 | 
						|
" Language:	Modula-2
 | 
						|
" Maintainer:	Doug Kearns <dougkearns@gmail.com>
 | 
						|
" Last Change:	2024 Jan 04
 | 
						|
 | 
						|
" Dialect can be one of pim, iso, r10
 | 
						|
function modula2#GetDialect() abort
 | 
						|
 | 
						|
  if exists("b:modula2.dialect")
 | 
						|
    return b:modula2.dialect
 | 
						|
  endif
 | 
						|
 | 
						|
  if exists("g:modula2_default_dialect")
 | 
						|
    let dialect = g:modula2_default_dialect
 | 
						|
  else
 | 
						|
    let dialect = "pim"
 | 
						|
  endif
 | 
						|
 | 
						|
  return dialect
 | 
						|
endfunction
 | 
						|
 | 
						|
function modula2#SetDialect(dialect, extension = "") abort
 | 
						|
  if exists("b:modula2")
 | 
						|
    unlockvar! b:modula2
 | 
						|
  endif
 | 
						|
 | 
						|
  let b:modula2 = #{ dialect: a:dialect, extension: a:extension }
 | 
						|
  lockvar! b:modula2
 | 
						|
endfunction
 | 
						|
 | 
						|
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
 |