summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCanop <cano.petrole@gmail.com>2020-11-19 17:26:29 +0100
committerCanop <cano.petrole@gmail.com>2020-11-19 17:26:29 +0100
commitae54814e7fdf7ed1b2b013ddb4b2785cbbadaf67 (patch)
treef74ddd9b835830f3b21d80c2229639deac6007a5
parentea3eb4e855e6359669933f19645f83d3ea688ae4 (diff)
parentc744c984f54fd62ea394dc3ccc786ff733df2f30 (diff)
Merge branch 'icons'
-rw-r--r--CHANGELOG.md1
-rwxr-xr-xcompile-all-targets.sh7
-rw-r--r--resources/icons/vscode/data/README13
-rw-r--r--resources/icons/vscode/data/double_extension_to_icon_name_map.rs6
-rw-r--r--resources/icons/vscode/data/extension_to_icon_name_map.rs697
-rw-r--r--resources/icons/vscode/data/file_name_to_icon_name_map.rs5
-rw-r--r--resources/icons/vscode/data/icon_name_to_icon_code_point_map.rs777
-rw-r--r--resources/icons/vscode/vscode.ttfbin0 -> 660240 bytes
-rw-r--r--src/app/context.rs8
-rw-r--r--src/conf/conf.rs3
-rw-r--r--src/conf/default_conf.rs7
-rw-r--r--src/display/col.rs4
-rw-r--r--src/display/displayable_tree.rs1
-rw-r--r--src/icon/icon_plugin.rs21
-rw-r--r--src/icon/mod.rs14
-rw-r--r--src/icon/vscode.rs144
-rw-r--r--src/lib.rs1
-rw-r--r--src/tree/tree_line.rs49
-rw-r--r--src/tree_build/bline.rs8
-rw-r--r--src/tree_build/builder.rs2
-rw-r--r--website/docs/icons.md68
-rw-r--r--website/docs/img/20201117-icons.pngbin0 -> 100218 bytes
-rw-r--r--website/docs/img/icons.pngbin0 -> 36246 bytes
-rw-r--r--website/mkdocs.yml1
24 files changed, 1825 insertions, 12 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b52aa26..1744690 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
### next
* dev.log renamed into broot.log
* `:line_up` and `:line_down` accept an optional count as argument - Fix #301
+* optional icons, thanks to @asdf8dfafjk (@fiAtcBr on Miaou) - See https://dystroy.org/broot/icons
<a name="v1.0.5"></a>
### v1.0.5 - 2020-11-05
diff --git a/compile-all-targets.sh b/compile-all-targets.sh
index 499bced..3e095a1 100755
--- a/compile-all-targets.sh
+++ b/compile-all-targets.sh
@@ -32,6 +32,13 @@ mkdir build/completion
cp "$(broot -c ":gi;release;:focus;broot.bash;:parent;:pp" target)/"* build/completion
echo " Done"
+# add the resource (the icons font)
+echo -e "${H2}copying resources${EH}"
+mkdir build/resources
+cp resources/icons/vscode/vscode.ttf build/resources
+echo "the font file comes from https://github.com/vscode-icons/vscode-icons/ and is licensed as MIT" > build/resources/README.md
+echo " Done"
+
# build the windows version (with the "clipboard" feature)
# use cargo cross
echo -e "${H2}Compiling the Windows version${EH}"
diff --git a/resources/icons/vscode/data/README b/resources/icons/vscode/data/README
new file mode 100644
index 0000000..b9821f5
--- /dev/null
+++ b/resources/icons/vscode/data/README
@@ -0,0 +1,13 @@
+Tips on editing these files in vi
+
+1. Open ./icon_name_to_icon_code_point_map.rs
+ then in the same session, switch to file you want to edit
+ use C-n and C-y in edit mode
+
+2. This plugin currently searches for lowercase, make everything so
+
+3. Remember to run :Tabularize over ')' and ','
+
+4. :'<,'>!sort
+
+5. `cargo run` in debug mode should figure out if some problems.
diff --git a/resources/icons/vscode/data/double_extension_to_icon_name_map.rs b/resources/icons/vscode/data/double_extension_to_icon_name_map.rs
new file mode 100644
index 0000000..3d2657c
--- /dev/null
+++ b/resources/icons/vscode/data/double_extension_to_icon_name_map.rs
@@ -0,0 +1,6 @@
+// SEE ./README on how to edit this file
+[
+ ( "tar.gz" , "file_type_zip" ) ,
+ ( "tar.xz" , "file_type_zip" ) ,
+ ( "tar.zst" , "file_type_zip" ) ,
+]
diff --git a/resources/icons/vscode/data/extension_to_icon_name_map.rs b/resources/icons/vscode/data/extension_to_icon_name_map.rs
new file mode 100644
index 0000000..84ec455
--- /dev/null
+++ b/resources/icons/vscode/data/extension_to_icon_name_map.rs
@@ -0,0 +1,697 @@
+// SEE ./README on how to edit this file
+[
+( "3g2" , "file_type_video" ) ,
+( "3gp" , "file_type_video" ) ,
+( "7z" , "file_type_zip2" ) ,
+( "aac" , "file_type_audio" ) ,
+( "accda" , "file_type_access2" ) ,
+( "accdb" , "file_type_access2" ) ,
+( "accdc" , "file_type_access2" ) ,
+( "accde" , "file_type_access2" ) ,
+( "accdp" , "file_type_access2" ) ,
+( "accdr" , "file_type_access2" ) ,
+( "accdt" , "file_type_access2" ) ,
+( "accdu" , "file_type_access2" ) ,
+( "act" , "file_type_audio" ) ,
+( "adapter.js" , "file_type_nest_adapter_js" ) ,
+( "adapter.ts" , "file_type_nest_adapter_ts" ) ,
+( "ade" , "file_type_access2" ) ,
+( "adp" , "file_type_access2" ) ,
+( "afdesign" , "file_type_affinitydesigner" ) ,
+( "affinitydesigner" , "file_type_affinitydesigner" ) ,
+( "affinityphoto" , "file_type_affinityphoto" ) ,
+( "affinitypublisher" , "file_type_affinitypublisher" ) ,
+( "a" , "file_type_binary" ) ,
+( "afphoto" , "file_type_affinityphoto" ) ,
+( "afpub" , "file_type_affinitypublisher" ) ,
+( "aiff" , "file_type_audio" ) ,
+( "ai" , "file_type_ai2" ) ,
+( "amr" , "file_type_audio" ) ,
+( "amv" , "file_type_video" ) ,
+( "angular-cli.json" , "file_type_angular" ) ,
+( "angular.json" , "file_type_angular" ) ,
+( "ape" , "file_type_audio" ) ,
+( "api-extractor-base.json" , "file_type_api_extractor" ) ,
+( "api-extractor.json" , "file_type_api_extractor" ) ,
+( "app.config.js" , "file_type_expo" ) ,
+( "app.config.json5" , "file_type_expo" ) ,
+( "app.config.json" , "file_type_expo" ) ,
+( "app" , "file_type_binary" ) ,
+( "app.json" , "file_type_expo" ) ,
+( "app-routing.module.dart" , "file_type_ng_routing_dart" ) ,
+( "app-routing.module.js" , "file_type_ng_routing_js2" ) ,
+( "app-routing.module.ts" , "file_type_ng_routing_ts2" ) ,
+( "appveyor.yml" , "file_type_appveyor" ) ,
+( "ascx" , "file_type_aspx" ) ,
+( "asf" , "file_type_video" ) ,
+( "aspx" , "file_type_aspx" ) ,
+( "au" , "file_type_audio" ) ,
+( "aurelia.json" , "file_type_aurelia" ) ,
+( "avif" , "file_type_avif" ) ,
+( "avi" , "file_type_video" ) ,
+( "awk" , "file_type_awk" ) ,
+( "azure-pipelines.yml" , "file_type_azurepipelines" ) ,
+( "babelignore" , "file_type_babel2" ) ,
+( "babelrc" , "file_type_babel2" ) ,
+( "bazel.bazelrc" , "file_type_bazel" ) ,
+( "bazel.rc" , "file_type_bazel" ) ,
+( "bazelrc" , "file_type_bazel" ) ,
+( "bb" , "file_type_blitzbasic" ) ,
+( "bcmx" , "file_type_outlook" ) ,
+( "berksfile" , "file_type_chef" ) ,
+( "berksfile.lock" , "file_type_chef" ) ,
+( "bin" , "file_type_binary" ) ,
+( "bitbucket-pipelines.yml" , "file_type_bitbucketpipeline" ) ,
+( "bithoundrc" , "file_type_bithound" ) ,
+( "bmp" , "file_type_image" ) ,
+( "boringignore" , "file_type_darcs" ) ,
+( "bower.json" , "file_type_bower" ) ,
+( "bowerrc" , "file_type_bower" ) ,
+( "browserslist" , "file_type_browserslist" ) ,
+( "browserslistrc" , "file_type_browserslist" ) ,
+( "buckconfig" , "file_type_buckbuild" ) ,
+( "BUILD.bazel" , "file_type_bazel" ) ,
+( "build.ninja" , "file_type_ninja" ) ,
+( "bz2" , "file_type_zip2" ) ,
+( "bz" , "file_type_zip2" ) ,
+( "bzip2" , "file_type_zip2" ) ,
+( "bzrignore" , "file_type_bazaar" ) ,
+( "cake" , "file_type_cake" ) ,
+( "cargo.lock" , "file_type_cargo" ) ,
+( "cargo.toml" , "file_type_cargo" ) ,
+( "cer" , "file_type_cert" ) ,
+( "cfignore" , "file_type_cloudfoundry" ) ,
+( "c" , "file_type_c" ) ,
+( "checkstyle.json" , "file_type_haxecheckstyle" ) ,
+( "chefignore" , "file_type_chef" ) ,
+( "circle.yml" , "file_type_circleci" ) ,
+( "cjm" , "file_type_clojure" ) ,
+( "class" , "file_type_class" ) ,
+( "cl" , "file_type_opencl" ) ,
+( "cljc" , "file_type_clojure" ) ,
+( "cljs" , "file_type_clojurescript" ) ,
+( "cma" , "file_type_binary" ) ,
+( "cmi" , "file_type_binary" ) ,
+( "cmo" , "file_type_binary" ) ,
+( "cmxa" , "file_type_binary" ) ,
+( "cmx" , "file_type_binary" ) ,
+( "codacy.yaml" , "file_type_codacy" ) ,
+( "codacy.yml" , "file_type_codacy" ) ,
+( "codeclimate.yml" , "file_type_codeclimate" ) ,
+( "codecov.yml" , "file_type_codecov" ) ,
+( "coffeelintignore" , "file_type_coffeelint" ) ,
+( "coffeelint.json" , "file_type_coffeelint" ) ,
+( "commitlint.config.js" , "file_type_commitlint" ) ,
+( "component.dart" , "file_type_ng_component_dart" ) ,
+( "component.js" , "file_type_ng_component_js2" ) ,
+( "component.ts" , "file_type_ng_component_ts2" ) ,
+( "composer.json" , "file_type_composer" ) ,
+( "composer.lock" , "file_type_composer" ) ,
+( "conanfile.py" , "file_type_conan" ) ,
+( "conanfile.txt" , "file_type_conan" ) ,
+( "condarc" , "file_type_conda" ) ,
+( "config.codekit2" , "file_type_codekit" ) ,
+( "config.codekit3" , "file_type_codekit" ) ,
+( "config.codekit" , "file_type_codekit" ) ,
+( "container.dart" , "file_type_ng_smart_component_dart" ) ,
+( "container.js" , "file_type_ng_smart_component_js2" ) ,
+( "container.ts" , "file_type_ng_smart_component_ts2" ) ,
+( "controller.js" , "file_type_nest_controller_js" ) ,
+( "controller.ts" , "file_type_nest_controller_ts" ) ,
+( "coveralls.yml" , "file_type_coveralls" ) ,
+( "crec" , "file_type_lync" ) ,
+( "crl" , "file_type_cert" ) ,
+( "crowdin.yml" , "file_type_crowdin" ) ,
+( "crt" , "file_type_cert" ) ,
+( "csproj" , "file_type_csproj" ) ,
+( "csr" , "file_type_cert" ) ,
+( "csscomb.json" , "file_type_csscomb" ) ,
+( "csslintrc" , "file_type_csslint" ) ,
+( "css.map" , "file_type_cssmap" ) ,
+( "csv" , "file_type_text" ) ,
+( "csx" , "file_type_csharp2" ) ,
+( "cvsignore" , "file_type_cvs" ) ,
+( "db3" , "file_type_sqlite" ) ,
+( "db" , "file_type_db" ) ,
+( "dct" , "file_type_audio" ) ,
+( "decorator.js" , "file_type_nest_decorator_js" ) ,
+( "decorator.ts" , "file_type_nest_decorator_ts" ) ,
+( "dependabot.yml" , "file_type_dependabot" ) ,
+( "dependencies.yml" , "file_type_dependencies" ) ,
+( "der" , "file_type_cert" ) ,
+( "devcontainer.json" , "file_type_devcontainer" ) ,
+( "dio" , "file_type_drawio" ) ,
+( "directive.dart" , "file_type_ng_directive_dart" ) ,
+( "directive.js" , "file_type_ng_directive_js2" ) ,
+( "directive.ts" , "file_type_ng_directive_ts2" ) ,
+( "divx" , "file_type_video" ) ,
+( "djt" , "file_type_django" ) ,
+( "dll" , "file_type_binary" ) ,
+( "doc" , "file_type_word2" ) ,
+( "docker-compose.test.yml" , "file_type_dockertest2" ) ,
+( "docm" , "file_type_word2" ) ,
+( "docx" , "file_type_word2" ) ,
+( "doczrc" , "file_type_docz" ) ,
+( "dojorc" , "file_type_dojo" ) ,
+( "dot" , "file_type_word2" ) ,
+( "dotm" , "file_type_word2" ) ,
+( "dotx" , "file_type_word2" ) ,
+( "drawio" , "file_type_drawio" ) ,
+( "drone.yml" , "file_type_drone" ) ,
+( "drone.yml.sig" , "file_type_drone" ) ,
+( "dss" , "file_type_audio" ) ,
+( "dta" , "file_type_stata" ) ,
+( "d.ts" , "file_type_typescriptdef_official" ) ,
+( "dvc" , "file_type_dvc" ) ,
+( "dvf" , "file_type_audio" ) ,
+( "eco" , "file_type_docpad" ) ,
+( "editorconfig" , "file_type_editorconfig" ) ,
+( "ejs" , "file_type_ejs" ) ,
+( "ejs.t" , "file_type_hygen" ) ,
+( "elc" , "file_type_emacs" ) ,
+( "el" , "file_type_emacs" ) ,
+( "elm-package.json" , "file_type_elm2" ) ,
+( "emakefile" , "file_type_erlang2" ) ,
+( "emakerfile" , "file_type_erlang2" ) ,
+( "ember-cli" , "file_type_ember" ) ,
+( "enc" , "file_type_license" ) ,
+( "ensime" , "file_type_ensime" ) ,
+( "eot" , "file_type_font" ) ,
+( "eps" , "file_type_eps" ) ,
+( "eskip" , "file_type_skipper" ) ,
+( "eslintcache" , "file_type_eslint2" ) ,
+( "eslintignore" , "file_type_eslint2" ) ,
+( "eslintrc" , "file_type_eslint2" ) ,
+( "exe" , "file_type_binary" ) ,
+( "exp" , "file_type_tcl" ) ,
+( "f4a" , "file_type_video" ) ,
+( "f4b" , "file_type_video" ) ,
+( "f4p" , "file_type_video" ) ,
+( "f4v" , "file_type_video" ) ,
+( "favicon.ico" , "file_type_favicon" ) ,
+( "fbx" , "file_type_fbx" ) ,
+( "fig" , "file_type_matlab" ) ,
+( "filter.js" , "file_type_nest_filter_js" ) ,
+( "filter.ts" , "file_type_nest_filter_ts" ) ,
+( "firebase.json" , "file_type_firebasehosting" ) ,
+( "firebaserc" , "file_type_firebase" ) ,
+( "firestore.indexes.json" , "file_type_firestore" ) ,
+( "firestore.rules" , "file_type_firestore" ) ,
+( "fish" , "file_type_shell" ) ,
+( "flac" , "file_type_audio" ) ,
+( "fla" , "file_type_fla" ) ,
+( "flooignore" , "file_type_floobits" ) ,
+( "flowconfig" , "file_type_flow" ) ,
+( "flutter-plugins" , "file_type_flutter" ) ,
+( "flv" , "file_type_video" ) ,
+( "fods" , "file_type_excel2" ) ,
+( "format.ps1xml" , "file_type_powershell_format" ) ,
+( "fossaignore" , "file_type_fossa" ) ,
+( "fsproj" , "file_type_fsproj" ) ,
+( "fuse.js" , "file_type_fusebox" ) ,
+( "gateway.js" , "file_type_nest_gateway_js" ) ,
+( "gateway.ts" , "file_type_nest_gateway_ts" ) ,
+( "gemfile" , "file_type_bundler" ) ,
+( "gemfile.lock" , "file_type_bundler" ) ,
+( "gif" , "file_type_image" ) ,
+( "gitattributes" , "file_type_git" ) ,
+( "gitconfig" , "file_type_git" ) ,
+( "gitignore" , "file_type_git" ) ,
+( "gitkeep" , "file_type_git" ) ,
+( "gitlab-ci.yml" , "file_type_gitlab" ) ,
+( "gitmodules" , "file_type_git" ) ,
+( "glide.yml" , "file_type_glide" ) ,
+( "gmx" , "file_type_gamemaker" ) ,
+( "go.mod" , "file_type_go_package" ) ,
+( "go.sum" , "file_type_go_package" ) ,
+( "gqlconfig" , "file_type_graphql" ) ,
+( "gradle" , "file_type_gradle2" ) ,
+( "graphqlconfig" , "file_type_graphql_config" ) ,
+( "greenkeeper.json" , "file_type_greenkeeper" ) ,
+( "gsm" , "file_type_audio" ) ,
+( "guard.dart" , "file_type_ng_guard_dart" ) ,
+( "guard.js" , "file_type_nest_guard_js" ) ,
+( "guard.ts" , "file_type_nest_guard_ts" ) ,
+( "gvimrc" , "file_type_vim" ) ,
+( "gz" , "file_type_zip2" ) ,
+( "haxelib.json" , "file_type_haxe" ) ,
+( "h" , "file_type_cheader" ) ,
+( "hgignore" , "file_type_mercurial" ) ,
+( "hl" , "file_type_binary" ) ,
+( "hpp" , "file_type_cppheader" ) ,
+( "htmlhintrc" , "file_type_htmlhint" ) ,
+( "husky.config.js" , "file_type_husky" ) ,
+( "huskyrc" , "file_type_husky" ) ,
+( "hxp" , "file_type_lime" ) ,
+( "hxproj" , "file_type_haxedevelop" ) ,
+( "ibc" , "file_type_idrisbin" ) ,
+( "ico" , "file_type_image" ) ,
+( "idr" , "file_type_idris" ) ,
+( "ignore-glob" , "file_type_fossil" ) ,
+( "iklax" , "file_type_audio" ) ,
+( "ilk" , "file_type_binary" ) ,
+( "inc" , "file_type_inc" ) ,
+( "include" , "file_type_inc" ) ,
+( "include.xml" , "file_type_lime" ) ,
+( "infopathxml" , "file_type_infopath" ) ,
+( "ino" , "file_type_arduino" ) ,
+( "integrity.json" , "file_type_nsri-integrity" ) ,
+( "interceptor.dart" , "file_type_ng_interceptor_dart" ) ,
+( "interceptor.js" , "file_type_nest_interceptor_js" ) ,
+( "interceptor.ts" , "file_type_nest_interceptor_ts" ) ,
+( "ionic.config.json" , "file_type_ionic" ) ,
+( "ionic.project" , "file_type_ionic" ) ,
+( "ipkg" , "file_type_idrispkg" ) ,
+( "ipynb" , "file_type_jupyter" ) ,
+( "iuml" , "file_type_plantuml" ) ,
+( "ivs" , "file_type_audio" ) ,
+( "jade-lint.json" , "file_type_pug" ) ,
+( "jade-lintrc" , "file_type_pug" ) ,
+( "jakefile" , "file_type_jake" ) ,
+( "jakefile.js" , "file_type_jake" ) ,
+( "jasmine.json" , "file_type_jasmine" ) ,
+( "jbuilder" , "file_type_jbuilder" ) ,
+( "jest.config.json" , "file_type_jest" ) ,
+( "jest.json" , "file_type_jest" ) ,
+( "jestrc" , "file_type_jest" ) ,
+( "jestrc.js" , "file_type_jest" ) ,
+( "jestrc.json" , "file_type_jest" ) ,
+( "jpeg" , "file_type_image" ) ,
+( "jpg" , "file_type_image" ) ,
+( "jpmignore" , "file_type_jpm" ) ,
+( "jsbeautify" , "file_type_jsbeautify" ) ,
+( "jsbeautifyrc" , "file_type_jsbeautify" ) ,
+( "jsconfig.json" , "file_type_jsconfig" ) ,
+( "jscpd.json" , "file_type_jscpd" ) ,
+( "js.flow" , "file_type_flow" ) ,
+( "jshintignore" , "file_type_jshint" ) ,
+( "jshintrc" , "file_type_jshint" ) ,
+( "js.map" , "file_type_jsmap" ) ,
+( "json5" , "file_type_json5" ) ,
+( "json" , "file_type_json_official" ) ,
+( "json-ld" , "file_type_jsonld" ) ,
+( "jsonld" , "file_type_jsonld" ) ,
+( "jsp" , "file_type_jsp" ) ,
+( "jss" , "file_type_jss" ) ,
+( "js.snap" , "file_type_jest_snapshot" ) ,
+( "jsx.snap" , "file_type_jest_snapshot" ) ,
+( "key" , "file_type_key" ) ,
+( "kitchen.yml" , "file_type_kitchenci" ) ,
+( "kiteignore" , "file_type_kite" ) ,
+( "kit" , "file_type_codekit" ) ,
+( "laccdb" , "file_type_access2" ) ,
+( "layout.htm" , "file_type_layout" ) ,
+( "layout.html" , "file_type_layout" ) ,
+( "ldb" , "file_type_access2" ) ,
+( "lerna.json" , "file_type_lerna" ) ,
+( "lib" , "file_type_binary" ) ,
+( "licence" , "file_type_license" ) ,
+( "license" , "file_type_license" ) ,
+( "lidr" , "file_type_idris" ) ,
+( "lint-staged.config.js" , "file_type_lintstagedrc" ) ,
+( "lintstagedrc" , "file_type_lintstagedrc" ) ,
+( "liquid" , "file_type_liquid" ) ,
+( "lnk" , "file_type_lnk" ) ,
+( "lock" , "emoji_type_lock" ) ,
+( "log" , "file_type_log" ) ,
+( "ls" , "file_type_livescript" ) ,
+( "lucee" , "file_type_cf2" ) ,
+( "m2v" , "file_type_video" ) ,
+( "m4a" , "file_type_audio" ) ,
+( "m4b" , "file_type_audio" ) ,
+( "m4p" , "file_type_audio" ) ,
+( "m4v" , "file_type_video" ) ,
+( "mailmap" , "file_type_git" ) ,
+( "makefile" , "file_type_makefile" ) ,
+( "mam" , "file_type_access2" ) ,
+( "manifest.bak" , "file_type_manifest_bak" ) ,
+( "manifest" , "file_type_manifest" ) ,
+( "manifest.skip" , "file_type_manifest_skip" ) ,
+( "map" , "file_type_map" ) ,
+( "maq" , "file_type_access2" ) ,
+( "markdown" , "file_type_markdown" ) ,
+( "markdownlint.json" , "file_type_markdownlint" ) ,
+( "marko.js" , "file_type_markojs" ) ,
+( "master" , "file_type_layout" ) ,
+( "maven.config" , "file_type_maven" ) ,
+( "mdb" , "file_type_access2" ) ,
+( "md" , "file_type_markdown" ) ,
+( "mdown" , "file_type_markdown" ) ,
+( "mdw" , "file_type_access2" ) ,
+( "mdx" , "file_type_mdx" ) ,
+( "merlin" , "file_type_ocaml" ) ,
+( "metadata" , "file_type_flutter" ) ,
+( "mex" , "file_type_matlab" ) ,
+( "mexn" , "file_type_matlab" ) ,
+( "mexrs6" , "file_type_matlab" ) ,
+( "middleware.js" , "file_type_nest_middleware_js" ) ,
+( "middleware.ts" , "file_type_nest_middleware_ts" ) ,
+( "mk3d" , "file_type_video" ) ,
+( "mkv" , "file_type_video" ) ,
+( "mmf" , "file_type_audio" ) ,
+( "mn" , "file_type_matlab" ) ,
+( "mocha.opts" , "file_type_mocha" ) ,
+( "modernizr" , "file_type_modernizr" ) ,
+( "module.dart" , "file_type_ng_module_dart" ) ,
+( "module.js" , "file_type_nest_module_js" ) ,
+( "module.ts" , "file_type_nest_module_ts" ) ,
+( "mo" , "file_type_poedit" ) ,
+( "mogg" , "file_type_audio" ) ,
+( "mov" , "file_type_video" ) ,
+( "mp2" , "file_type_video" ) ,
+( "mp3" , "file_type_audio" ) ,
+( "mp4" , "file_type_video" ) ,
+( "mpc" , "file_type_audio" ) ,
+( "mpe" , "file_type_video" ) ,
+( "mpeg2" , "file_type_video" ) ,
+( "mpeg" , "file_type_video" ) ,
+( "mpg" , "file_type_video" ) ,
+( "mpv" , "file_type_video" ) ,
+( "msg" , "file_type_outlook" ) ,
+( "mst" , "file_type_mustache" ) ,
+( "msv" , "file_type_audio" ) ,
+( "mtn-ignore" , "file_type_monotone" ) ,
+( "mum" , "file_type_matlab" ) ,
+( "mustache" , "file_type_mustache" ) ,
+( "mx3" , "file_type_matlab" ) ,
+( "mx" , "file_type_matlab" ) ,
+( "ndll" , "file_type_binary" ) ,
+( "nest-cli.json" , "file_type_nestjs" ) ,
+( "nestconfig.json" , "file_type_nestjs" ) ,
+( "netlify.toml" , "file_type_netlify" ) ,
+( "next.config.js" , "file_type_next" ) ,
+( "n" , "file_type_binary" ) ,
+( "nginx.conf" , "file_type_nginx" ) ,
+( "ng-tailwind.js" , "file_type_ng_tailwind" ) ,
+( "nix" , "file_type_nix" ) ,
+( "njs" , "file_type_nunjucks" ) ,
+( "njsproj" , "file_type_njsproj" ) ,
+( "nodemon.json" , "file_type_nodemon" ) ,
+( "node-version" , "file_type_node2" ) ,
+( "nowignore" , "file_type_zeit" ) ,
+( "now.json" , "file_type_zeit" ) ,
+( "npmignore" , "file_type_npm" ) ,
+( "npmrc" , "file_type_npm" ) ,
+( "npm-shrinkwrap.json" , "file_type_npm" ) ,
+( "npy" , "file_type_numpy" ) ,
+( "npz" , "file_type_numpy" ) ,
+( "nsri.config.js" , "file_type_nsri" ) ,
+( "nsriignore" , "file_type_nsri" ) ,
+( "nsrirc" , "file_type_nsri" ) ,
+( "nsv" , "file_type_video" ) ,
+( "nunj" , "file_type_nunjucks" ) ,
+( "nupkg" , "file_type_nuget" ) ,
+( "nuspec" , "file_type_nuget" ) ,
+( "nvmrc" , "file_type_node2" ) ,
+( "nycrc" , "file_type_nyc" ) ,
+( "nycrc.json" , "file_type_nyc" ) ,
+( "obj" , "file_type_binary" ) ,
+( "ocrec" , "file_type_lync" ) ,
+( "ods" , "file_type_excel2" ) ,
+( "o" , "file_type_binary" ) ,
+( "oft" , "file_type_outlook" ) ,
+( "oga" , "file_type_audio" ) ,
+( "ogg" , "file_type_audio" ) ,
+( "ogv" , "file_type_video" ) ,
+( "one" , "file_type_onenote" ) ,
+( "onepkg" , "file_type_onenote" ) ,
+( "onetoc2" , "file_type_onenote" ) ,
+( "onetoc" , "file_type_onenote" ) ,
+( "opencl" , "file_type_opencl" ) ,
+( "opus" , "file_type_audio" ) ,
+( "org" , "file_type_org" ) ,
+( "otf" , "file_type_font" ) ,
+( "otm" , "file_type_outlook" ) ,
+( "ovpn" , "file_type_ovpn" ) ,
+( "p12" , "file_type_cert" ) ,
+( "p4ignore" , "file_type_helix" ) ,
+( "p7b" , "file_type_cert" ) ,
+( "p7r" , "file_type_cert" ) ,
+( "package.json" , "file_type_npm" ) ,
+( "package-lock.json" , "file_type_npm" ) ,
+( "package.pins" , "file_type_swift" ) ,
+( "packages" , "file_type_flutter_package" ) ,
+( "pa" , "file_type_powerpoint2" ) ,
+( "page.dart" , "file_type_ng_smart_component_dart" ) ,
+( "page.js" , "file_type_ng_smart_component_js2" ) ,
+( "page.ts" , "file_type_ng_smart_component_ts2" ) ,
+( "patch" , "file_type_patch" ) ,
+( "pcd" , "file_type_pcl" ) ,
+( "pck" , "file_type_plsql_package" ) ,
+( "pdb" , "file_type_binary" ) ,
+( "pde" , "file_type_arduino" ) ,
+( "pdf" , "file_type_pdf2" ) ,
+( "pem" , "file_type_key" ) ,
+( "pex" , "file_type_xml" ) ,
+( "pfa" , "file_type_font" ) ,
+( "pfb" , "file_type_font" ) ,
+( "P" , "file_type_prolog" ) ,
+( "pfx" , "file_type_cert" ) ,
+( "phar" , "file_type_php3" ) ,
+( "php1" , "file_type_php3" ) ,
+( "php2" , "file_type_php3" ) ,
+( "php3" , "file_type_php3" ) ,
+( "php4" , "file_type_php3" ) ,
+( "php5" , "file_type_php3" ) ,
+( "php6" , "file_type_php3" ) ,
+( "php_cs.dist" , "file_type_phpcsfixer" ) ,
+( "php_cs" , "file_type_phpcsfixer" ) ,
+( "phpsa" , "file_type_php3" ) ,
+( "phps" , "file_type_php3" ) ,
+( "phpt" , "file_type_php3" ) ,
+( "phpunit" , "file_type_phpunit" ) ,
+( "phpunit.xml.dist" , "file_type_phpunit" ) ,
+( "phpunit.xml" , "file_type_phpunit" ) ,
+( "phraseapp.yml" , "file_type_phraseapp" ) ,
+( "phtml" , "file_type_php3" ) ,
+( "pipe.dart" , "file_type_ng_pipe_dart" ) ,
+( "pipe.js" , "file_type_nest_pipe_js" ) ,
+( "pipe.ts" , "file_type_nest_pipe_ts" ) ,
+( "pipfile" , "file_type_pip" ) ,