mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 91dc04a5e1
			
		
	
	91dc04a5e1
	
	
	
		
			
			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:
 |