mirror of
https://github.com/gitui-org/gitui
synced 2026-05-23 17:08:21 +00:00
Improve syntax detection (#2524)
* Improve syntax detection Currently, gitui prioritizes file extensions for syntax detection. When a file lacks an extension (e.g. Makefile), or the extension isn't tied to a specific format (e.g. .lock), it disables syntax highlighting. Gitui will now try to detect the syntax from the entire filename and the first line of the file using find_syntax_for_file(). --------- Co-authored-by: extrawurst <mail@rusticorn.com>
This commit is contained in:
parent
cb4294a72b
commit
338dc2f4de
2 changed files with 12 additions and 16 deletions
|
|
@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
## Unreleased
|
||||
|
||||
### Changed
|
||||
* improve syntax highlighting file detection [[@acuteenvy](https://github.com/acuteenvy)] ([#2524](https://github.com/extrawurst/gitui/pull/2524))
|
||||
* After commit: jump back to unstaged area [[@tommady](https://github.com/tommady)] ([#2476](https://github.com/extrawurst/gitui/issues/2476))
|
||||
|
||||
## [0.27.0] - 2024-01-14
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ use once_cell::sync::Lazy;
|
|||
use ratatui::text::{Line, Span};
|
||||
use scopetime::scope_time;
|
||||
use std::{
|
||||
ffi::OsStr,
|
||||
ops::Range,
|
||||
path::{Path, PathBuf},
|
||||
sync::{Arc, Mutex},
|
||||
|
|
@ -73,24 +72,20 @@ impl SyntaxText {
|
|||
params: &RunParams<AsyncAppNotification, ProgressPercent>,
|
||||
) -> asyncgit::Result<Self> {
|
||||
scope_time!("syntax_highlighting");
|
||||
|
||||
let mut state = {
|
||||
scope_time!("syntax_highlighting.0");
|
||||
let syntax = file_path
|
||||
.extension()
|
||||
.and_then(OsStr::to_str)
|
||||
.map_or_else(
|
||||
|| {
|
||||
SYNTAX_SET.find_syntax_by_path(
|
||||
file_path.to_str().unwrap_or_default(),
|
||||
)
|
||||
},
|
||||
|ext| SYNTAX_SET.find_syntax_by_extension(ext),
|
||||
);
|
||||
let plain_text = || SYNTAX_SET.find_syntax_plain_text();
|
||||
let syntax = SYNTAX_SET
|
||||
.find_syntax_for_file(
|
||||
file_path.to_str().unwrap_or_default(),
|
||||
)
|
||||
.unwrap_or_else(|e| {
|
||||
log::error!("Could not read the file to detect its syntax: {e}");
|
||||
Some(plain_text())
|
||||
})
|
||||
.unwrap_or_else(plain_text);
|
||||
|
||||
ParseState::new(syntax.unwrap_or_else(|| {
|
||||
SYNTAX_SET.find_syntax_plain_text()
|
||||
}))
|
||||
ParseState::new(syntax)
|
||||
};
|
||||
|
||||
let highlighter = Highlighter::new(
|
||||
|
|
|
|||
Loading…
Reference in a new issue