What does HackerNews think of combobulate?

Structured Editing and Navigation in Emacs

Language: Emacs Lisp

#27 in Emacs
LSP I can probably understand, mostly for performance reasons. Native json parsing and native compilation goes a long way, but clients written in elisp seems susceptible to edge cases where it's not performant enough because UI and IO runs in same thread in Emacs. Not insurmountable even without multithreading, some newer clients that uses better IPC or the dynamic module system are not constrained by Elisp requirement and seems to be doing fine in terms of performance.

The dynamic module system is generally a win for pragmatism over ideology, and it has been around for 7 years already. You can't do everything, like say extending core graphics of Emacs, but you can do a lot in any language of your choice if you feel constrained by Elisp. Tree-Sitter feature is built on top of that so it's not clear to me why do you think Emacs can't do better than say neovim. I use neovim and tree-sitter daily and generally don't think tree-sitter itself is rock solid yet, I run into indentation and slow query issues semi-routinely. But I am much more impressed with the work happening on Emacs community that leverages tree-sitter for advanced tooling [1].

[1] https://github.com/mickeynp/combobulate

Eh, I've been looking and haven't found anything for other editors that actually tries to use TreeSitter for anything beyond highlighting. The Emacs structural editing packages are still very WIP but at least they exist.

(And also some have been based on the out of tree implementation that's been around for a while now)

Example: https://github.com/mickeynp/combobulate

combobulate (alpha quality as of 10/22): source code outline/cliff notes. from github README.rst "Emacs package that provides a standardized framework for manipulating and navigating your source code using tree sitter's concrete syntax tree " -> https://github.com/mickeynp/combobulate

https://www.spacemacs.org/ with https://github.com/emacs-tree-sitter/elisp-tree-sitter then write a iterator/loop query for language(s) editing per https://tree-sitter.github.io/tree-sitter/syntax-highlightin...

tad less installation heavy (sorta) but also makes use of tree-sitter syntax queries : https://www.lunarvim.org (neovim with treesitter syntax)

blockman usage examples: https://www.youtube.com/channel/UC5539gDeAdWqeXcczWuhnBA

Alternative examples / takes (per user interface):

### embedding a block of source code in a document:

  ** carrotsearch.gethub.io/apidocs/code-blocks

  ** https://ckeditor.com/docs/ckeditor5/latest/features/code-blocks.html
### 'colorize blocking' (vs space endenting) :

  ** example code reference coloring: https://www.youtube.com/watch?v=b0EF0VTs9Dc&list=PLtvX0WpNqnvMQbLB9j4TKbqHMmoLaoOOr
### gui block programming :

  ** https://mblock.makeblock.com/en-us/   

  ** https://developers.google.com/blockly
I don't know what this fork brings to table, but you could try tree-sitter today with your vanilla Emacs using a package[1] that works via dynamic module.

Personally I am more interested in getting structural selection and navigation reliably working for any language. There is also a package named combobulate[2] to help with that.

[1] https://emacs-tree-sitter.github.io/

[2] https://github.com/mickeynp/combobulate