From 011154abcbf837e42b0d3fa63e13561ae53d503d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E9=9B=85=20=C2=B7=20Misaki=20Masa?= Date: Sat, 5 Aug 2023 16:49:23 +0800 Subject: [PATCH] feat: more language support in highlighting (#22) --- Cargo.lock | 12 ++++++++++++ core/Cargo.toml | 1 + core/src/manager/preview.rs | 5 +++-- cspell.json | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b07c3d17..a9343c69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -272,6 +272,7 @@ dependencies = [ "tracing", "trash", "unicode-width", + "yazi-prebuild", ] [[package]] @@ -2026,6 +2027,17 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "yazi-prebuild" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81ddff73fa26e54bd54c652fda6c42ef86519b71f09265ef358a061f7bb92c8e" +dependencies = [ + "anyhow", + "syntect", + "walkdir", +] + [[package]] name = "zune-inflate" version = "0.2.54" diff --git a/core/Cargo.toml b/core/Cargo.toml index fb767613..4eac2fa8 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -25,3 +25,4 @@ tokio = { version = "^1", features = [ "parking_lot", "macros", "rt-mult tracing = "^0" trash = "^3" unicode-width = "^0" +yazi-prebuild = "^0" diff --git a/core/src/manager/preview.rs b/core/src/manager/preview.rs index 1aa6fda0..f23919e9 100644 --- a/core/src/manager/preview.rs +++ b/core/src/manager/preview.rs @@ -5,7 +5,7 @@ use anyhow::{anyhow, bail, Result}; use config::{PREVIEW, THEME}; use ratatui::prelude::Rect; use shared::{tty_size, MimeKind}; -use syntect::{easy::HighlightFile, highlighting::{Theme, ThemeSet}, parsing::SyntaxSet, util::as_24_bit_terminal_escaped}; +use syntect::{dumps::from_uncompressed_data, easy::HighlightFile, highlighting::{Theme, ThemeSet}, parsing::SyntaxSet, util::as_24_bit_terminal_escaped}; use tokio::{fs, task::JoinHandle}; use super::{ALL_RATIO, CURRENT_RATIO, PARENT_RATIO, PREVIEW_BORDER, PREVIEW_MARGIN, PREVIEW_RATIO}; @@ -157,7 +157,8 @@ impl Preview { pub async fn highlight(path: &Path, incr: Arc) -> Result { let tick = incr.load(Ordering::Relaxed); - let syntax = SYNTECT_SYNTAX.get_or_init(|| SyntaxSet::load_defaults_newlines()); + let syntax = + SYNTECT_SYNTAX.get_or_init(|| from_uncompressed_data(yazi_prebuild::syntaxes()).unwrap()); let theme = SYNTECT_THEME.get_or_init(|| { let from_file = || -> Result { let file = File::open(&THEME.preview.syntect_theme)?; diff --git a/cspell.json b/cspell.json index b40739f3..a0e3fba6 100644 --- a/cspell.json +++ b/cspell.json @@ -1 +1 @@ -{"flagWords":[],"words":["Punct","KEYMAP","splitn","crossterm","YAZI","unar","peekable","ratatui","syntect","pbpaste","pbcopy","ffmpegthumbnailer","oneshot","Posix","Lsar","XADDOS","zoxide","cands","Deque","precache","imageops","IFBLK","IFCHR","IFDIR","IFIFO","IFLNK","IFMT","IFSOCK","IRGRP","IROTH","IRUSR","ISGID","ISUID","ISVTX","IWGRP","IWOTH","IWUSR","IXGRP","IXOTH","IXUSR","libc","winsize","TIOCGWINSZ","xpixel","ypixel","ioerr","appender","Catppuccin","macchiato","gitmodules","Dotfiles","bashprofile","vimrc","flac","webp","exiftool","mediainfo","ripgrep","nvim","indexmap","indexmap","unwatch","canonicalize","serde","fsevent","Ueberzug","iterm","wezterm","sixel","chafa","ueberzugpp","️ Überzug","️ Überzug","Konsole","Alacritty","Überzug","pkgs","paru","unarchiver","pdftoppm","poppler"],"version":"0.2","language":"en"} +{"words":["Punct","KEYMAP","splitn","crossterm","YAZI","unar","peekable","ratatui","syntect","pbpaste","pbcopy","ffmpegthumbnailer","oneshot","Posix","Lsar","XADDOS","zoxide","cands","Deque","precache","imageops","IFBLK","IFCHR","IFDIR","IFIFO","IFLNK","IFMT","IFSOCK","IRGRP","IROTH","IRUSR","ISGID","ISUID","ISVTX","IWGRP","IWOTH","IWUSR","IXGRP","IXOTH","IXUSR","libc","winsize","TIOCGWINSZ","xpixel","ypixel","ioerr","appender","Catppuccin","macchiato","gitmodules","Dotfiles","bashprofile","vimrc","flac","webp","exiftool","mediainfo","ripgrep","nvim","indexmap","indexmap","unwatch","canonicalize","serde","fsevent","Ueberzug","iterm","wezterm","sixel","chafa","ueberzugpp","️ Überzug","️ Überzug","Konsole","Alacritty","Überzug","pkgs","paru","unarchiver","pdftoppm","poppler","prebuild"],"language":"en","version":"0.2","flagWords":[]}