Neovim artfully avoided the "rewrite it in rust" catfish. We were waiting for Zig (harmonious instead of hostile with C/legacy):
To join the zig mafia, use nvim in ghostty developing a bun app.
Proud to share that my wife and I have pledged $300,000 to the Zig Software Foundation. Zig has been an absolute joy to use but more importantly I think their culture, vision, and project structure is a bright star for the future of systems programming.
Why
#neovim
is still fun to work on after 5 years: people keep showing up with really impressive work, out of nowhere...
Built-in LSP support has landed:
what I call the zig mafia is just my working title for the new generation of "actually suckless sw": harmonious with legacy, yet futuristic (unlike ):
utf-8
curl
lua
nvim
rg
zig
kitty
ghostty(?)
APE?
this lopsided poll says two things:
1. defaults matter (must be repeated infinitely: so many people still don't understand how much they really matter)
2. nvim-lsp probably is the reason
#neovim
doubled its user base in two years. credit to
@teej_dv
@ashkankiani93
mjlbach.
#neovim
and Helix are leading the discussion of editor-agnostic treesitter: injection format, capture names, queries.
Pain in the ass. But will allow more treesitter assets to be re-usable across editors.
#leverage
paging
@emacs
@zeddotdev
@code
As long as
@Neovim
stays fast + maintainable, and the official docs + defaults favor "good taste", doesn't matter what "vscode features" it might flirt with.
Don't want spacemacs or a kitchen sink.
Do want nice plumbing.
Core team is aligned on this.
Neovim has 10+ devs whose commits I *know* are high-quality, without even *looking* at the code.
How many coworkers are like that... in your entire career?
P.S. I still look at the code anyway 😏
treesitter-based "universal formatter":
#neovim
will eventually have "universal gw/gq" out of the box. No need for external tools like tidy, python json.tool, etc.
This is what you get w/ parsing instead of just "mostly ok" regex highlighting.
Nvim is now self-hosting:
#neovim
UIs are just (inverted) plugins. "nvim" in a terminal starts the TUI, which spawns "nvim --embed" subprocess.
Connect TUI to any server! Try this (Nvim 0.9):
nvim --listen ./s
nvim --remote-ui --server ./s
executing on
#neovim
plan since 2014:
1. implement core "business logic" in Lua instead of C,
2. thereby gain more core contributors,
3. thereby gain more improvements,
4. goto 1
"Neovim decision to use Lua is paying off"
> Doom emacs, 29 min to compile
> I'm convinced Neovim was the cause for Emacs/Vim to incorporate treesitter LSP async etc.
> I'm amazed how easy it is to read help pages & write some Lua to get what you want.
nice post:
> Neovim ... now more a Lua interpreter in disguise of an editor
😏
> infuriating that colorscheme is script… hard to reason
- constraints ok, so why flip themes at runtime?
- keep config small.
- no "ad hoc" w/ rust. Helix has macros though
UIs for
#neovim
are just plugins. So when people say "there are too many UIs", this is like saying "I'm worried that there are too many Vim plugins".
Don't worry.
#drstrangelove
The Nvim 0.4 compositor-based UI is driving important features such as floating windows, detached layouts, and redraw performance. Eye-candy isn't a high priority, but the 'pumblend' feature (~200 LoC) is a fun demo of what's possible.
We expected it to ruffle feathers :)
neovim may have irrevocably fragmented the vim ecosystem, but it also enables pseudo-transparent popup menus, so it;s impossible to say if its bad or not,
Nice progress on the "luarocks-tag-release" GitHub Action:
LuaRocks is a chance for
@neovim
to have a real package manager. Fixing its issues is higher-leverage than creating another package manager.
January ? is
#neovim
anniversary. Someone on /r/vim dug up an early discussion:
> I think if people actually start using the fork, it will be hard to ignore it. The "only" thing stopping that is having ready-made builds.
kitty is the most impressive terminal emulator project I've seen in 15 years. 2x faster than ; advanced features; cross-platform. Maybe people will stop using urxvt and other stagnant garbage.
Formatting of documentation, wikis, code comments, bug reports, and other communications is a *functional* feature, *not cosmetic*. Useful content is made more valuable by thoughtful presentation.
Vim embraces the "unix philosophy", according to HN platitudes. So I wrote an article explaining how to compose Vim with other shell tools.
It's useful for automating text *edits*, as opposed to mere filtering.
Every ecosystem keeps re-inventing package managers. Why isn't there a "federated package spec" for "dumb" artifacts?
git provides nearly everything needed for an ecosystem-agnostic package manager, except a way to declare dependencies on external repos.
minimal Nvim config to highlight current window with a "border":
- local 'winhighlight' for WinSeparator/SignColumn
- dim CursorLine in non-current windows
prediction: covid-19 will be launchpad for:
- a new endless "war on virus" (cf. terrorism/poverty/etc.)
- expanded TSA
- 10x more plastic/packaging
- new liability/blame (being sick in public treated like smoking)
- more control, less freedom
impeccable article on emacs,
#neovim
etc.
> Emacs overfits to the needs and priorities of its maintainers
> Forking is incredibly difficult to pull off. ... requires unrelenting, sustained hard work ... you have to be a “special kind of crazy”
"redesign remote plugins" side quest:
- 300 lines of code (WIP)
- will allow deleting 5k lines of code + docs
Massively simplifies:
1. "wtf is a remote plugin?"
2. creating a remote plugin
3. maintenance
4. usage (no more :UpdateRemotePlugins)
[popular Python lib gets $30k, drama ensues]
me: "OSS participants tear each other apart for scraps."
drive-by: "$30k is the salary of a Bulgarian dev, you insensitive clod!"
me: "Perhaps we should ask why it's newsworthy that a top OSS project raised 1-year Bulgarian salary."
Fennel vs Lua:
- Fennel is still Lua. Same semantics + useful sugar.
- Destructuring, pattern-matching, nil-safe macros, expression-oriented.
- Names like pred?, side-eff!, deriv*, |length-of|, from->to, have surprising effect on readability.
Creating a new vscode/jetbrains extension is like "Call our sales team for pricing".
Creating a plugin for vim/emacs is "No email required, you're already using the app".
Clutter bad, obfuscation also bad, explicit good, DRY also good.
Best to let actual use-cases guide you: solve observed pain rather than anticipated pain. Refactoring tools give you that freedom: do non-clever thing first, be clever later if gain is obvious.
Exciting benefit of AI: project maintainers can now say to (human) developers, "I don't need you to write code. I need you to have good taste".
Humans can finally focus on elegance instead of entropy. Bots take care of mapping POJOs or whatever bullshit you were doing before.
@MasteringVim
Neovim's builtin 'winhighlight' feature can be used to achieve something similar, using the "NormalNC" highlight group. Try this (with multiple windows):
:set winhighlight=NormalNC:Comment
EU is a tech miasma.
So demotivating to know these Vogons are paid full-time to increase bureaucracy & risk of doing *anything at all*.
Neovim may not technically fall under this red tape, this time? Who knows. Safety First™
Reading up on the EU Cyber Resilience Act (CRA).
In short it’s an extensive list of requirements and validations for companies and individuals selling software in the EU.
A lot of time consuming and costly hoops to jump through. Fines up to 15 million Euros.
Oh I forgot. If
5-year AI prediction: improved products (cf. comp. vision in Google Photos), no AI overlords.
LLMs limited by:
1. copyright shitshow
2. training
3. sources of truth like github/SO
LLMs can't generate the sources of truth. Despite hype, LLM = "merely" 10x clippy + search engine.
6/ AI is the evolution of technology & AI tools will accelerate deflationary software & digital trends.
AI Agents + UX upgrade of web based OS + censorship-resistant p2p technology + financial recession where customers seek cheaper/free alternatives = disruption of gatekeepers.
to use Neovim as your kitty scrollback viewer ("pager"), add to kitty.conf:
scrollback_pager nvim --clean --cmd 'set eventignore=FileType' +'%s/\e\[[0-9;]*m//g' +'set nomodified readonly' +'$' -
todo: Nvim should have a builtin way to colorize ANSI escape codes.
"Please" is not needed in error messages, it is 90% noise and 10% annoying. No one will be offended by its absence, nor mollified by its presence.
Brevity before levity, density before courtesy, breakfast lunch'n dinna.
@louispilfold
@teej_dv
- mouse is enabled in
#neovim
0.8, as we continue to improve defaults without "two steps backwards".
- intro guide will be improved. I'm working on docs *heavily*.
- minimal UI is by design, wontfix.
- :checkhealth is the entrypoint for everything else, where possible.
vscode-neovim (aka "vscode is a Nvim GUI") continues to mature:
- :substitute preview ('inccommand') just works
- test story is improving
- deleting code, leveraging latest Nvim UI/API
"Programming as Theory Building", Peter Naur
The mind-map of a complex system can't be written down.
Code = compressed form of numerous interactions.
Extracting to non-code is so verbose, *consuming* it would take more time than grokking the code.
FWIW: the "sermon" half of the talk is not "Vim politics", it is "OSS culture", intended to address pervasive low-effort assumptions of how our tools should work.
I want to discredit the markov chains emitting faded, meaningless bumper stickers like "Emacs is a great OS...".
As long as
@Neovim
stays fast + maintainable, and the official docs + defaults favor "good taste", doesn't matter what "vscode features" it might flirt with.
Don't want spacemacs or a kitchen sink.
Do want nice plumbing.
Core team is aligned on this.
btw
#emacs
doesn't have this.
emacsclient is a thin shell that pipes the TUI (rendered on the server) to the local tty. Clients can't decide presentation/handling. Thus TRAMP, X11 forwarding, Xpra.
Everyone suffering under the dark blue of Vim's (unix) default colorscheme for the last 20 years has so endured because of a bad default: background=light.
Ultra-successful projects eventually manifest:
- Constraints which enable quality + success: ironically maximizes success yet ejects some users.
- Implicit, sincere "dare to fork": if carried out, ironically multiplies and perpetuates the success of the project.
didn't mean for it to come to this:
> Vim could play a sound. Think of a gentle "ping" to indicate the cursor can't move there, or a "tadaa" when a background build finishes ... There are some audio libraries floating around
> - Bram Moolenaar
basecamp 2021 policy:
> No more political discussions. No more committees.
> We don't have to solve deep social problems.
> We make software.
Clarity ("we decided X") and accountability ("if you don't like it, blame us and move on") are energizing.
very impressed w/
@Roblox
. in a few hours, my 13yo son and I created a maze game w/ scripted (Lua ❤️) events, sound effects, teleport effect ... runs on all devices + multiplayer automatically.
in contrast, Unity was full of bugs + terrible UX + performance.
taxophilia: a priori obsession with type systems.
Example: "If static typing is important, why the fuck are you using {java,c#,c++,...} instead of Idris? Taxophiles..."
> Programmers frequently turn to the joy of open source exactly because it exists outside the normal employment dynamics of quid-pro-quo. That's the relief.
Surprising but true. Developing
@neovim
is an alluring palliative for the agony of my "day job".
> Specify the problem *independently* of the solution ... can be a surprisingly difficult and enlightening task. It has ... led me to discover that a "correct" algorithm did not really accomplish what I wanted.
— Leslie Lamport
It just works. Portable HHGTTG, <10 GB.
$ ./wizardcoder.llamafile -p $'```lua\nlocal function nvimBufText(bufnr)\n' -r $'```\n'
local function nvimBufText(bufnr)
local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
return table.concat(lines, "\n")
end
I wrote a blog post "Bash One-Liners for LLMs" which explains how to use yesterday's llamafile v0.3 release to analyze image files and URLs in your shell scripts.
"Data driven" usually means CYA.
Where's your empirical evidence (data!) of ROI on your telemetry apparatus vs spending that (cognitive, etc.) budget on actual dev work? For non-mature product, it's a distraction.
data science ~ agile consulting 2.0