mirror of https://github.com/lapce/lapce.git
file dirty indication
This commit is contained in:
parent
6c0084e164
commit
d5640d2c74
|
@ -511,6 +511,7 @@ fn apply_delta(
|
|||
) {
|
||||
self.rev += 1;
|
||||
self.dirty = true;
|
||||
ui_state.dirty = true;
|
||||
let (iv, newlen) = delta.summary();
|
||||
let old_logical_end_line = self.rope.line_of_offset(iv.end) + 1;
|
||||
let old_logical_end_offset = self.rope.offset_of_line(old_logical_end_line);
|
||||
|
|
|
@ -923,6 +923,7 @@ pub fn open_file(
|
|||
let editor = self.editors.get_mut(&self.active).unwrap();
|
||||
editor.buffer_id = Some(buffer_id.clone());
|
||||
editor.selection = Selection::caret(offset);
|
||||
ui_state.get_editor_mut(&self.active).buffer_id = buffer_id.clone();
|
||||
ctx.submit_command(Command::new(
|
||||
LAPCE_UI_COMMAND,
|
||||
LapceUICommand::ForceScrollTo(view_offset.x, view_offset.y),
|
||||
|
@ -1246,6 +1247,7 @@ pub fn fill_text_layouts(
|
|||
let buffer_ui =
|
||||
Arc::make_mut(Arc::make_mut(&mut data.buffers).get_mut(buffer_id)?);
|
||||
let buffer = self.buffers.get_mut(buffer_id)?;
|
||||
buffer_ui.dirty = buffer.dirty;
|
||||
let line_height = env.get(LapceTheme::EDITOR_LINE_HEIGHT);
|
||||
let start_line = (offset.y / line_height) as usize;
|
||||
let size = ctx.size();
|
||||
|
@ -1616,6 +1618,34 @@ pub fn apply_edits_and_save(
|
|||
}
|
||||
}
|
||||
}
|
||||
let editor = self.editors.get_mut(&self.active)?;
|
||||
let buffer_id = editor.buffer_id.clone()?;
|
||||
let buffer = self.buffers.get_mut(&buffer_id)?;
|
||||
let state = LAPCE_APP_STATE.get_tab_state(&self.window_id, &self.tab_id);
|
||||
let window_id = self.window_id;
|
||||
let tab_id = self.tab_id;
|
||||
println!("send save");
|
||||
state.proxy.lock().as_ref().unwrap().save(
|
||||
buffer.rev,
|
||||
buffer.id,
|
||||
Box::new(move |result| {
|
||||
println!("got save result {:?}", result);
|
||||
if let Ok(r) = result {
|
||||
let state = LAPCE_APP_STATE.get_tab_state(&window_id, &tab_id);
|
||||
let mut editor_split = state.editor_split.lock();
|
||||
let buffer = editor_split.buffers.get_mut(&buffer_id).unwrap();
|
||||
buffer.dirty = false;
|
||||
for (view_id, editor) in editor_split.editors.iter() {
|
||||
if editor.buffer_id.as_ref() == Some(&buffer_id) {
|
||||
LAPCE_APP_STATE.submit_ui_command(
|
||||
LapceUICommand::FillTextLayouts,
|
||||
view_id.clone(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
);
|
||||
None
|
||||
}
|
||||
|
||||
|
@ -1629,7 +1659,6 @@ pub fn apply_edits(
|
|||
let editor = self.editors.get_mut(&self.active)?;
|
||||
let buffer_id = editor.buffer_id.clone()?;
|
||||
let buffer = self.buffers.get_mut(&buffer_id)?;
|
||||
let buffer_ui_state = ui_state.get_buffer_mut(&buffer_id);
|
||||
if buffer.rev != rev {
|
||||
return None;
|
||||
}
|
||||
|
@ -1643,6 +1672,8 @@ pub fn apply_edits(
|
|||
(selection, edit.new_text.clone())
|
||||
})
|
||||
.collect();
|
||||
|
||||
let buffer_ui_state = ui_state.get_buffer_mut(&buffer_id);
|
||||
buffer.edit_multiple(
|
||||
ctx,
|
||||
buffer_ui_state,
|
||||
|
@ -2344,6 +2375,9 @@ pub fn run_command(
|
|||
let editor = self.editors.get_mut(&self.active)?;
|
||||
let buffer_id = editor.buffer_id.clone()?;
|
||||
let buffer = self.buffers.get_mut(&buffer_id)?;
|
||||
if !buffer.dirty {
|
||||
return None;
|
||||
}
|
||||
let window_id = self.window_id;
|
||||
let tab_id = self.tab_id;
|
||||
let rev = buffer.rev;
|
||||
|
@ -2359,6 +2393,7 @@ pub fn run_command(
|
|||
.get_document_formatting(
|
||||
buffer.id,
|
||||
Box::new(move |result| {
|
||||
println!("get document formating");
|
||||
let result = match result {
|
||||
Ok(r) => Ok(r),
|
||||
Err(e) => Err(anyhow!("{:?}", e)),
|
||||
|
@ -2384,12 +2419,12 @@ pub fn run_command(
|
|||
// }
|
||||
// }
|
||||
|
||||
let buffer_ui_state = ui_state.get_buffer_mut(&buffer_id);
|
||||
let buffer = self.buffers.get_mut(&buffer_id)?;
|
||||
if let Err(e) = buffer.save() {
|
||||
println!("buffer save error {}", e);
|
||||
}
|
||||
buffer_ui_state.dirty = buffer.dirty;
|
||||
// let buffer_ui_state = ui_state.get_buffer_mut(&buffer_id);
|
||||
// let buffer = self.buffers.get_mut(&buffer_id)?;
|
||||
// if let Err(e) = buffer.save() {
|
||||
// println!("buffer save error {}", e);
|
||||
// }
|
||||
// buffer_ui_state.dirty = buffer.dirty;
|
||||
// LAPCE_APP_STATE
|
||||
// .get_tab_state(&self.window_id, &self.tab_id)
|
||||
// .lsp
|
||||
|
@ -2514,13 +2549,6 @@ fn update(
|
|||
) {
|
||||
let editor = data.get_editor(&self.view_id);
|
||||
let old_editor = old_data.get_editor(&self.view_id);
|
||||
let cursor = editor.cursor;
|
||||
let old_cursor = old_editor.cursor;
|
||||
|
||||
if cursor.0 != old_cursor.0 {
|
||||
ctx.request_paint();
|
||||
return;
|
||||
}
|
||||
|
||||
if editor.buffer_id != old_editor.buffer_id {
|
||||
ctx.request_paint();
|
||||
|
@ -2870,6 +2898,7 @@ fn update(
|
|||
) {
|
||||
self.editor.update(ctx, data, env);
|
||||
self.gutter.update(ctx, data, env);
|
||||
self.header.update(ctx, data, env);
|
||||
// self.update(ctx, old_data, data, env);
|
||||
}
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ pub fn save(&self, rev: u64, buffer_id: BufferId, f: Box<dyn Callback>) {
|
|||
self.peer.send_rpc_request_async(
|
||||
"save",
|
||||
&json!({
|
||||
"rev": rev,
|
||||
"buffer_id": buffer_id,
|
||||
}),
|
||||
f,
|
||||
|
|
|
@ -240,6 +240,7 @@ fn handle_request(&self, id: RequestId, rpc: Request) {
|
|||
self.lsp.lock().get_document_formatting(id, buffer);
|
||||
}
|
||||
Request::Save { rev, buffer_id } => {
|
||||
eprintln!("receive save");
|
||||
let buffers = self.buffers.lock();
|
||||
let buffer = buffers.get(&buffer_id).unwrap();
|
||||
self.respond(id, buffer.save(rev).map(|r| json!({})));
|
||||
|
|
|
@ -6,10 +6,10 @@ pub struct LapceFont {
|
|||
|
||||
impl LapceFont {
|
||||
pub fn new(font_name: &str, size: f64) {
|
||||
let font =
|
||||
FontDescriptor::new(FontFamily::new_unchecked("Cascadia Code"))
|
||||
.with_size(size);
|
||||
let font = FontDescriptor::new(FontFamily::new_unchecked("Cascadia Code"))
|
||||
.with_size(size);
|
||||
let mut text_layout = TextLayout::new("W");
|
||||
|
||||
text_layout.set_font(font.clone());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue