mirror of
https://github.com/eza-community/eza
synced 2024-09-30 05:06:30 +00:00
feat: Add a new filetype for source code files
This commit is contained in:
parent
879a0c9e95
commit
5f4e8ac3bf
|
@ -40,8 +40,9 @@ files; setting `EZA_COLORS="reset"` will highlight nothing.
|
|||
- Documents (pdf, doc, dvi) are a less faint blue.
|
||||
- Compressed files (zip, tgz, Z) are red.
|
||||
- Temporary files (tmp, swp, ~) are grey.
|
||||
- Compiled files (class, o, pyc) are faint orange. A file is also counted as compiled if it uses a common extension and is
|
||||
- Compiled files (class, o, pyc) are yellow. A file is also counted as compiled if it uses a common extension and is
|
||||
in the same directory as one of its source files: styles.css will count as compiled when next to styles.less or styles.sass, and scripts.js when next to scripts.ts or scripts.coffee.
|
||||
- Source files (cpp, js, java) are bright yellow.
|
||||
|
||||
|
||||
## See also
|
||||
|
|
|
@ -282,6 +282,9 @@ LIST OF CODES
|
|||
`bu`
|
||||
: a regular file that is used to build a project (ex: Makefile)
|
||||
|
||||
`sc`
|
||||
: a regular file that is source code
|
||||
|
||||
`Sn`
|
||||
: No security context on a file
|
||||
|
||||
|
|
|
@ -23,8 +23,9 @@ pub enum FileType {
|
|||
Temp,
|
||||
Compiled,
|
||||
Build, // A “build file is something that can be run or activated somehow in order to
|
||||
// kick off the build of a project. It’s usually only present in directories full of
|
||||
// source code.
|
||||
// kick off the build of a project. It’s usually only present in directories full of
|
||||
// source code.
|
||||
Source,
|
||||
}
|
||||
|
||||
/// Mapping from full filenames to file type.
|
||||
|
@ -131,6 +132,7 @@ const EXTENSION_TYPES: Map<&'static str, FileType> = phf_map! {
|
|||
/* Video files */
|
||||
"avi" => FileType::Video,
|
||||
"flv" => FileType::Video,
|
||||
"h264" => FileType::Video,
|
||||
"heics" => FileType::Video,
|
||||
"m2ts" => FileType::Video,
|
||||
"m2v" => FileType::Video,
|
||||
|
@ -156,10 +158,15 @@ const EXTENSION_TYPES: Map<&'static str, FileType> = phf_map! {
|
|||
"opus" => FileType::Music,
|
||||
"wma" => FileType::Music,
|
||||
/* Lossless music, rather than any other kind of data... */
|
||||
"aif" => FileType::Lossless,
|
||||
"aifc" => FileType::Lossless,
|
||||
"aiff" => FileType::Lossless,
|
||||
"alac" => FileType::Lossless,
|
||||
"ape" => FileType::Lossless,
|
||||
"flac" => FileType::Lossless,
|
||||
"pcm" => FileType::Lossless,
|
||||
"wav" => FileType::Lossless,
|
||||
"wv" => FileType::Lossless,
|
||||
/* Cryptology files */
|
||||
"asc" => FileType::Crypto, // GnuPG ASCII armored file
|
||||
"gpg" => FileType::Crypto, // GnuPG encrypted file
|
||||
|
@ -201,6 +208,7 @@ const EXTENSION_TYPES: Map<&'static str, FileType> = phf_map! {
|
|||
/* Compressed/archive files */
|
||||
"7z" => FileType::Compressed,
|
||||
"ar" => FileType::Compressed,
|
||||
"arj" => FileType::Compressed,
|
||||
"br" => FileType::Compressed,
|
||||
"bz" => FileType::Compressed,
|
||||
"bz2" => FileType::Compressed,
|
||||
|
@ -240,8 +248,10 @@ const EXTENSION_TYPES: Map<&'static str, FileType> = phf_map! {
|
|||
"bak" => FileType::Temp,
|
||||
"bk" => FileType::Temp,
|
||||
"bkp" => FileType::Temp,
|
||||
"crdownload" => FileType::Temp,
|
||||
"download" => FileType::Temp,
|
||||
"fdmdownload"=> FileType::Temp,
|
||||
"part" => FileType::Temp,
|
||||
"swn" => FileType::Temp,
|
||||
"swo" => FileType::Temp,
|
||||
"swp" => FileType::Temp,
|
||||
|
@ -250,6 +260,10 @@ const EXTENSION_TYPES: Map<&'static str, FileType> = phf_map! {
|
|||
"a" => FileType::Compiled, // Unix static library
|
||||
"bundle" => FileType::Compiled, // Mac OS X application bundle
|
||||
"class" => FileType::Compiled, // Java class file
|
||||
"cma" => FileType::Compiled, // OCaml bytecode library
|
||||
"cmi" => FileType::Compiled, // OCaml interface
|
||||
"cmo" => FileType::Compiled, // OCaml bytecode object
|
||||
"cmx" => FileType::Compiled, // OCaml bytecode object for inlining
|
||||
"dll" => FileType::Compiled, // Windows dynamic link library
|
||||
"dylib" => FileType::Compiled, // Mach-O dynamic library
|
||||
"elc" => FileType::Compiled, // Emacs compiled lisp
|
||||
|
@ -262,6 +276,93 @@ const EXTENSION_TYPES: Map<&'static str, FileType> = phf_map! {
|
|||
"pyo" => FileType::Compiled, // Python optimized code
|
||||
"so" => FileType::Compiled, // Unix shared library
|
||||
"zwc" => FileType::Compiled, // zsh compiled file
|
||||
/* Source code */
|
||||
"applescript"=> FileType::Source, // Apple script
|
||||
"as" => FileType::Source, // Action script
|
||||
"asa" => FileType::Source, // asp
|
||||
"awk" => FileType::Source, // awk
|
||||
"c" => FileType::Source, // C/C++
|
||||
"c++" => FileType::Source, // C/C++
|
||||
"cabal" => FileType::Source, // Cabal
|
||||
"cc" => FileType::Source, // C/C++
|
||||
"clj" => FileType::Source, // Clojure
|
||||
"cp" => FileType::Source, // C/C++ Xcode
|
||||
"cpp" => FileType::Source, // C/C++
|
||||
"cr" => FileType::Source, // Crystal
|
||||
"cs" => FileType::Source, // C#
|
||||
"css" => FileType::Source, // css
|
||||
"csx" => FileType::Source, // C#
|
||||
"cu" => FileType::Source, // CUDA
|
||||
"cxx" => FileType::Source, // C/C++
|
||||
"d" => FileType::Source, // D
|
||||
"dart" => FileType::Source, // Dart
|
||||
"di" => FileType::Source, // D
|
||||
"dpr" => FileType::Source, // Delphi Pascal
|
||||
"el" => FileType::Source, // Lisp
|
||||
"elm" => FileType::Source, // Elm
|
||||
"erl" => FileType::Source, // Erlang
|
||||
"ex" => FileType::Source, // Elixir
|
||||
"exs" => FileType::Source, // Elixir
|
||||
"fs" => FileType::Source, // F#
|
||||
"fsh" => FileType::Source, // Fragment shader
|
||||
"fsi" => FileType::Source, // F#
|
||||
"fsx" => FileType::Source, // F#
|
||||
"go" => FileType::Source, // Go
|
||||
"gradle" => FileType::Source, // Gradle
|
||||
"groovy" => FileType::Source, // Groovy
|
||||
"gvy" => FileType::Source, // Groovy
|
||||
"h" => FileType::Source, // C/C++
|
||||
"h++" => FileType::Source, // C/C++
|
||||
"hpp" => FileType::Source, // C/C++
|
||||
"hs" => FileType::Source, // Haskell
|
||||
"htc" => FileType::Source, // Javascript
|
||||
"hxx" => FileType::Source, // C/C++
|
||||
"inc" => FileType::Source,
|
||||
"inl" => FileType::Source, // C/C++ Microsoft
|
||||
"ipynb" => FileType::Source, // Jupyter Notebook
|
||||
"java" => FileType::Source, // Java
|
||||
"jl" => FileType::Source, // Julia
|
||||
"js" => FileType::Source, // Javascript
|
||||
"jsx" => FileType::Source, // React
|
||||
"kt" => FileType::Source, // Kotlin
|
||||
"kts" => FileType::Source, // Kotlin
|
||||
"less" => FileType::Source, // less
|
||||
"lhs" => FileType::Source, // Haskell
|
||||
"lisp" => FileType::Source, // Lisp
|
||||
"ltx" => FileType::Source, // LaTeX
|
||||
"lua" => FileType::Source, // Lua
|
||||
"m" => FileType::Source, // Matlab
|
||||
"matlab" => FileType::Source, // Matlab
|
||||
"ml" => FileType::Source, // OCaml
|
||||
"mli" => FileType::Source, // OCaml
|
||||
"mn" => FileType::Source, // Matlab
|
||||
"nb" => FileType::Source, // Mathematica
|
||||
"p" => FileType::Source, // Pascal
|
||||
"pas" => FileType::Source, // Pascal
|
||||
"php" => FileType::Source, // PHP
|
||||
"pl" => FileType::Source, // Perl
|
||||
"pm" => FileType::Source, // Perl
|
||||
"pod" => FileType::Source, // Perl
|
||||
"pp" => FileType::Source, // Puppet
|
||||
"ps1" => FileType::Source, // PowerShell
|
||||
"psd1" => FileType::Source, // PowerShell
|
||||
"psm1" => FileType::Source, // PowerShell
|
||||
"purs" => FileType::Source, // PureScript
|
||||
"py" => FileType::Source, // Python
|
||||
"r" => FileType::Source, // R
|
||||
"rb" => FileType::Source, // Ruby
|
||||
"rs" => FileType::Source, // Rust
|
||||
"sass" => FileType::Source, // Sass
|
||||
"scala" => FileType::Source, // Scala
|
||||
"scss" => FileType::Source, // Sass
|
||||
"sql" => FileType::Source, // SQL
|
||||
"swift" => FileType::Source, // Swift
|
||||
"tcl" => FileType::Source, // TCL
|
||||
"tex" => FileType::Source, // LaTeX
|
||||
"ts" => FileType::Source, // TypeScript
|
||||
"v" => FileType::Source, // V
|
||||
"vb" => FileType::Source, // Visual Basic
|
||||
"vsh" => FileType::Source, // Vertex shader
|
||||
};
|
||||
|
||||
impl FileType {
|
||||
|
|
|
@ -104,6 +104,7 @@ impl UiStyles {
|
|||
temp: White.normal(),
|
||||
compiled: Yellow.normal(),
|
||||
build: Yellow.bold().underline(),
|
||||
source: Yellow.bold(), // Need to discuss color
|
||||
},
|
||||
|
||||
punctuation: DarkGray.bold(),
|
||||
|
|
|
@ -216,6 +216,7 @@ impl FileStyle for FileTypes {
|
|||
Some(FileType::Temp) => Some(theme.ui.file_type.temp),
|
||||
Some(FileType::Compiled) => Some(theme.ui.file_type.compiled),
|
||||
Some(FileType::Build) => Some(theme.ui.file_type.build),
|
||||
Some(FileType::Source) => Some(theme.ui.file_type.source),
|
||||
None => None
|
||||
};
|
||||
}
|
||||
|
@ -602,6 +603,8 @@ mod customs_test {
|
|||
test!(exa_tm: ls "", exa "tm=38;5;135" => colours c -> { c.file_type.temp = Fixed(135).normal(); });
|
||||
test!(exa_cm: ls "", exa "cm=38;5;136" => colours c -> { c.file_type.compiled = Fixed(136).normal(); });
|
||||
test!(exa_ie: ls "", exa "bu=38;5;137" => colours c -> { c.file_type.build = Fixed(137).normal(); });
|
||||
test!(exa_bu: ls "", exa "bu=38;5;137" => colours c -> { c.file_type.build = Fixed(137).normal(); });
|
||||
test!(exa_sc: ls "", exa "sc=38;5;138" => colours c -> { c.file_type.source = Fixed(138).normal(); });
|
||||
|
||||
test!(exa_Sn: ls "", exa "Sn=38;5;128" => colours c -> { c.security_context.none = Fixed(128).normal(); });
|
||||
test!(exa_Su: ls "", exa "Su=38;5;129" => colours c -> { c.security_context.selinux.user = Fixed(129).normal(); });
|
||||
|
|
|
@ -155,6 +155,7 @@ pub struct FileType {
|
|||
pub temp: Style, // tm - temporary file
|
||||
pub compiled: Style, // cm - compilation artifact
|
||||
pub build: Style, // bu - file that is used to build a project
|
||||
pub source: Style, // sc - source code
|
||||
}
|
||||
|
||||
impl UiStyles {
|
||||
|
@ -269,6 +270,7 @@ impl UiStyles {
|
|||
"tm" => self.file_type.temp = pair.to_style(),
|
||||
"cm" => self.file_type.compiled = pair.to_style(),
|
||||
"bu" => self.file_type.build = pair.to_style(),
|
||||
"sc" => self.file_type.source = pair.to_style(),
|
||||
|
||||
"Sn" => self.security_context.none = pair.to_style(),
|
||||
"Su" => self.security_context.selinux.user = pair.to_style(),
|
||||
|
|
Loading…
Reference in a new issue