aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.js
diff options
context:
space:
mode:
authorkj_sh6042026-04-18 14:25:31 -0400
committerkj_sh6042026-04-18 14:25:31 -0400
commitf4b6ffce91bcf9cd3c4ef85dd1a2b30b043c2d4d (patch)
tree3630313212ce37e90311e5f1fd3bfac5c0d5a566 /src/main.js
parentabf56914d2e9b2658b29be96811930ceedac9aa7 (diff)
refactor: better concurrency and use base highlight options
Diffstat (limited to 'src/main.js')
-rw-r--r--src/main.js219
1 files changed, 219 insertions, 0 deletions
diff --git a/src/main.js b/src/main.js
index 1f1b755..e0a9600 100644
--- a/src/main.js
+++ b/src/main.js
@@ -1,5 +1,223 @@
const FORM_STATE_KEY = "kj-clipboard-form-state-v1";
+const HIGHLIGHTJS_LANGUAGES = [
+ "1c",
+ "abnf",
+ "accesslog",
+ "actionscript",
+ "ada",
+ "angelscript",
+ "apache",
+ "applescript",
+ "arcade",
+ "arduino",
+ "armasm",
+ "xml",
+ "asciidoc",
+ "aspectj",
+ "autohotkey",
+ "autoit",
+ "avrasm",
+ "awk",
+ "axapta",
+ "bash",
+ "basic",
+ "bnf",
+ "brainfuck",
+ "c",
+ "cal",
+ "capnproto",
+ "ceylon",
+ "clean",
+ "clojure",
+ "clojure-repl",
+ "cmake",
+ "coffeescript",
+ "coq",
+ "cos",
+ "cpp",
+ "crmsh",
+ "crystal",
+ "csharp",
+ "csp",
+ "css",
+ "d",
+ "markdown",
+ "dart",
+ "delphi",
+ "diff",
+ "django",
+ "dns",
+ "dockerfile",
+ "dos",
+ "dsconfig",
+ "dts",
+ "dust",
+ "ebnf",
+ "elixir",
+ "elm",
+ "ruby",
+ "erb",
+ "erlang-repl",
+ "erlang",
+ "excel",
+ "fix",
+ "flix",
+ "fortran",
+ "fsharp",
+ "gams",
+ "gauss",
+ "gcode",
+ "gherkin",
+ "glsl",
+ "gml",
+ "go",
+ "golo",
+ "gradle",
+ "graphql",
+ "groovy",
+ "haml",
+ "handlebars",
+ "haskell",
+ "haxe",
+ "hsp",
+ "http",
+ "hy",
+ "inform7",
+ "ini",
+ "irpf90",
+ "isbl",
+ "java",
+ "javascript",
+ "jboss-cli",
+ "json",
+ "julia",
+ "julia-repl",
+ "kotlin",
+ "lasso",
+ "latex",
+ "ldif",
+ "leaf",
+ "less",
+ "lisp",
+ "livecodeserver",
+ "livescript",
+ "llvm",
+ "lsl",
+ "lua",
+ "makefile",
+ "mathematica",
+ "matlab",
+ "maxima",
+ "mel",
+ "mercury",
+ "mipsasm",
+ "mizar",
+ "perl",
+ "mojolicious",
+ "monkey",
+ "moonscript",
+ "n1ql",
+ "nestedtext",
+ "nginx",
+ "nim",
+ "nix",
+ "node-repl",
+ "nsis",
+ "objectivec",
+ "ocaml",
+ "openscad",
+ "oxygene",
+ "parser3",
+ "pf",
+ "pgsql",
+ "php",
+ "php-template",
+ "plaintext",
+ "pony",
+ "powershell",
+ "processing",
+ "profile",
+ "prolog",
+ "properties",
+ "protobuf",
+ "puppet",
+ "purebasic",
+ "python",
+ "python-repl",
+ "q",
+ "qml",
+ "r",
+ "reasonml",
+ "rib",
+ "roboconf",
+ "routeros",
+ "rsl",
+ "ruleslanguage",
+ "rust",
+ "sas",
+ "scala",
+ "scheme",
+ "scilab",
+ "scss",
+ "shell",
+ "smali",
+ "smalltalk",
+ "sml",
+ "sqf",
+ "sql",
+ "stan",
+ "stata",
+ "step21",
+ "stylus",
+ "subunit",
+ "swift",
+ "taggerscript",
+ "yaml",
+ "tap",
+ "tcl",
+ "thrift",
+ "tp",
+ "twig",
+ "typescript",
+ "vala",
+ "vbnet",
+ "vbscript",
+ "vbscript-html",
+ "verilog",
+ "vhdl",
+ "vim",
+ "wasm",
+ "wren",
+ "x86asm",
+ "xl",
+ "xquery",
+ "zephir",
+];
+
+function syncLanguageOptions() {
+ const langSelect = document.getElementById("lang-select");
+ const selected = langSelect.value;
+
+ langSelect.innerHTML = "";
+
+ const autoOption = document.createElement("option");
+ autoOption.value = "";
+ autoOption.textContent = "(auto)";
+ langSelect.appendChild(autoOption);
+
+ for (const language of HIGHLIGHTJS_LANGUAGES) {
+ const option = document.createElement("option");
+ option.value = language;
+ option.textContent = language;
+ langSelect.appendChild(option);
+ }
+
+ if (selected && HIGHLIGHTJS_LANGUAGES.includes(selected)) {
+ langSelect.value = selected;
+ }
+}
+
function saveFormState() {
const state = {
content: document.getElementById("content").value,
@@ -110,6 +328,7 @@ function setStatus(msg) {
document.getElementById("status").textContent = msg;
}
+syncLanguageOptions();
restoreFormState();
document.getElementById("get-link-btn").addEventListener("click", createPaste);