diff options
-rw-r--r-- | krebs/4lib/types.nix | 6 | ||||
-rw-r--r-- | tv/2configs/vim.nix | 32 |
2 files changed, 21 insertions, 17 deletions
diff --git a/krebs/4lib/types.nix b/krebs/4lib/types.nix index 678ae7a60..4742877a7 100644 --- a/krebs/4lib/types.nix +++ b/krebs/4lib/types.nix @@ -334,7 +334,8 @@ types // rec { # TODO two slashes absolute-pathname = mkOptionType { name = "POSIX absolute pathname"; - check = s: s == "/" || (pathname.check s && substring 0 1 s == "/"); + check = x: let xs = splitString "/" x; xa = head xs; in + xa == "/" || (xa == "" && all filename.check (tail xs)); merge = mergeOneOption; }; @@ -342,7 +343,8 @@ types // rec { # TODO normalize slashes pathname = mkOptionType { name = "POSIX pathname"; - check = s: isString s && all filename.check (splitString "/" s); + check = x: let xs = splitString "/" x; in + all filename.check (if head xs == "" then tail xs else xs); merge = mergeOneOption; }; diff --git a/tv/2configs/vim.nix b/tv/2configs/vim.nix index 0d87d97af..826c2d4ca 100644 --- a/tv/2configs/vim.nix +++ b/tv/2configs/vim.nix @@ -264,30 +264,32 @@ let ]; sigil = ''\(${concatStringsSep ''\|'' startAlts}\)[ \t\r\n]*''; in /* vim */ '' - syn include @${lang}Syntax syntax/${lang}.vim + syn include @nix_${lang}_syntax syntax/${lang}.vim unlet b:current_syntax - syn region ${lang}Block_NixSTRING - \ matchgroup=NixExit - \ extend - \ start='${replaceStrings ["'"] ["\\'"] sigil}"' + syn match nix_${lang}_sigil + \ X${replaceStrings ["X"] ["\\X"] sigil}\ze\('''\|"\)X + \ nextgroup=nix_${lang}_region + \ transparent + + syn region nix_${lang}_region + \ matchgroup=NixSTRING + \ start='"' \ skip='\\"' \ end='"' - \ contains=@${lang}Syntax + \ contained + \ contains=@nix_${lang}_syntax - syn region ${lang}Block_NixIND_STRING - \ matchgroup=NixExit - \ extend - \ start="${replaceStrings ["\""] ["\\\""] sigil}'''" + syn region nix_${lang}_region + \ matchgroup=NixIND_STRING + \ start="'''" \ skip="'''\('\|[$]\|\\[nrt]\)" \ end="'''" - \ contains=@${lang}Syntax + \ contained + \ contains=@nix_${lang}_syntax syn cluster NixSubLangs - \ add=@${lang}Syntax,${lang}Block_NixSTRING,${lang}Block_NixIND_STRING - - hi link ${lang}Block_NixSTRING Statement - hi link ${lang}Block_NixIND_STRING Statement + \ add=nix_${lang}_region,@nix_${lang}_syntax '') { c = {}; cabal = {}; |