unison
nvim-treesitter-context
Our great sponsors
unison | nvim-treesitter-context | |
---|---|---|
17 | 33 | |
5,504 | 2,047 | |
1.0% | 5.7% | |
9.9 | 8.8 | |
6 days ago | 7 days ago | |
Haskell | Lua | |
GNU General Public License v3.0 or later | 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.
unison
-
Unison Cloud
Hi, one of the Unison creators here. We've talked about adding pluggable syntax[1]. It's in principle straightforward (the code is already stored in a database as its abstract syntax tree, not text) and I imagine a future version of Unison could let you pick from a variety of syntaxes. But we haven't gotten to it yet.
[1] https://github.com/unisonweb/unison/issues/499
... that said, the language semantics and libraries are still going to be different, so even if we have a python-ish or typescript-y syntax, there'll still be new things to learn. :)
Short version: no type classes (yet)
Longer version:
Building upon what Quekid5 mentioned, Unison abilities are an implementation of what is referred to as algebraic effects in programming language literature. They represent capabilities like IO, state, exceptions, etc. They aren't really a replacement for type classes, though in some cases you can shoehorn abilities in where you might otherwise use a type class.
For someone coming from a Haskell background, I think that abilities are closer to a replacement for monad transformers. But in my opinion they are much more ergonomic.
Discusson of type classes comes up a lot. Here is a long-standing GitHub issue: https://github.com/unisonweb/unison/issues/502
For what it's worth, I've written Unison quite a lot over the past few years and while I've missed type classes at times, I think that reading unfamiliar code is easier without them. There's no implicit magic; you can see exactly what is being passed into a function. So far I've been happy with a bit more verbosity for the sake of readability.
-
Show HN: Winglang – a new Cloud-Oriented programming language
I've been following the Unison lang [1] for quite some. Wing seem to set similar goals? From the first glance Wing looks more polished, but there's "The Big Idea" behind Unison - is there something similar?
-
C++ evolution vs C++ successor languages. Circle's feature pragmas let you select your own "evolver language."
in haskell it looks like this, you specify the language extensions you want at the top of the source files: https://github.com/unisonweb/unison/blob/trunk/unison-core/src/Unison/ABT.hs
-
Syntax Design
I think Unison is going in this direction. Imo this is a mistake, as a program language functions not just as specification for the machine, but also as communication between programmers. Allowing the introduction of arbitrary dialects to suit individual preferences seems like it would interfere with that communication.
- What if Git worked with Programming Languages?
-
Red and blue functions are a good thing
The Unison language [1] also has a very interesting effect system.
-
What does your ideal programming language look like?
I think Unison might have at keast somewhat similar features to what you talk about with package manegement and possibly modules. I haven't tried it out yet but from the documentation it sounds similar.
nvim-treesitter-context
-
[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
There are a couple of plugins that do this.
For vim: https://github.com/wellle/context.vim
For neovim (much higher performance in my experience): https://github.com/nvim-treesitter/nvim-treesitter-context
I believe there's now also a VS code plugin for the same behavior, but I don't know what it's called.
-
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 are some alternatives?
context.vim - Vim plugin that shows the context of the currently visible buffer contents
nvim-treesitter-textobjects
nvim-treehopper - Region selection with hints on the AST nodes of a document powered by treesitter
nvim-gps - Simple statusline component that shows what scope you are working inside
format.nvim - A wrapper around Neovims native LSP formatting. [Moved to: https://github.com/lukas-reineke/lsp-format.nvim]
indent-blankline.nvim - Indent guides for Neovim
dein.vim - :zap: Dark powered Vim/Neovim plugin manager
diffsitter - A tree-sitter based AST difftool to get meaningful semantic diffs
neovim - Vim-fork focused on extensibility and usability
dark - Darklang main repo, including language, backend, and infra
rust-tools.nvim - Tools for better development in rust using neovim's builtin lsp
project-m36 - Project: M36 Relational Algebra Engine