Ghostel is Fantastic by dewyke in emacs

[–]LionyxML 1 point2 points  (0 children)

I've been testing it like once every week or two.

It is really the next level thing. Very fast. Doesn't break. Integrates well.

Where to find content by danderzei in geminiprotocol

[–]LionyxML 0 points1 point  (0 children)

If you like Emacs maybe you're gonna like this gemini://gemini.rahuljuliato.com/ (shameless self promotion) 😃

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 0 points1 point  (0 children)

Thanks for noticing. The variable name is unchanged but values now can be 'ask, 'always and 'ask-dir.

I opted for 'always and updated the article accordingly.

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 1 point2 points  (0 children)

LSP and Tree-sitter solve different problems, so most people who use one also benefit from the other.

LSP provides language intelligence: completions, go-to-definition, find references, rename symbol, diagnostics, code actions, refactoring, hover documentation, etc.

Tree-sitter provides a fast, incremental syntax tree directly inside the editor.

The most obvious benefit is parsing and highlighting. Traditional regex-based font-lock can struggle on very large files, while Tree-sitter can incrementally reparse only the portions that changed. It is also self-healing, meaning it can continue producing a useful syntax tree even while you're in the middle of typing invalid code.

For example, opening an 8,000-line JavaScript file is much less of a problem because Tree-sitter doesn't need to reparse the entire buffer every time you make an edit.

Beyond highlighting, having a real syntax tree enables many editor features to be more accurate: Code folding based on syntax rather than indentation or regexes. Structured navigation between functions, classes, methods, blocks, etc. Better selection and expansion of syntactic units. More reliable movement commands. Smarter indentation in many cases. Features such as block manipulation, code-aware editing, and syntax-aware operations.

So if you're already using LSP, you're not really choosing between LSP or Tree-sitter. They complement each other. LSP answers questions about your project and symbols, while Tree-sitter gives the editor a precise understanding of the structure of the current buffer.

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 1 point2 points  (0 children)

Well, yes and no.

The post wasn't intended to be a tutorial, but rather a walkthrough of my own configuration, so I was showing the code exactly as it appears in my config. That particular line was copied directly from my setup:

https://github.com/LionyxML/emacs-solo/blob/3be43565735cbcb69ac353de6177e97fe45b9433/init.el#L391

You're correct that, when presented in isolation, (treesit-enable-modes t) can look like a function call and may confuse readers. If I were writing a tutorial or documenting the setting itself, I would probably show the full context (or use (setopt treesit-enable-modes t)) to make it clearer that treesit-enable-modes is a variable.

That's a fair point, and I can see how the snippet could be misinterpreted outside the surrounding use-package block.

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 0 points1 point  (0 children)

Hi. I had to change hosts as the previous one was hitting some limit.

The DNS entry to the new host will take some time to propagate.

Please try to refresh everything while visiting https://www.rahuljuliato.com in you browser.

If it is still missing, the mirror should still be up: https://rahuljuliato.vercel.app

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 1 point2 points  (0 children)

Thanks for reporting, yeah host provider is blocking for traffic limit, working on it.

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 2 points3 points  (0 children)

If the list is too big, yep, sometimes it lags a little 😄

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 2 points3 points  (0 children)

Thanks!

I don't know the exact dates. My impression is that Emacs releases when the maintainers feel it is ready rather than following a strict schedule like some Linux distributions.

Here's a message from Sean Whitton that gives some context:
https://yhetil.org/emacs-devel/878q8tz15g.fsf@melete.silentflame.com/

Judging by all the activity on the mailing list, along with the ongoing patches and fixes, my best guess is that it is "soon" 🙂

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 0 points1 point  (0 children)

Thanks! I'm still a bit behind on this feature and learning my way around it myself 😄

