LINUX.ORG.RU

динамическая подсветка синтаксиса в vim

 , ,


0

1

Кто-то пробовал, как вот это работает: TagHighlight вот ссылка:

https://www.vim.org/scripts/script.php?script_id=2646

там 40кб питона, я сделал ф-цию в vim, которая работает на exuberant-ctags+gutentags, то есть, когда я запускаю vim в корне проекта, gutentags генерирует tags файл, дальше это работает вот так:

function! UpdateSyntaxFromTags()
    "echo "UpdateSyntaxFromTags"
    let l:tags_file = findfile('__tags_for_syntax', '.;')
    if !empty(l:tags_file) && filereadable(l:tags_file)
        silent execute '!grep -P "\t[tsgud]{1}(\t|$)" ' . l:tags_file .
            \ ' | awk "{print \"syntax keyword MyCustomType \" \$1}" | sort -u > ~/.vim/after/syntax/c_types.vim'
        silent! source ~/.vim/after/syntax/c_types.vim
        highlight link MyCustomType Type
    endif
endfunction

augroup __GutentagsSyntax
    autocmd!
    autocmd BufReadPost,BufEnter *.c,*.h,*.cpp call UpdateSyntaxFromTags()
    autocmd BufWritePost *.c,*.h call UpdateSyntaxFromTags()
    autocmd FileType c,cpp call UpdateSyntaxFromTags()
augroup END

просто интересно, на сколько стабильнее работает TagHighlight по сравнению с моим апгрейдом, дело в том, что мой бывает запаздывает, понятно почему, gutentags работает в фоне

я сделал ф-цию в vim, которая работает на exuberant-ctags+gutentags,

Переезжай на clangd:

{
  "semanticTokensProvider": {
    "full": {
      "delta": true
    },
    "legend": {
      "tokenTypes": [
        "variable",
        "variable",
        "parameter",
        "function",
        "method",
        "function",
        "property",
        "variable",
        "class",
        "interface",
        "enum",
        "enumMember",
        "type",
        "type",
        "unknown",
        "namespace",
        "typeParameter",
        "concept",
        "type",
        "macro",
        "modifier",
        "operator",
        "bracket",
        "label",
        "comment"
      ],
      "tokenModifiers": [
        "declaration",
        "definition",
        "deprecated",
        "deduced",
        "readonly",
        "static",
        "abstract",
        "virtual",
        "dependentName",
        "defaultLibrary",
        "usedAsMutableReference",
        "usedAsMutablePointer",
        "constructorOrDestructor",
        "userDefined",
        "functionScope",
        "classScope",
        "fileScope",
        "globalScope"
      ]
    },
    "range": false
  }
}
anonymous
()