id = "webstorm" name = "WebStorm" homepage = "https://www.jetbrains.com/webstorm/" description = "The JavaScript and TypeScript IDE." icon = "theSVG:webstorm" executables = ["webstorm"] [dotfiles] # https://www.jetbrains.com/help/webstorm/directories-used-by-the-ide-to-store-settings-caches-plugins-and-logs.html # — the configuration directory is # %APPDATA%\JetBrains\WebStorm on Windows, # ~/Library/Application Support/JetBrains/WebStorm on macOS and # ~/.config/JetBrains/WebStorm on Linux — one directory under the # three names of `[appData]`, so it is written once and $XDG_CONFIG_HOME is # followed on Linux. The version is part of the directory name, hence the # glob. Caches (~/Library/Caches, ~/.cache, %LOCALAPPDATA%) and logs # (~/Library/Logs) sit outside this tree and never come along. paths = ["[appData]/JetBrains/WebStorm*/"] # Same page: on Windows and macOS the plugins directory is `plugins` inside the # configuration directory, while on Linux it is elsewhere entirely # (~/.local/share/JetBrains/WebStorm, outside everything listed here). # Downloaded plugin jars are installs, not settings, and the carve-out follows # the base directory, so it holds however a machine resolves it. exclude = [ "[appData]/JetBrains/WebStorm*/plugins/", ] # https://www.jetbrains.com/help/webstorm/reference-ide-settings-password-safe.html # — the IDE keeps passwords in the native keychain by default, but the "In # KeePass" option stores them in the database file c.kdbx inside this same # configuration directory. Whenever it exists it is the credential store. It # sits inside a directory `paths` already covers, so a consumer has to let # secret win over the directory. secret = ["[appData]/JetBrains/WebStorm*/c.kdbx"] # JetBrains' bundled Settings Sync plugin already carries these through a # JetBrains Account. self_sync = true # No machine_lines: the settings under options/, keymaps/, colors/ and # codestyles/ are the preferences a developer wants on every machine, and # picking machine-local keys out of the IDE's XML would be guesswork. [commands] format = 1 label = "Open in WebStorm" description = "Open files or folders, compare two files, or run the code formatter. Inspection and plugin installation are left out." quality = "ai-draft" base = "fig:webstorm" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/webstorm.ts" license = "MIT" [[commands.field]] id = "paths" label = "Files or folders" type = "path" position = 0 multiple = true path = { kind = "any", role = "input" } sources = ["fig"] [[commands.field]] id = "wait" label = "Wait until closed" type = "boolean" option = ["--wait"] sources = ["fig"] [[commands.task]] id = "open" label = "Open path" fields = ["paths", "wait"] required = ["paths"] [[commands.group]] id = "basic" label = "Basic" fields = ["paths", "wait"] [[commands.subcommand]] path = ["diff"] label = "Compare two files" description = "Open the diff viewer." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/webstorm.ts" license = "MIT" [[commands.subcommand.field]] id = "left" label = "First file" type = "path" position = 0 path = { kind = "file", role = "input" } sources = ["fig"] [[commands.subcommand.field]] id = "right" label = "Second file" type = "path" position = 1 path = { kind = "file", role = "input" } sources = ["fig"] [[commands.subcommand.task]] id = "diff" label = "Diff files" fields = ["left", "right"] required = ["left", "right"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["left", "right"] [[commands.subcommand]] path = ["format"] label = "Format code" description = "Apply code style formatting." [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/webstorm.ts" license = "MIT" [[commands.subcommand.field]] id = "paths" label = "Files or folders" description = "Formatting rewrites these files in place." type = "path" position = 0 multiple = true path = { kind = "any", role = "input" } effect = "overwrite" sources = ["fig"] [[commands.subcommand.field]] id = "mask" label = "File masks" description = "Comma-separated file masks, e.g. *.ts,*.js." type = "string" option = ["-m"] sources = ["fig"] [[commands.subcommand.field]] id = "recursive" label = "Recurse into directories" type = "boolean" option = ["-r"] sources = ["fig"] [[commands.subcommand.field]] id = "settings" label = "Code style settings file" type = "path" option = ["-s"] path = { kind = "file", role = "input" } sources = ["fig"] [[commands.subcommand.field]] id = "dry" label = "Validate only (dry run)" type = "boolean" option = ["-d"] sources = ["fig"] [[commands.subcommand.task]] id = "dry" label = "Check formatting" fields = ["paths", "mask", "recursive", "dry"] required = ["paths"] set = { dry = [true] } [[commands.subcommand.task]] id = "format" label = "Format files" fields = ["paths", "mask", "recursive", "settings"] required = ["paths"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["paths", "mask", "recursive", "dry"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["settings"]