master #7

Merged
candle merged 15 commits from master into release 2025-07-28 21:24:46 +00:00
2 changed files with 16 additions and 7 deletions
Showing only changes of commit c50c9b6779 - Show all commits

View File

@ -80,6 +80,8 @@ pub(super) fn editor_view_ui(ui: &mut egui::Ui, app: &mut TextEditor) -> egui::R
let show_shortcuts = app.show_shortcuts; let show_shortcuts = app.show_shortcuts;
let word_wrap = app.word_wrap; let word_wrap = app.word_wrap;
let font_size = app.font_size; let font_size = app.font_size;
let font_id = app.get_font_id();
let syntax_highlighting_enabled = app.syntax_highlighting;
let reset_zoom_key = egui::Id::new("editor_reset_zoom"); let reset_zoom_key = egui::Id::new("editor_reset_zoom");
let should_reset_zoom = ui let should_reset_zoom = ui
@ -164,26 +166,29 @@ pub(super) fn editor_view_ui(ui: &mut egui::Ui, app: &mut TextEditor) -> egui::R
f32::INFINITY f32::INFINITY
}; };
// Determine the language for syntax highlighting
let language = get_language_from_extension(active_tab.file_path.as_deref()); let language = get_language_from_extension(active_tab.file_path.as_deref());
// Create a code theme based on the current system theme visuals
let theme = create_code_theme_from_visuals(ui.visuals(), font_size); let theme = create_code_theme_from_visuals(ui.visuals(), font_size);
let mut layouter = |ui: &egui::Ui, string: &dyn egui::TextBuffer, wrap_width: f32| { let mut layouter = |ui: &egui::Ui, string: &dyn egui::TextBuffer, wrap_width: f32| {
let text = string.as_str(); let text = string.as_str();
let mut layout_job = if language == "txt" { let mut layout_job = if syntax_highlighting_enabled && language != "txt" {
syntax_highlighting::highlight(ui.ctx(), &ui.style().clone(), &theme, text, "")
} else {
syntax_highlighting::highlight(ui.ctx(), &ui.style().clone(), &theme, text, &language) syntax_highlighting::highlight(ui.ctx(), &ui.style().clone(), &theme, text, &language)
} else {
syntax_highlighting::highlight(ui.ctx(), &ui.style().clone(), &theme, text, "")
}; };
if syntax_highlighting_enabled && language != "txt" {
for section in &mut layout_job.sections {
section.format.font_id = font_id.clone();
}
}
layout_job.wrap.max_width = wrap_width; layout_job.wrap.max_width = wrap_width;
ui.fonts(|f| f.layout_job(layout_job)) ui.fonts(|f| f.layout_job(layout_job))
}; };
let text_edit = egui::TextEdit::multiline(&mut active_tab.content) let text_edit = egui::TextEdit::multiline(&mut active_tab.content)
.frame(false) .frame(false)
.font(egui::TextStyle::Monospace)
.code_editor() .code_editor()
.desired_width(desired_width) .desired_width(desired_width)
.desired_rows(0) .desired_rows(0)

View File

@ -185,6 +185,10 @@ pub(crate) fn menu_bar(app: &mut TextEditor, ctx: &egui::Context) {
app.save_config(); app.save_config();
ui.close_kind(UiKind::Menu); ui.close_kind(UiKind::Menu);
} }
if ui.checkbox(&mut app.syntax_highlighting, "Syntax Highlighting").clicked() {
app.save_config();
ui.close_kind(UiKind::Menu);
}
if ui.checkbox(&mut app.word_wrap, "Word Wrap").clicked() { if ui.checkbox(&mut app.word_wrap, "Word Wrap").clicked() {
app.save_config(); app.save_config();
ui.close_kind(UiKind::Menu); ui.close_kind(UiKind::Menu);