My personal-knowledge-system, with deeply integrated task tracking and long term goal planning capabilities.
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: more rigorous selection logic after closing zettel

+19 -17
+1
src/lsp/mod.rs
··· 54 54 } 55 55 56 56 async fn completion(&self, params: CompletionParams) -> Result<Option<CompletionResponse>> { 57 + eprintln!("WHATTDAFUCKKK"); 57 58 let Some(trigger) = params 58 59 .context 59 60 .as_ref()
+4 -2
src/tui/app.rs
··· 11 11 use crate::{ 12 12 config::Config, 13 13 tui::{Event, Tui, components::Viewport}, 14 - types::KastenHandle, 14 + types::{KastenHandle, ZettelId}, 15 15 }; 16 16 17 17 use super::{components::Component, signal::Signal}; ··· 207 207 208 208 debug!("successfully processed path: {}", path.display()); 209 209 210 - self.signal_tx.send(Signal::ClosedZettel)?; 210 + let zid: ZettelId = path.try_into()?; 211 + 212 + self.signal_tx.send(Signal::ClosedZettel { zid })?; 211 213 212 214 tui.terminal.clear()?; 213 215 tui.enter()?;
+9 -13
src/tui/components/zk/mod.rs
··· 250 250 return Ok(Some(Signal::Helix { path })); 251 251 } 252 252 253 - Signal::ClosedZettel => { 254 - let selected = self 255 - .zettel_list 256 - .state 257 - .selected() 258 - .expect("This must be the zettel we just edited"); 259 - 253 + Signal::ClosedZettel { zid } => { 260 254 // regenerate a fresh zettel list 261 255 self.zettel_list = ZettelList::new( 262 256 self.get_zettels_by_current_query().await?, ··· 264 258 self.zettel_list.width, 265 259 ); 266 260 267 - let Some(zid) = self.zettel_list.id_list.get(selected) else { 268 - return Ok(None); 269 - }; 270 - 271 261 let kt = self.kh.read().await; 272 262 273 - let zettel = Zettel::fetch_from_db(zid, &kt.db) 263 + let zettel = Zettel::fetch_from_db(&zid, &kt.db) 274 264 .await? 275 265 .expect("invariant broken, we just closed this zettel"); 276 266 267 + let idx = self 268 + .zettel_list 269 + .id_list 270 + .iter() 271 + .position(|id| *id == zettel.id); 272 + 277 273 // reset the state of the component 278 274 self.search.clear_query(); 279 - self.zettel_list.state.select_first(); 275 + self.zettel_list.state.select(idx); 280 276 281 277 self.zettel_view = ZettelView::from(&zettel); 282 278 self.preview = Preview::from(zettel.content(&kt.index).clone());
+5 -2
src/tui/signal.rs
··· 5 5 6 6 use serde::{Deserialize, Serialize}; 7 7 8 - use crate::tui::Region; 8 + use crate::{tui::Region, types::ZettelId}; 9 9 10 10 /// The varying signals that can be emitted. 11 11 #[derive(Debug, Clone, PartialEq, Eq, Display, Serialize, Deserialize)] ··· 33 33 /// User asks to open a `Zettel` 34 34 OpenZettel, 35 35 /// The user is done editing a `Zettel` 36 - ClosedZettel, 36 + ClosedZettel { 37 + /// the id of the `Zettel` that was closed 38 + zid: ZettelId, 39 + }, 37 40 38 41 /// this is fucking temporary 39 42 Helix {