tree-sitter-cpp
nvim-dap
Our great sponsors
tree-sitter-cpp | nvim-dap | |
---|---|---|
8 | 138 | |
226 | 4,771 | |
4.0% | - | |
8.2 | 7.9 | |
15 days ago | 8 days ago | |
JavaScript | Lua | |
MIT License | GNU General Public License v3.0 only |
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
nvim-dap
-
I can't stand using VSCode so I wrote my own (it wasn't easy)
There are DAP extensions for both Vim (e.g. https://github.com/puremourning/vimspector) and NeoVim (https://github.com/mfussenegger/nvim-dap). I can't speak as to the experience in detail (I think I briefly played with nvim-dap a year or two ago), but I suspect that for most it will be good enough.
-
Can you get better dapui varibles?
https://github.com/mfussenegger/nvim-dap/issues/1062 https://github.com/mfussenegger/nvim-dap/issues/737
-
How to start using Neovim for c++ development and debugging
Also, you can set up debugger integration with https://github.com/mfussenegger/nvim-dap .
- Build and run in one task using asynctasks.vim
-
How can I debug Python code in neovim!
You could use nvim-dap with nvim-dap-python.
-
How to debug python code in neovim
I'd suggest starting with a Neovim distro that makes things work for you and as you get familiar you can transition to a more custom configuration as you see fit. If you want to do it by yourself then the most popular plugin for debugging in Neovim is nvim-dap and there is also an extension for Python to give you a more ready to go config instead of doing it yourself. You should read the docs of those 2 to see how you should customize accordingly your configuration.
-
How to configure vim like an IDE
(neovim only) nvim-dap
-
How to display variable values inline?
https://github.com/mfussenegger/nvim-dap + https://github.com/theHamsta/nvim-dap-virtual-text should be able to do it, I think?
- New Nightmare, the Hammerhead Worm
-
Q: Setting up typescript debugger for neovim?
If you want to debug types in TypeScript, you could use marilari88/twoslash-queries.nvim. If you would like to debug TypeScript/JavaScript code, then you need mfussenegger/nvim-dap, you could read this article: Debugging using DAP to understand how to set up it.
What are some alternatives?
nvim-cmp - A completion plugin for neovim coded in Lua.
vimspector - vimspector - A multi-language debugging system for Vim
difftastic - a structural diff that understands syntax 🟥🟩
LunarVim - 🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.
git-split-diffs - Syntax highlighted side-by-side diffs in your terminal
nvim-gdb - Neovim thin wrapper for GDB, LLDB, PDB/PDB++ and BashDB
diffsitter - A tree-sitter based AST difftool to get meaningful semantic diffs
nvim-dap-python - An extension for nvim-dap, providing default configurations for python and methods to debug individual test methods or classes.
null-ls.nvim - Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.
CodeLLDB - A native debugger extension for VSCode based on LLDB
nvim-treesitter - Nvim Treesitter configurations and abstraction layer
vscode-cpptools - Official repository for the Microsoft C/C++ extension for VS Code.