view runtime/ftplugin/forth.vim @ 34546:33cb93a8d573 v9.1.0174

patch 9.1.0174: 'cursorline' and 'wincolor' hl missing with conceal and wrap Commit: https://github.com/vim/vim/commit/21b0a3df8c4abb884489dfcc0c92b1bbe058f291 Author: zeertzjq <zeertzjq@outlook.com> Date: Wed Mar 13 20:06:34 2024 +0100 patch 9.1.0174: 'cursorline' and 'wincolor' hl missing with conceal and wrap Problem: 'cursorline' and 'wincolor' highlight missing with concealed and wrapped lines. Solution: Apply 'cursorline' and 'wincolor' highlight to boguscols. (zeertzjq) Since 'cursorline' and 'wincolor' highlight apply after the end of the line, it is more consistent to have them also apply to boguscols. Assigning MAXCOL to values in ScreenCols[] make mouse click behave the same with 'cursorline' and 'nocursorline', but such behavior may be incorrect, as it puts the cursor on the next screen line. That may be fixed in a future PR. closes: #14192 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Wed, 13 Mar 2024 20:15:03 +0100
parents 8ae680be2a51
children
line wrap: on
line source

" Vim filetype plugin
" Language:	Forth
" Maintainer:	Johan Kotlinski <kotlinski@gmail.com>
" Last Change:	2023 Sep 15
"		2024 Jan 14 by Vim Project (browsefilter)
" URL:		https://github.com/jkotlinski/forth.vim

if exists("b:did_ftplugin")
  finish
endif
let b:did_ftplugin = 1

let s:cpo_save = &cpo
set cpo&vim

setlocal commentstring=\\\ %s
setlocal comments=s:(,mb:\ ,e:),b:\\
setlocal iskeyword=33-126,128-255

let s:include_patterns =<< trim EOL

  \<\%(INCLUDE\|REQUIRE\)\>\s\+\zs\k\+\ze
  \<S"\s\+\zs[^"]*\ze"\s\+\%(INCLUDED\|REQUIRED\)\>
EOL
let &l:include = $'\c{ s:include_patterns[1:]->join('\|') }'

let s:define_patterns =<< trim EOL
  :
  [2F]\=CONSTANT
  [2F]\=VALUE
  [2F]\=VARIABLE
  BEGIN-STRUCTURE
  BUFFER:
  CODE
  CREATE
  MARKER
  SYNONYM
EOL
let &l:define = $'\c\<\%({ s:define_patterns->join('\|') }\)'

" assume consistent intra-project file extensions
let &l:suffixesadd = "." .. expand("%:e")

let b:undo_ftplugin = "setl cms< com< def< inc< isk< sua<"

if exists("loaded_matchit") && !exists("b:match_words")
  let s:matchit_patterns =<< trim EOL

    \<\:\%(NONAME\)\=\>:\<EXIT\>:\<;\>
    \<IF\>:\<ELSE\>:\<THEN\>
    \<\[IF]\>:\<\[ELSE]\>:\<\[THEN]\>
    \<?\=DO\>:\<LEAVE\>:\<+\=LOOP\>
    \<CASE\>:\<ENDCASE\>
    \<OF\>:\<ENDOF\>
    \<BEGIN\>:\<WHILE\>:\<\%(AGAIN\|REPEAT\|UNTIL\)\>
    \<CODE\>:\<END-CODE\>
    \<BEGIN-STRUCTURE\>:\<END-STRUCTURE\>
  EOL
  let b:match_ignorecase = 1
  let b:match_words = s:matchit_patterns[1:]->join(',')
  let b:undo_ftplugin ..= "| unlet! b:match_ignorecase b:match_words"
  unlet s:matchit_patterns
endif

if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
  let b:browsefilter = "Forth Source Files (*.f, *.fs, *.ft, *.fth, *.4th)\t*.f;*.fs;*.ft;*.fth;*.4th\n"
  if has("win32")
    let b:browsefilter ..= "All Files (*.*)\t*\n"
  else
    let b:browsefilter ..= "All Files (*)\t*\n"
  endif
  let b:undo_ftplugin ..= " | unlet! b:browsefilter"
endif

let &cpo = s:cpo_save
unlet s:cpo_save
unlet s:define_patterns s:include_patterns