pokeyrule
pokeyrule on Hacker News
Ok awesome thanks I kept waiting for someone to call me on this one and I was starting to worry that no one would :). I don't believe it's Turing complete yet, so I think you may be right to call me on it. Kind of depends how you define "programming language", I guess. For what it's worth, I talk a bit about Cursorless from the perspective of programming language paradigms starting at 31:30 (
https://www.youtube.com/watch?v=NcUJnmBqHTY&t=1890s)
I arrived at this post by googling "I want you to act as a Linux terminal." I was expecting to find some standard prompt that I could paste in to chatgpt to start a session. I pasted it in without reading it and had...quite a surprising convo with chatgpt before going back, reading the prompt, and cracking up
Check out the #cursorless-everywhere channel in the Talon voice slack workspace; people are already working on an emacs port
I'll also add that the cursor movement functionality, while quite useful as you get started, becomes less and less relevant as you get comfortable with the more advanced Cursorless commands for syntax tree manipulation
I think that what makes Cursorless "really different for editing/writing code" (per OP) is that it is a voice-controlled structure editor focused on maximizing efficiency. Cursorless leverages tree-sitter to maintain an up-to-date syntax tree of your code, and then allows you to manipulate your code using voice commands that target structures like functions, classes, arguments, etc. Cursorless also has an emphasis on composable / chainable commands. For example
https://www.youtube.com/watch?v=EwdpPN-21-g . As you become fluent, you'll find that the emphasis on higher level syntactic constructs and chained commands enables you to program faster than you could using a keyboard, without needing to worry about low-level details like cleaning up commas, selecting functions with a mouse, etc.
But as the creator of Cursorless, I'll allow for the possibility that I'm slightly biased
Thanks jiehong!
The reason that the hats are always present is that the way to code faster by voice than be keyboard is to speak fluently, minimising pauses, the way we speak regular human languages. If we had to say a command and then wait for the hats to appear, that would break the chain.
Re mapping, we use something called the "Command server", which allows us to use file-based RPC to run commands in VSCode. That way it is easy to send more complex commands, which are required by Cursorless
IntelliJ support is definitely one of the most requested features; once I'm done rewriting some of the core engine I'll probably take a swing at that. Here's the issue that tracks extracting cursorless into a node.js server so that it can be used by other editors: https://github.com/pokey/cursorless-vscode/issues/435
I think the distinction is "programming" refers to just dictating some code from scratch. "editing code" refers to changing code that is already written.
For the former ("programming"), there are many commands that can be used to rapidly output code. For example, a user can say "funky hello world" to get something like
function helloWorld() {
}
But if you're trying to edit code that already exists, it can be a challenge to do so without a mouse and keyboard, in part because you need to do a lot of navigation.
I personally believe Cursorless solves that problem better than a keyboard and mouse, but I have to imagine I'm a bit biased on that point :)
creator of Cursorless here. Happy to answer any questions