From eaa3b320b278fb864446438ab7501c94ef5ce727 Mon Sep 17 00:00:00 2001 From: Agent K Date: Mon, 29 Apr 2024 15:37:16 +0300 Subject: [PATCH] Icons for files without extenstions #459, Icons for file with only one extension #469, added icons to some new files and folders --- lib/colorls/core.rb | 38 ++++++++++++++++++++++-------- lib/yaml/file_aliases.yaml | 48 ++++++++++++++++++++++++++++++++++++++ lib/yaml/files.yaml | 4 +++- lib/yaml/folders.yaml | 35 +++++++++++++++++++++++++++ 4 files changed, 114 insertions(+), 11 deletions(-) diff --git a/lib/colorls/core.rb b/lib/colorls/core.rb index d596b240..e8cd4083 100644 --- a/lib/colorls/core.rb +++ b/lib/colorls/core.rb @@ -431,22 +431,40 @@ def file_color(file, key) def options(content) if content.directory? - key = content.name.downcase.to_sym - key = @folder_aliases[key] unless @folders.key? key - key = :folder if key.nil? - color = @colors[:dir] - group = :folders + dir_options(content) else - key = File.extname(content.name).delete_prefix('.').downcase.to_sym - key = @file_aliases[key] unless @files.key? key - color = file_color(content, key) - group = @files.key?(key) ? :recognized_files : :unrecognized_files - key = :file if key.nil? + file_options(content) end + end + + def dir_options(content) + key = content.name.downcase.to_sym + key = @folder_aliases[key] unless @folders.key? key + key = :folder if key.nil? + color = @colors[:dir] + group = :folders + [key, color, group] + end + def file_options(content) + key = determine_key_for_file(content) + key = @file_aliases[key] unless @files.key? key + color = file_color(content, key) + group = @files.key?(key) ? :recognized_files : :unrecognized_files + key = :file if key.nil? [key, color, group] end + def determine_key_for_file(content) + extension = File.extname(content.name).delete_prefix('.').downcase + if extension.empty? + filename = content.name.match(/\A\.?(.+)/)[1] + filename.downcase.to_sym + else + extension.to_sym + end || :default + end + def tree_contents(path) @contents = Dir.entries(path, encoding: ColorLS.file_encoding) diff --git a/lib/yaml/file_aliases.yaml b/lib/yaml/file_aliases.yaml index 39334748..2621d89f 100644 --- a/lib/yaml/file_aliases.yaml +++ b/lib/yaml/file_aliases.yaml @@ -8,7 +8,11 @@ mp3: audio ogg: audio opus: audio wav: audio +h: c editorconfig: conf +chh: cpp +cxx: cpp +hpp: cpp scss: css docx: doc gdoc: doc @@ -20,9 +24,14 @@ otf: font ttf: font woff: font woff2: font +gitattributes: git gitconfig: git gitignore: git gitignore_global: git +gitkeep: git +gitmodules: git +gitreflog: git +wget-hsts: history lhs: hs avif: image bmp: image @@ -41,6 +50,10 @@ webp: image jar: java properties: json tsx: jsx +lesshst: less +depend: makefile +make: makefile +mk: makefile license: md markdown: md mkd: md @@ -50,13 +63,20 @@ gslides: ppt odp: ppt pptx: ppt ipynb: py +pxd: py pyc: py +pyd: py +pyi: py +pyo: py +pyx: py rdata: r rds: r +rhistory: r gemfile: rb gemspec: rb guardfile: rb lock: rb +mkshrc: rb procfile: rb rakefile: rb rspec: rb @@ -66,13 +86,31 @@ ru: rb erb: rubydoc slim: rubydoc bash: shell +bash_aliases: shell +bash_completion: shell +bash_env: shell +bash_functions: shell bash_history: shell +bash_logout: shell bash_profile: shell bashrc: shell +environment: shell fish: shell +inputrc: shell +oh-my-zsh: shell +osh-update: shell +pre-oh-my-zsh: shell +profile: shell sh: shell +zlogin: shell +zlogout: shell +zprofile: shell zsh: shell +zsh-syntax-highlighting: shell zsh-theme: shell +zsh-update: shell +zsh_history: shell +zshenv: shell zshrc: shell stylus: styl cls: tex @@ -83,6 +121,14 @@ mov: video mp4: video ogv: video webm: video +exrc: vim +gvimrc: vim +vim-update: vim +vimbackup: vim +viminfo: vim +vimrc: vim +vimswap: vim +vimtags: vim bat: windows exe: windows ini: windows @@ -93,6 +139,8 @@ xlsx: xls xul: xml yaml: yml 7z: zip +bz: zip +bz2: zip gz: zip rar: zip tar: zip diff --git a/lib/yaml/files.yaml b/lib/yaml/files.yaml index 2f77db43..0a7515f2 100644 --- a/lib/yaml/files.yaml +++ b/lib/yaml/files.yaml @@ -25,6 +25,7 @@ gform: "" git: "" go: "" gruntfile.js: "" +history: "" hs: "" html: "" image: "" @@ -36,6 +37,7 @@ jsx: "" less: "" log: "" lua: "" +makefile: "" md: "" mustache: "" npmignore: "" @@ -62,7 +64,7 @@ ts: "" twig: "" txt: "" video: "" -vim: "" +vim: "" vue: "﵂" windows: "" xls: "" diff --git a/lib/yaml/folders.yaml b/lib/yaml/folders.yaml index b43b7af9..aec31c00 100644 --- a/lib/yaml/folders.yaml +++ b/lib/yaml/folders.yaml @@ -1,11 +1,46 @@ .atom: "" +.cache: "" +.config: "" +.dotnet: "󰪮" .git: "" .github: "" +.local: "" +.mono: "󰪮" +.pyenv: "" +.rbenv: "" +.repo: "" +.ruby-lsp: "" +.rustup: "" .rvm: "" +.ssh: "󰣀" +.tmux: "" .Trash: "" +.venv: "" +.vim: "" .vscode: "" +.vscode-insiders: "" +.vscode-r: "" +.vscode-remote-containers: "" +.vscode-server: "" +.vscode-server-insiders: "" +__pycache__: "" config: "" +coverage: "" +dist-packages: "" +eggs: "" +exe: "" folder: "" +go: "" hidden: "" lib: "" +man: "󰗚" node_modules: "" +pkg: "" +site-packages: "" +spec: "󰙨" +src: "󰳐" +test: "󰙨" +tests: "󰙨" +venv: "" +wheels: "" +