tree-sitter-cpp
formatter.nvim
tree-sitter-cpp | formatter.nvim | |
---|---|---|
8 | 37 | |
227 | 1,284 | |
2.6% | - | |
8.2 | 7.0 | |
4 days ago | 9 days ago | |
JavaScript | Lua | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
tree-sitter-cpp
-
Difftastic, a structural diff tool that understands syntax
Grammar page (https://github.com/tree-sitter/tree-sitter-cpp) reference two documents at the very end:
- Hyperlinked C++ BNF Grammar (https://alx71hub.github.io/hcb/)
- EBNF Syntax: C++ (ISO/IEC 14882:1998(E)) https://www.externsoft.ch/download/cpp-iso.html
The second doc has a year in the title, so it's ancient af.
- How to Get Started with Tree-Sitter
-
Emacs and Java Development: Corfu + Cape + LSP-Mode + Treesit
(use-package treesit :ensure nil :custom ;; Some stuff taken from here: https://robbmann.io/posts/emacs-treesit-auto/ (treesit-extra-load-path '("/usr/lib64/")) (treesit-language-source-alist '((bash . ("https://github.com/tree-sitter/tree-sitter-bash")) (c . ("https://github.com/tree-sitter/tree-sitter-c")) (c++ . ("https://github.com/tree-sitter/tree-sitter-cpp")) (csharp . ("https://github.com/tree-sitter/tree-sitter-c-sharp")) (css . ("https://github.com/tree-sitter/tree-sitter-css")) (elixir ("https://github.com/elixir-lang/tree-sitter-elixir")) (html . ("https://github.com/tree-sitter/tree-sitter-html")) (java . ("https://github.com/tree-sitter/tree-sitter-java")) (javascript . ("https://github.com/tree-sitter/tree-sitter-javascript")) (json . ("https://github.com/tree-sitter/tree-sitter-json")) (lua . ("https://github.com/Azganoth/tree-sitter-lua")) (makefile . ("https://github.com/alemuller/tree-sitter-make")) (org . ("https://github.com/milisims/tree-sitter-org")) (python . ("https://github.com/tree-sitter/tree-sitter-python")) (tsx . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src")) (typescript . ("https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src")) (ruby . ("https://github.com/tree-sitter/tree-sitter-ruby")) (rust . ("https://github.com/tree-sitter/tree-sitter-rust")) (sql . ("https://github.com/m-novikov/tree-sitter-sql")) (toml . ("https://github.com/tree-sitter/tree-sitter-toml")) (yaml . ("https://github.com/ikatyang/tree-sitter-yaml")))) (major-mode-remap-alist '((c-mode . c-ts-mode) (c++-mode . c++-ts-mode) (csharp-mode . csharp-ts-mode) (css-mode . css-ts-mode) (html-mode . html-ts-mode) (java-mode . java-ts-mode) (js-mode . js-ts-mode) (json-mode . json-ts-mode) (makefile-mode . makefile-ts-mode) ;; (org-mode . org-ts-mode) ;; not mature yet (python-mode . python-ts-mode) (typescript-mode . typescript-ts-mode) (ruby-mode . ruby-ts-mode) (rust-mode . rust-ts-mode) (toml-mode . toml-ts-mode) (yaml-mode . yaml-ts-mode))) (treesit-auto-fallback-alist '((toml-ts-mode . conf-toml-mode) (typescript-ts-mode . nil) (tsx-ts-mode . nil))) (treesit-font-lock-settings t) (treesit-simple-indent t) (treesit-defun-type-regexp t)) (use-package treesit-auto :demand t :config (setq treesit-auto-install t) (global-treesit-auto-mode))
-
GitHub code search is generally available
The feature isn't working well yet on C and C++. If I recall correctly it's based on Tree-Sitter[1] parsing, and there are still too many bugs in corresponding grammars - tree-sitter-c[2] and tree-sitter-cpp[3]. Hopefully, it will be greatly improved in the future as the share of the existing and newly written code in C and C++ is quite significant.
[1] https://tree-sitter.github.io/tree-sitter/
[2] https://github.com/tree-sitter/tree-sitter-c/issues
[3] https://github.com/tree-sitter/tree-sitter-cpp/issues
- Building tree-sitter languages for Emacs
-
Call for volunteers: add tree-sitter support to major modes
There's treesitter-cpp parser that works to some extent already. However, for complex language like c++, I think it would be better to use lsp's semantic highlighting instead
- Neovim C++ development
-
Difftastic: A syntactic diff tool
C++ is currently unsupported, but there's a good tree-sitter implementation I can add: https://github.com/tree-sitter/tree-sitter-cpp
formatter.nvim
-
null-ls will be archived
Can anyone explain why someone would use null-ls if you're using the modern lsp setup (say, from kickstart.nvim). I see comments mentioning formatting. I see formatters mentioned several times. Why not just use https://github.com/mhartington/formatter.nvim?
-
How to setup formatter for Python ???
I use null-ls (https://github.com/jose-elias-alvarez/null-ls.nvim), I haven't tried it for python, but haven't had trouble with lua, js, ts or rust. You can also look into formatter.nvim (https://github.com/mhartington/formatter.nvim).
-
Scalafmt and neovim
I use formatter.nvim for formatting
-
Does a language server replace ALE, syntastic, and the language plugin?
For formatting, formatter.nvim is a good choice and has similar setup to nvim-lint.
-
lsp.vim.buf.format parameters make tab indent 4 spaces
I finally installed this formatter plugin and configured it to execute de clang-format command like this
-
A Minimal Neovim Configuration for TypeScript Development featuring Lazy.nvim, LSP, Tree-Sitter, Prettier, Guess-Indent
mhartington/formatter.nvim is used for automatic code formatting. Its configuration also shows how to use nvim_create_augroup and nvim_create_autocmd from Lua.
-
Editing the same file in a split causes vim to jump to the top of the file when saving with autoformatter
This might have something to do with extmarks being clobbered when the new text is written. For example, here is a GitHub issue describing the problem: https://github.com/mhartington/formatter.nvim/issues/22 This is for formatter.nvim, but this would likely apply to any process that rewrites the whole buffer.
-
autoformat with lsp-zero
i have always had trouble with lsp formatting and null-ls (may just be me, i'm not super clued in) so i use formatter.nvim https://github.com/mhartington/formatter.nvim/
-
Neovim not formatting code correctly like VSCode does (prettier)
Take a look at formatter.nvim
-
How does vim.lsp.buf.format() deal with multiple attached LSP clients?
I've had really good experience with formatter-nvim.
What are some alternatives?
nvim-cmp - A completion plugin for neovim coded in Lua.
null-ls.nvim - Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.
difftastic - a structural diff that understands syntax 🟥🟩
neoformat - :sparkles: A (Neo)vim plugin for formatting code.
nvim-dap - Debug Adapter Protocol client implementation for Neovim
format.nvim - A wrapper around Neovims native LSP formatting. [Moved to: https://github.com/lukas-reineke/lsp-format.nvim]
git-split-diffs - Syntax highlighted side-by-side diffs in your terminal
vim-clang-format - Vim plugin for clang-format, a formatter for C, C++, Obj-C, Java, JavaScript, and so on.
diffsitter - A tree-sitter based AST difftool to get meaningful semantic diffs
vim-autoformat - Provide easy code formatting in Vim by integrating existing code formatters.
efm-langserver - General purpose Language Server