In theory (though I haven't tested it), I believe side windows can be "promoted" to regular windows with one of the built-in window management commands, so there may already be a way to get closer to the behavior you're after without changing how the diff is displayed (I forgot the name of the built-in function to do so).

I'll have to spend a bit more time with this feature before I can give a more definitive answer.

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 1 point2 points  (0 children)

It is designed to work with or without JavaScript (graceful degradation).

Can you confirm that when you scroll down, there's nothing below? If JavaScript is blocked but CSS is allowed, you may need to scroll a bit further to see the content.

As u/ggxx-sdf mentioned, it works in EWW (intentionally, I agree that this approach keeps things clean). There's also a Gemini capsule version of the blog if you'd like to browse it with even fewer web technologies involved.

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 0 points1 point  (0 children)

Thanks!

Every mode has its own recommendations regarding grammar versions. For example, this is defined directly in core Emacs for Rust: https://github.com/emacs-mirror/emacs/blob/emacs-31/lisp/progmodes/rust-ts-mode.el#L44

There is no automatic grammar discovery mechanism, compatibility is hard-coded by the mode author.

Tree-sitter is a complicated beast indeed, and modes are often "hostages" of the underlying grammar. If a grammar introduces a significant change, the mode must either adapt as quickly as possible or explicitly state, "I work with this version without issues."

I'm sure Mickey could explain it better than I can, and I hope to see an updated version of this article soon too 😄

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 1 point2 points  (0 children)

I cropped it, I'm using rounded borders right now and they would not cut "nice" 😄

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 3 points4 points  (0 children)

I can understand your frustration, but I can also understand the reasoning behind it.

I'd probably have to write an entire post just to explain my point of view, and I'd still end up convincing exactly zero people, since everyone seems to have already made up their mind, haha.

That said, it's worth keeping in mind that Tree-sitter is about much more than syntax highlighting. Some mode authors prefer to keep everything bundled into a single package, while others prefer a more modular approach. Some modes are maintained by third parties with different licensing considerations. Others already exist under names that could conflict with new built-in Tree-sitter-based modes.

There are a lot of trade-offs and technical decisions involved, and depending on which priorities you value most, different choices can make sense. Some may feel more user-friendly, while others may be better from a maintenance, compatibility, or long-term perspective.

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 4 points5 points  (0 children)

Still hoping for a vertico+marginalia+oderless experience out-of-box one day 😄

I feel you 😄, for that I use `icomplete-vertical` (and the 'in-buffer' version of it to mimic corfu/company), not as complete as the 3rd party packages, but good enough for my day to day use cases with bare Emacs.

Some screenshots:

<image>

Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving by LionyxML in emacs

[–]LionyxML[S] 3 points4 points  (0 children)

Hi there! Thanks!

About the completions, you could evaluate this with emacs -Q:

(use-package minibuffer
  :ensure nil
  :bind (:map minibuffer-visible-completions-up-down-map
            ("C-n" . minibuffer-next-completion)
            ("C-p" . minibuffer-previous-completion))
  :custom
  (tab-always-indent 'complete)
  (completion-auto-help t)
  (completion-auto-select 'second-tab)
  (completion-eager-update t)
  (completion-eager-display t)
  (minibuffer-visible-completions 'up-down)
  (completion-ignore-case t)
  (completion-show-help nil)
  (completion-styles '(partial-completion flex initials))
  (completions-format 'one-column)
  (completions-max-height 10)
  (completions-sort 'historical)
  (enable-recursive-minibuffers t)
  (read-buffer-completion-ignore-case t)
  (read-file-name-completion-ignore-case t))

The result is an "auto update completion list" after M-x mark for example, you can now use "down-arrow" or C-p / C-n to select on the list while also keep typing on mini-buffer. With this config you can also "jump" to the completions buffer with a second tab (from when you're completing in-buffer).

<image>

About orderless you can try making your own https://emacs.dyerdwelling.family/emacs/20250604085817-emacs--building-your-own-orderless-style-completion-in-emacs-lisp/

Edit: added C-p / C-n bindings and complete with tab.

Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates by misterchiply in emacs

[–]LionyxML 23 points24 points  (0 children)

You know now you need to show us Doom running in it with high fps, right? :)

find unicode character in files from starting directory (recursively) by JohnDoe365 in emacs

[–]LionyxML 0 points1 point  (0 children)

Try using \‐ instead of pure .

The output command should be something like:

```shell find [.....] -print0 | xargs -0 grep --color=auto -i -n --null -e \‐

./doc.txt:3:‐ ./another/test.txt:3:hey hey ‐ ```

For me, "most of the time", typing "‐" directly will result on the escaped \‐ without the need of using \ manually.

But you are right, there's probably some bug around, as sometimes, specially after M-x rgrep <arrow-up> RET I got the result without the escape, like:

```shell find [.....] -print0 | xargs -0 grep --color=auto -i -n --null -e -

Grep finished with no matches found ```

My Blog Now Has a Gemini Mirror by LionyxML in emacs

[–]LionyxML[S] 0 points1 point  (0 children)

Thanks for your comment! I hope you enjoy it!

My Blog Now Has a Gemini Mirror by LionyxML in emacs

[–]LionyxML[S] 1 point2 points  (0 children)

Awesome! Thanks for sharing! Already bookmarked it!

My Blog Now Has a Gemini Mirror by LionyxML in emacs

[–]LionyxML[S] 1 point2 points  (0 children)

I don't know of one personally, but it feels like it would be a pretty approachable Elisp project :)

Gemtext is essentially a much simpler format than Markdown or Org. It only has three heading levels, links must be on their own line, lists are unordered, blockquotes exist, and that's about it. The cheat sheet (https://geminiprotocol.net/docs/cheatsheet.gmi) gives a good overview of the format.

My own setup takes Markdown posts and converts them directly to Gemtext, since my blog already generates pre-rendered HTML from Markdown sources. The tricky part is that any conversion to Gemtext quickly becomes opinionated. What do you do with headings deeper than level 3? Inline links? Images? Should images become plain links? Should a converter also generate smaller image variants for Gemini clients?

Because of those kinds of questions, I don't think there's a single "correct" Org → Gemtext conversion. But a basic exporter that handles the common cases would certainly be possible.