Menu
Sign In Search Podcasts Charts People & Topics Add Podcast API Pricing

Conrad Irwin

๐Ÿ‘ค Person
459 total appearances

Appearances Over Time

Podcast Appearances

Rust in Production
Zed with Conrad Irwin

This is the key that was pressed. We then send that to the matcher. And we're like, OK, did either the character that was generated or the key that was pressed with the Modifiers or Shift Control command Does that match any of the defined bindings? If it matches the binding, we do the action. If it doesn't, then we input the text.

Rust in Production
Zed with Conrad Irwin

And one of the things that we do to try and make the keyboard bindings easier to program is that each component in the app, so the editor is one big component, has a bunch of key bindings. And then the pane, which contains the editor, has a bunch of key bindings. And so you can set them at the right level.

Rust in Production
Zed with Conrad Irwin

And one of the things that we do to try and make the keyboard bindings easier to program is that each component in the app, so the editor is one big component, has a bunch of key bindings. And then the pane, which contains the editor, has a bunch of key bindings. And so you can set them at the right level.

Rust in Production
Zed with Conrad Irwin

And one of the things that we do to try and make the keyboard bindings easier to program is that each component in the app, so the editor is one big component, has a bunch of key bindings. And then the pane, which contains the editor, has a bunch of key bindings. And so you can set them at the right level.

Rust in Production
Zed with Conrad Irwin

And that means you can have multiple different meanings for a given key binding, depending on where you're focused right now. which is really important for something that's complicated as that.

Rust in Production
Zed with Conrad Irwin

And that means you can have multiple different meanings for a given key binding, depending on where you're focused right now. which is really important for something that's complicated as that.

Rust in Production
Zed with Conrad Irwin

And that means you can have multiple different meanings for a given key binding, depending on where you're focused right now. which is really important for something that's complicated as that.

Rust in Production
Zed with Conrad Irwin

So as you mentioned, we have the ability to do multi-key keystrokes. So if you do a G and then an R, it goes to all references in that mode. And so that piece is a state machine of like, okay, is there a key? Like, could it be a pending match? Is it something else? But once it's happened, it really just happens. And it's kind of like a callback into the rest of the code.

Rust in Production
Zed with Conrad Irwin

So as you mentioned, we have the ability to do multi-key keystrokes. So if you do a G and then an R, it goes to all references in that mode. And so that piece is a state machine of like, okay, is there a key? Like, could it be a pending match? Is it something else? But once it's happened, it really just happens. And it's kind of like a callback into the rest of the code.

Rust in Production
Zed with Conrad Irwin

So as you mentioned, we have the ability to do multi-key keystrokes. So if you do a G and then an R, it goes to all references in that mode. And so that piece is a state machine of like, okay, is there a key? Like, could it be a pending match? Is it something else? But once it's happened, it really just happens. And it's kind of like a callback into the rest of the code.

Rust in Production
Zed with Conrad Irwin

And so you hit GR and it goes, okay, run the final references code. That's going to probably, in that case, kick off an async task. So we don't want to run that on the main thread because we're going to communicate back to the language server and ask it questions. So we kick it to the background, wait for the response, and then update the UI in response to that.

Rust in Production
Zed with Conrad Irwin

And so you hit GR and it goes, okay, run the final references code. That's going to probably, in that case, kick off an async task. So we don't want to run that on the main thread because we're going to communicate back to the language server and ask it questions. So we kick it to the background, wait for the response, and then update the UI in response to that.

Rust in Production
Zed with Conrad Irwin

And so you hit GR and it goes, okay, run the final references code. That's going to probably, in that case, kick off an async task. So we don't want to run that on the main thread because we're going to communicate back to the language server and ask it questions. So we kick it to the background, wait for the response, and then update the UI in response to that.

Rust in Production
Zed with Conrad Irwin

So using a lot of the ASIC Rust stuff to make that not happen on the main thread.

Rust in Production
Zed with Conrad Irwin

So using a lot of the ASIC Rust stuff to make that not happen on the main thread.

Rust in Production
Zed with Conrad Irwin

So using a lot of the ASIC Rust stuff to make that not happen on the main thread.

Rust in Production
Zed with Conrad Irwin

The, I'm not sure exactly if AsyncRust solves that problem, but the GPUI framework has some tools for it. So mostly the UI is a tree. It's really the only data structure you can have in Rust where you have the root view that maintains handles to all of the subviews.

Rust in Production
Zed with Conrad Irwin

The, I'm not sure exactly if AsyncRust solves that problem, but the GPUI framework has some tools for it. So mostly the UI is a tree. It's really the only data structure you can have in Rust where you have the root view that maintains handles to all of the subviews.

Rust in Production
Zed with Conrad Irwin

The, I'm not sure exactly if AsyncRust solves that problem, but the GPUI framework has some tools for it. So mostly the UI is a tree. It's really the only data structure you can have in Rust where you have the root view that maintains handles to all of the subviews.

Rust in Production
Zed with Conrad Irwin

But obviously often you want to be able to refer back up the tree of like, okay, I'm an editor, but I know I'm rendered inside a pane or I know I'm rendered inside something else. And so we have a system of kind of strong pointers and weak pointers. And that works pretty well for avoiding it.