locust
nvim-treesitter-context
locust | nvim-treesitter-context | |
---|---|---|
4 | 33 | |
49 | 2,235 | |
- | 3.1% | |
0.0 | 8.7 | |
8 months ago | 1 day ago | |
Python | 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.
locust
-
Effective Code Browsing
Nice!
Have been working on something similar, although my use case is more about learning how code has changed across git commits: https://github.com/bugout-dev/locust
For Javascript/Typescript/React support, like you, I hooked into the Babel toolchain. Can't recommend it highly enough.
There's also a newish project called quick-lint-js which seems to have written their own from-scratch AST parser for JS, but I haven't tried it yet: https://github.com/quick-lint/quick-lint-js
Finally, another project that I know in this space is comby (I believe it is owned/maintained by the folks at Sourcegraph): https://comby.dev/
Don't know why I dumped all those links there. Just figured there may be something useful in them for you. Am also just super passionate about building knowledge about code bases by analyzing their ASTs. Nice to meet a fellow enthusiast. :)
-
What if Git worked with Programming Languages?
I maintain a free/open source project that does exactly what the author asks for: https://github.com/bugout-dev/locust.
Our tool uses git as the foundation of its functionality. It superimposes git diffs on top of ASTs.
It is insanely powerful.
For example, we use it to power semantic code search and current support Python, Javascript, and Java. We generate a JSON object defining the AST differences between initial and terminal commits on GitHub PRs and doing text search on the JSON objects performs surprisingly well when we want to answer questions like, "When did we add dateutils as a dependency?" or "When did we last change the /journals handler on the API?"
The Python integration currently sees the most use but if you are interested in other languages, we would be happy to support it.
Do drop me a DM if you want help getting started with Locust.
-
Diffsitter: A tree-sitter based AST difftool to get meaningful semantic diffs
My team has a similar project (Locust: https://github.com/bugout-dev/locust) where the goal is to learn the semantic meanings of code changes in git commits, GitHub PRs, etc.
Since we took git diffs as a target for semantic analysis, we have a different approach to our diffs. We start with line-by-line diffs (specifically using "git diff") and then take a semantic diff by superimposing the git diff information on top of the initial and terminal ASTs.
This makes the diff calculation cheaper because we don't have to do full diff between trees.
Haven't updated the code in a few months, but my team is actively using Locust on public GitHub repos to learn the semantics of those code bases. We do plan to do some work on it soon to make it easier to make Locust easier to use (especially as a library).
Really need to sit down and take a proper look at tree-sitter. We currently support Locust diffs for Python, Javascript, and Java, but each one is custom written and implements the same basic algorithm. It looks like tree sitter might just crush this problem for us.
- Difftastic: Syntax-aware structured diff tool
nvim-treesitter-context
-
TreePin! A prototype of my plugin for pinning parts of code to the edges of the screen (Apologies for the GIF artifacts)
Very cool! Sort of reminds me of treesitter-context. Any chance for compatibility? An example could be you either would disable context when something is pinned or somehow displace it other, depending on which is "on top" could be neat.
-
[New plugin] Introducing dropbar.nvim, an out-of-the-box, IDE-like winbar with drop-down menu support and multiple backends
It's for context and navigation, not completions. So it wouldn't replace nvim-cmp. It probably doesn't replace anything you already have unless you are already using a winbar. It combines features of treesitter-context, symbols-outline, and a file navigator but in a different presentation.
-
Plugin for virtual text around parantheses ?
Not quite the same thing, but arguably a better alternative : https://github.com/nvim-treesitter/nvim-treesitter-context
-
Looking for some kinda specific plugins for visibility
For 2: https://github.com/nvim-treesitter/nvim-treesitter-context
-
Please inform me of the plugin(s) enabling these two features
I really like nvim-treesitter-context as an alternative for 1.
-
I’m a vscode user who wants to migrate to neovim but still can’t get all the features I want, I’m trying out lazyvim, which plug-ins should I use?
nvim-treesitter-context implements "sticky scroll" where, depending on where your cursor is placed, the top lines of your window will be replaced by the otherwise offscreen lines that declare what function you're in (e.g function test(...), the line that begins the current class (e.g. public class Student implements Person {), the variable name of the current table (e.g. local planets = {), etc.
- I have reached Vim nirvana
-
Anything like Blockman in Neovim?
Very different in my eyes, but I love nvim-treesitter-context. Definitely another tool in helping the brain parse code -- I think of it as helping with long range context, whereas blockman helps me focus on local context and makes scoping relationships more subconciously available.
-
Plugin to show current function?
You are looking for this: https://github.com/nvim-treesitter/nvim-treesitter-context
-
what is the plugin for showing the function context on top of buffer?
I have seen https://github.com/nvim-treesitter/nvim-treesitter-context is recommended, and it works similar. But the way the context info are displayed in AstroNvim is much nicer
What are some alternatives?
weggli - weggli is a fast and robust semantic search tool for C and C++ codebases. It is designed to help security researchers identify interesting functionality in large codebases.
context.vim - Vim plugin that shows the context of the currently visible buffer contents
gumtree - An awesome code differencing tool
nvim-treesitter-textobjects
difftastic - a structural diff that understands syntax 🟥🟩
nvim-treehopper - Region selection with hints on the AST nodes of a document powered by treesitter
TypeScript - TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
nvim-gps - Simple statusline component that shows what scope you are working inside
nbdime - Tools for diffing and merging of Jupyter notebooks.
format.nvim - A wrapper around Neovims native LSP formatting. [Moved to: https://github.com/lukas-reineke/lsp-format.nvim]
diffsitter - A tree-sitter based AST difftool to get meaningful semantic diffs
indent-blankline.nvim - Indent guides for Neovim