From c8671c2466a4a44c8416878116213a6d300623da Mon Sep 17 00:00:00 2001 From: Nico Jensch Date: Tue, 10 Nov 2020 09:45:58 +0100 Subject: [PATCH] Add micro config --- etc/skel/.config/micro/plug/aspell/LICENSE | 21 + etc/skel/.config/micro/plug/aspell/README.md | 4 + etc/skel/.config/micro/plug/aspell/aspell.lua | 637 ++++++++++++++++++ .../.config/micro/plug/aspell/help/aspell.md | 70 ++ etc/skel/.config/micro/plug/aspell/repo.json | 29 + etc/skel/.config/micro/plug/fzf/README.md | 1 + etc/skel/.config/micro/plug/fzf/main.lua | 38 ++ etc/skel/.config/micro/plug/fzf/repo.json | 32 + .../.config/micro/plug/misspell/README.md | 7 + .../.config/micro/plug/misspell/misspell.lua | 9 + .../.config/micro/plug/misspell/repo.json | 22 + .../micro/plug/monokai-dark/monokai-dark.lua | 3 + .../plug/monokai-dark/monokai-dark.micro | 21 + .../.config/micro/plug/monokai-dark/repo.json | 14 + etc/skel/.config/micro/plug/wc/CHANGELOG.md | 6 + etc/skel/.config/micro/plug/wc/LICENSE | 21 + etc/skel/.config/micro/plug/wc/README.md | 4 + etc/skel/.config/micro/plug/wc/help/wc.md | 25 + etc/skel/.config/micro/plug/wc/info.json | 10 + etc/skel/.config/micro/plug/wc/repo.json | 22 + etc/skel/.config/micro/plug/wc/wc.lua | 37 + etc/skel/.config/micro/settings.json | 5 + 22 files changed, 1038 insertions(+) create mode 100644 etc/skel/.config/micro/plug/aspell/LICENSE create mode 100644 etc/skel/.config/micro/plug/aspell/README.md create mode 100644 etc/skel/.config/micro/plug/aspell/aspell.lua create mode 100644 etc/skel/.config/micro/plug/aspell/help/aspell.md create mode 100644 etc/skel/.config/micro/plug/aspell/repo.json create mode 100644 etc/skel/.config/micro/plug/fzf/README.md create mode 100644 etc/skel/.config/micro/plug/fzf/main.lua create mode 100644 etc/skel/.config/micro/plug/fzf/repo.json create mode 100644 etc/skel/.config/micro/plug/misspell/README.md create mode 100644 etc/skel/.config/micro/plug/misspell/misspell.lua create mode 100644 etc/skel/.config/micro/plug/misspell/repo.json create mode 100644 etc/skel/.config/micro/plug/monokai-dark/monokai-dark.lua create mode 100644 etc/skel/.config/micro/plug/monokai-dark/monokai-dark.micro create mode 100644 etc/skel/.config/micro/plug/monokai-dark/repo.json create mode 100644 etc/skel/.config/micro/plug/wc/CHANGELOG.md create mode 100644 etc/skel/.config/micro/plug/wc/LICENSE create mode 100644 etc/skel/.config/micro/plug/wc/README.md create mode 100644 etc/skel/.config/micro/plug/wc/help/wc.md create mode 100644 etc/skel/.config/micro/plug/wc/info.json create mode 100644 etc/skel/.config/micro/plug/wc/repo.json create mode 100644 etc/skel/.config/micro/plug/wc/wc.lua create mode 100644 etc/skel/.config/micro/settings.json diff --git a/etc/skel/.config/micro/plug/aspell/LICENSE b/etc/skel/.config/micro/plug/aspell/LICENSE new file mode 100644 index 0000000..b569716 --- /dev/null +++ b/etc/skel/.config/micro/plug/aspell/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Ján Priner + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/etc/skel/.config/micro/plug/aspell/README.md b/etc/skel/.config/micro/plug/aspell/README.md new file mode 100644 index 0000000..1b6d4f9 --- /dev/null +++ b/etc/skel/.config/micro/plug/aspell/README.md @@ -0,0 +1,4 @@ +# Aspell plugin for Micro + +This is a spellchecking plugin for [Micro](https://micro-editor.github.io/) editor. +For help see [the help file](help/aspell.md). diff --git a/etc/skel/.config/micro/plug/aspell/aspell.lua b/etc/skel/.config/micro/plug/aspell/aspell.lua new file mode 100644 index 0000000..4e7ae78 --- /dev/null +++ b/etc/skel/.config/micro/plug/aspell/aspell.lua @@ -0,0 +1,637 @@ +VERSION = "1.2.0" + +local micro = import("micro") +local shell = import("micro/shell") +local buffer = import("micro/buffer") +local config = import("micro/config") +local util = import("micro/util") +local utf = import("unicode/utf8") + +config.RegisterCommonOption("aspell", "check", "auto") +config.RegisterCommonOption("aspell", "lang", "") +config.RegisterCommonOption("aspell", "dict", "") +config.RegisterCommonOption("aspell", "sugmode", "normal") +config.RegisterCommonOption("aspell", "args", "") + +function init() + config.MakeCommand("addpersonal", addpersonal, config.NoComplete) + config.MakeCommand("acceptsug", acceptsug, config.NoComplete) + config.AddRuntimeFile("aspell", config.RTHelp, "help/aspell.md") +end + +local filterModes = { + xml = "sgml", + ["c++"] = "ccpp", + c = "ccpp", + html = "html", + html4 = "html", + html5 = "html", + perl = "perl", + perl6 = "perl", + tex = "tex", + markdown = "markdown", + -- Aspell has comment mode, in which only lines starting with # are checked + -- but it doesn't work for some reason +} + +local lock = false +local next = nil + +function runAspell(buf, onExit, ...) + local text = util.String(buf:Bytes()) + + -- Escape for aspell (it interprets lines that start + -- with % @ ^ ! etc.) + text = text:gsub("\n", "\n^"):gsub("^", "^") + -- Enable terse mode + text = "!\n" .. text + -- Escape for shell + text = "'" .. text:gsub("'", "'\\''") .. "'" + + local options = "" + -- FIXME: we should support non-utf8 encodings with '--encoding' + if filterModes[buf:FileType()] then + options = options .. " --mode=" .. filterModes[buf:FileType()] + end + if buf.Settings["aspell.lang"] ~= "" then + options = options .. " --lang=" .. buf.Settings["aspell.lang"] + end + if buf.Settings["aspell.dict"] ~= "" then + options = options .. " --master=" .. buf.Settings["aspell.dict"] + end + if buf.Settings["aspell.sugmode"] ~= "" then + options = options .. " --sug-mode=" .. buf.Settings["aspell.sugmode"] + end + if buf.Settings["aspell.args"] ~= "" then + options = options .. " " .. buf.Settings["aspell.args"] + end + + shell.JobStart("printf %s " .. text .. " | aspell pipe" .. options, nil, + nil, onExit, buf, unpack(arg)) +end + +function spellcheck(buf) + local check = buf.Settings["aspell.check"] + if check == "on" or (check == "auto" and filterModes[buf:FileType()]) then + if lock then + next = buf + else + lock = true + runAspell(buf, highlight) + end + else + -- If we aren't supposed to spellcheck, clear the messages + buf:ClearMessages("aspell") + end +end + +-- Parses the output of Aspell and returns the list of all misspells. +function parseOutput(out) + local patterns = {"^# (.-) (%d+)$", "^& (.-) %d+ (%d+): (.+)$"} + + if out:find("command not found") then + micro.InfoBar():Error( + "Make sure that Aspell is installed and available in your PATH") + return {} + elseif not out:find("International Ispell Version") then + -- Something went wrong, we'll show what Aspell has to say + micro.InfoBar():Error("Aspell: " .. out) + return {} + end + + local misspells = {} + + local linenumber = 1 + local lines = split(out, "\n") + for _, line in ipairs(lines) do + if line == "" then + linenumber = linenumber + 1 + else + for _, pattern in ipairs(patterns) do + if string.find(line, pattern) then + local word, offset, suggestions = string.match(line, pattern) + offset = tonumber(offset) + local len = utf.RuneCountInString(word) + + misspells[#misspells + 1] = { + word = word, + mstart = buffer.Loc(offset - 1, linenumber - 1), + mend = buffer.Loc(offset - 1 + len, linenumber - 1), + suggestions = suggestions and split(suggestions, ", ") or {}, + } + end + end + end + end + + return misspells +end + +function highlight(out, args) + local buf = args[1] + + buf:ClearMessages("aspell") + + -- This is a hack that keeps the text shifted two columns to the right + -- even when no gutter messages are shown + local msg = "This message shouldn't be visible (Aspell plugin)" + local bmsg = buffer.NewMessageAtLine("aspell", msg, 0, buffer.MTError) + buf:AddMessage(bmsg) + + for _, misspell in ipairs(parseOutput(out)) do + local msg = nil + if #(misspell.suggestions) > 0 then + msg = misspell.word .. " -> " .. table.concat(misspell.suggestions, ", ") + else + msg = misspell.word .. " ->X" + end + local bmsg = buffer.NewMessage("aspell", msg, misspell.mstart, + misspell.mend, buffer.MTWarning) + buf:AddMessage(bmsg) + end + + lock = false + if next ~= nil then + spellcheck(next) + next = nil + end +end + +function parseMessages(messages) + local patterns = {"^(.-) %-> (.+)$", "^(.-) %->X$"} + + if messages == nil then + return {} + end + + local misspells = {} + + for i=1, #messages do + local message = messages[i] + if message.Owner == "aspell" then + for _, pattern in ipairs(patterns) do + if string.find(message.Msg, pattern) then + local word, suggestions = string.match(message.Msg, pattern) + + misspells[#misspells + 1] = { + word = word, + mstart = -message.Start, + mend = -message.End, + suggestions = suggestions and split(suggestions, ", ") or {}, + } + end + end + end + end + + return misspells +end + +function addpersonal(bp, args) + local buf = bp.Buf + + local loc = buf:GetActiveCursor().Loc + + for _, misspell in ipairs(parseMessages(buf.Messages)) do + local wordInBuf = util.String(buf:Substr(misspell.mstart, misspell.mend)) + if loc:GreaterEqual(misspell.mstart) and loc:LessEqual(misspell.mend) + and wordInBuf == misspell.word then + local options = "" + if buf.Settings["aspell.lang"] ~= "" then + options = options .. " --lang=" + .. buf.Settings["aspell.lang"] + end + if buf.Settings["aspell.dict"] ~= "" then + options = options .. " --master=" + .. buf.Settings["aspell.dict"] + end + if buf.Settings["aspell.args"] ~= "" then + options = options .. " " .. buf.Settings["aspell.args"] + end + + shell.ExecCommand("sh", "-c", "echo '*" .. misspell.word + .. "\n#\n' | aspell pipe" .. options) + + spellcheck(buf) + if args then + return + end + return true + end + end + + if args then + return + end + return false +end + +function acceptsug(bp, args) + local buf = bp.Buf + local n = nil + if args and #args > 0 then + n = tonumber(args[1]) + end + + local loc = buf:GetActiveCursor().Loc + + for _, misspell in ipairs(parseMessages(buf.Messages)) do + local wordInBuf = util.String(buf:Substr(misspell.mstart, misspell.mend)) + if loc:GreaterEqual(misspell.mstart) and loc:LessEqual(misspell.mend) + and wordInBuf == misspell.word then + if misspell.suggestions[n] then + -- If n is in the range we'll accept n-th suggestion + buf:GetActiveCursor():GotoLoc(misspell.mend) + buf:Replace(misspell.mstart, misspell.mend, misspell.suggestions[n]) + + spellcheck(buf) + if args then + return + end + return true + elseif #(misspell.suggestions) > 0 then + -- If n is 0 indicating acceptsug was called with no arguments + -- we will cycle through the suggestions autocomplete-like + buf:GetActiveCursor():GotoLoc(misspell.mend) + buf:Remove(misspell.mstart, misspell.mend) + buf:Autocomplete(function () + return misspell.suggestions, misspell.suggestions + end) + + spellcheck(buf) + if args then + return + end + return true + end + end + end + + if args then + return + end + return false +end + +function split(str, pat) + local t = {} + local fpat = "(.-)" .. pat + local last_end = 1 + local s, e, cap = str:find(fpat, 1) + while s do + if s ~= 1 or cap ~= "" then + table.insert(t, cap) + end + last_end = e+1 + s, e, cap = str:find(fpat, last_end) + end + if last_end <= #str then + cap = str:sub(last_end) + table.insert(t, cap) + end + return t +end + +-- We need to spellcheck every time, the buffer is modified. Sadly there's +-- no such thing as onBufferModified() + +function onBufferOpen(buf) + spellcheck(buf) +end + +-- The following callbacks are undocumented + +function onRune(bp) + spellcheck(bp.Buf) +end + +function onCycleAutocompleteBack(bp) + spellcheck(bp.Buf) +end + +-- The following were copied from help keybindings + +-- function onCursorUp(bp) +-- end + +-- function onCursorDown(bp) +-- end + +-- function onCursorPageUp(bp) +-- end + +-- function onCursorPageDown(bp) +-- end + +-- function onCursorLeft(bp) +-- end + +-- function onCursorRight(bp) +-- end + +-- function onCursorStart(bp) +-- end + +-- function onCursorEnd(bp) +-- end + +-- function onSelectToStart(bp) +-- end + +-- function onSelectToEnd(bp) +-- end + +-- function onSelectUp(bp) +-- end + +-- function onSelectDown(bp) +-- end + +-- function onSelectLeft(bp) +-- end + +-- function onSelectRight(bp) +-- end + +-- function onSelectToStartOfText(bp) +-- end + +-- function onSelectToStartOfTextToggle(bp) +-- end + +-- function onWordRight(bp) +-- end + +-- function onWordLeft(bp) +-- end + +-- function onSelectWordRight(bp) +-- end + +-- function onSelectWordLeft(bp) +-- end + +function onMoveLinesUp(bp) + spellcheck(bp.Buf) +end + +function onMoveLinesDown(bp) + spellcheck(bp.Buf) +end + +function onDeleteWordRight(bp) + spellcheck(bp.Buf) +end + +function onDeleteWordLeft(bp) + spellcheck(bp.Buf) +end + +-- function onSelectLine(bp) +-- end + +-- function onSelectToStartOfLine(bp) +-- end + +-- function onSelectToEndOfLine(bp) +-- end + +function onInsertNewline(bp) + spellcheck(bp.Buf) +end + +function onInsertSpace(bp) + spellcheck(bp.Buf) +end + +function onBackspace(bp) + spellcheck(bp.Buf) +end + +function onDelete(bp) + spellcheck(bp.Buf) +end + +-- function onCenter(bp) +-- end + +function onInsertTab(bp) + spellcheck(bp.Buf) +end + +-- function onSave(bp) +-- end + +-- function onSaveAll(bp) +-- end + +-- function onSaveAs(bp) +-- end + +-- function onFind(bp) +-- end + +-- function onFindLiteral(bp) +-- end + +-- function onFindNext(bp) +-- end + +-- function onFindPrevious(bp) +-- end + +function onUndo(bp) + spellcheck(bp.Buf) +end + +function onRedo(bp) + spellcheck(bp.Buf) +end + +-- function onCopy(bp) +-- end + +-- function onCopyLine(bp) +-- end + +function onCut(bp) + spellcheck(bp.Buf) +end + +function onCutLine(bp) + spellcheck(bp.Buf) +end + +function onDuplicateLine(bp) + spellcheck(bp.Buf) +end + +function onDeleteLine(bp) + spellcheck(bp.Buf) +end + +function onIndentSelection(bp) + spellcheck(bp.Buf) +end + +function onOutdentSelection(bp) + spellcheck(bp.Buf) +end + +function onOutdentLine(bp) + spellcheck(bp.Buf) +end + +function onIndentLine(bp) + spellcheck(bp.Buf) +end + +function onPaste(bp) + spellcheck(bp.Buf) +end + +-- function onSelectAll(bp) +-- end + +-- function onOpenFile(bp) +-- end + +-- function onStart(bp) +-- end + +-- function onEnd(bp) +-- end + +-- function onPageUp(bp) +-- end + +-- function onPageDown(bp) +-- end + +-- function onSelectPageUp(bp) +-- end + +-- function onSelectPageDown(bp) +-- end + +-- function onHalfPageUp(bp) +-- end + +-- function onHalfPageDown(bp) +-- end + +-- function onStartOfLine(bp) +-- end + +-- function onEndOfLine(bp) +-- end + +-- function onStartOfText(bp) +-- end + +-- function onStartOfTextToggle(bp) +-- end + +-- function onParagraphPrevious(bp) +-- end + +-- function onParagraphNext(bp) +-- end + +-- function onToggleHelp(bp) +-- end + +-- function onToggleDiffGutter(bp) +-- end + +-- function onToggleRuler(bp) +-- end + +-- function onJumpLine(bp) +-- end + +-- function onClearStatus(bp) +-- end + +-- function onShellMode(bp) +-- end + +-- function onCommandMode(bp) +-- end + +-- function onQuit(bp) +-- end + +-- function onQuitAll(bp) +-- end + +-- function onAddTab(bp) +-- end + +-- function onPreviousTab(bp) +-- end + +-- function onNextTab(bp) +-- end + +-- function onNextSplit(bp) +-- end + +-- function onUnsplit(bp) +-- end + +-- function onVSplit(bp) +-- end + +-- function onHSplit(bp) +-- end + +-- function onPreviousSplit(bp) +-- end + +-- function onToggleMacro(bp) +-- end + +function onPlayMacro(bp) + spellcheck(bp.Buf) +end + +-- function onSuspend(bp) -- Unix only +-- end + +-- function onScrollUp(bp) +-- end + +-- function onScrollDown(bp) +-- end + +-- function onSpawnMultiCursor(bp) +-- end + +-- function onSpawnMultiCursorUp(bp) +-- end + +-- function onSpawnMultiCursorDown(bp) +-- end + +-- function onSpawnMultiCursorSelect(bp) +-- end + +-- function onRemoveMultiCursor(bp) +-- end + +-- function onRemoveAllMultiCursors(bp) +-- end + +-- function onSkipMultiCursor(bp) +-- end + +-- function onNone(bp) +-- end + +-- function onJumpToMatchingBrace(bp) +-- end + +function onAutocomplete(bp) + spellcheck(bp.Buf) +end diff --git a/etc/skel/.config/micro/plug/aspell/help/aspell.md b/etc/skel/.config/micro/plug/aspell/help/aspell.md new file mode 100644 index 0000000..c3a028a --- /dev/null +++ b/etc/skel/.config/micro/plug/aspell/help/aspell.md @@ -0,0 +1,70 @@ +# Aspell plugin + +The text will be checked for misspells as you type. It understands the syntax +of XML, HTML, TeX and Markdown. On C++, C and Perl only comments and string +literals will be checked. + +You need to have Aspell installed and available in your PATH. It does not come +with this plugin. This plugin also currently doesn't work on Windows. + +## Options + +* `aspell.check`: controls whether spellchecking is performed. Possible values + are `on`, `off` and `auto`. When set to `auto`, only XML, C++, C, HTML, Perl + TeX and Markdown documents will be spellchecked. Defaults to `auto`. + +* `aspell.lang`: language to use. Two letter language code, optionally followed + by an underscore or a dash and a two letter country code. It will be passed + to Aspell in the `--lang` option. + +* `aspell.dict`: dictionary to use. Run `aspell dicts` in a terminal to see + available dictionaries. It will be passed to Aspell in the `--master` option. + +If both `aspell.dict` and `aspell.lang` are left empty (which is the default), +Aspell will follow locale settings. + +* `aspell.sugmode`: one of `ultra`, `fast`, `normal`, `slow` or `bad-spellers`. + It will be passed to Aspell in the `--sug-mode` option. Defaults to `normal`. + You may wish to change it to `fast`, if you feel that the spellchecking is + too slow. For an explanation of what each option does, see + http://aspell.net/man-html/Notes-on-the-Different-Suggestion-Modes.html + +* `aspell.args`: additional command line arguments, that will be passed to + Aspell. + +When you change some of these settings while in Micro using `setlocal` or +`set`, you might not see the effect until you modify a buffer. + +You can also disable or enable spellchecking for specific file types in your +`settings.json`: + +```json +{ + "*.txt": { + "aspell.check": "on" + }, + "ft:markdown": { + "aspell.check": "off" + } +} +``` + +## Commands + +* `addpersonal`: adds the word the cursor is on to your personal dictionary, so + that it won't be highlighted as a misspell anymore. You can bind it to a key + as `lua:aspell.addpersonal`. + +* `acceptsug 'n'?`: accepts the nth suggestion for the word the cursor is on. + You can bind it to a key as `lua:aspell.acceptsug`. If `n` is not provided or + this command is invoked with a keyboard shortcut, it will start to cycle + through the suggestions. Use `Tab` and `Backtab` to cycle through them. + +You can also use them in chain keybindings with `,`, `&` and `|` (see +`help keybindings`). Example `bindings.json`: + +```json +{ + "Tab": "Autocomplete|lua:aspell.acceptsug|IndentSelection|InsertTab" +} +``` diff --git a/etc/skel/.config/micro/plug/aspell/repo.json b/etc/skel/.config/micro/plug/aspell/repo.json new file mode 100644 index 0000000..baa1289 --- /dev/null +++ b/etc/skel/.config/micro/plug/aspell/repo.json @@ -0,0 +1,29 @@ +[{ + "Name": "aspell", + "Description": "Spellchecking with Aspell", + "Tags": ["spellchecking", "spelling", "aspell", "spellchecker"], + "Website": "https://github.com/priner/micro-aspell-plugin", + "Versions": [ + { + "Version": "1.2.0", + "Url": "https://github.com/priner/micro-aspell-plugin/archive/v1.2.0.zip", + "Require": { + "micro": ">=2.0.0" + } + }, + { + "Version": "1.1.0", + "Url": "https://github.com/priner/micro-aspell-plugin/archive/v1.1.0.zip", + "Require": { + "micro": ">=2.0.0" + } + }, + { + "Version": "1.0.0", + "Url": "https://github.com/priner/micro-aspell-plugin/archive/v1.0.0.zip", + "Require": { + "micro": ">=2.0.0" + } + } + ] +}] diff --git a/etc/skel/.config/micro/plug/fzf/README.md b/etc/skel/.config/micro/plug/fzf/README.md new file mode 100644 index 0000000..2f03afd --- /dev/null +++ b/etc/skel/.config/micro/plug/fzf/README.md @@ -0,0 +1 @@ +Provides a `fzf` command in micro to open a file in the current pane using fzf. diff --git a/etc/skel/.config/micro/plug/fzf/main.lua b/etc/skel/.config/micro/plug/fzf/main.lua new file mode 100644 index 0000000..fbdcd97 --- /dev/null +++ b/etc/skel/.config/micro/plug/fzf/main.lua @@ -0,0 +1,38 @@ +VERSION = "1.1.1" + +local micro = import("micro") +local shell = import("micro/shell") +local config = import("micro/config") +local buffer = import("micro/buffer") + +function fzf(bp) + if shell.TermEmuSupported then + local err = shell.RunTermEmulator(bp, "fzf", false, true, fzfOutput, {bp}) + if err ~= nil then + micro.InfoBar():Error(err) + end + else + local output, err = shell.RunInteractiveShell("fzf", false, true) + if err ~= nil then + micro.InfoBar():Error(err) + else + fzfOutput(output, {bp}) + end + end +end + +function fzfOutput(output, args) + local bp = args[1] + local strings = import("strings") + output = strings.TrimSpace(output) + if output ~= "" then + local buf, err = buffer.NewBufferFromFile(output) + if err == nil then + bp:OpenBuffer(buf) + end + end +end + +function init() + config.MakeCommand("fzf", fzf, config.NoComplete) +end diff --git a/etc/skel/.config/micro/plug/fzf/repo.json b/etc/skel/.config/micro/plug/fzf/repo.json new file mode 100644 index 0000000..592bab8 --- /dev/null +++ b/etc/skel/.config/micro/plug/fzf/repo.json @@ -0,0 +1,32 @@ +[ + { + "Name": "fzf", + "Description": "adds support to opening files via fzf", + "Website": "https://github.com/samdmarshall/micro-fzf-plugin", + "Tags": ["fzf"], + "Versions": [ + { + "Version": "1.1.1", + "Url": "https://github.com/micro-editor/updated-plugins/releases/download/v1.0.0/fzf-1.1.1.zip", + "Require": { + "micro": ">=2.0.0-1" + } + }, + { + "Version": "1.1.0", + "Url": "https://github.com/micro-editor/updated-plugins/releases/download/v1.0.0/fzf-1.1.0.zip", + "Require": { + "micro": ">=2.0.0-1" + } + }, + { + "Version": "1.0.5", + "Url": "https://github.com/samdmarshall/micro-fzf-plugin/archive/v1.0.5.zip", + "Require": { + "micro": ">=1.1.2" + } + } + ] + } +] + diff --git a/etc/skel/.config/micro/plug/misspell/README.md b/etc/skel/.config/micro/plug/misspell/README.md new file mode 100644 index 0000000..7c452c3 --- /dev/null +++ b/etc/skel/.config/micro/plug/misspell/README.md @@ -0,0 +1,7 @@ +# Misspell Plugin for Micro + +This repository holds the misspell plugin for micro. + +Install with `> plugin install misspell`, +https://github.com/client9/misspell needs to be in your PATH. +This plugin will lint text for spelling mistakes. diff --git a/etc/skel/.config/micro/plug/misspell/misspell.lua b/etc/skel/.config/micro/plug/misspell/misspell.lua new file mode 100644 index 0000000..924bbce --- /dev/null +++ b/etc/skel/.config/micro/plug/misspell/misspell.lua @@ -0,0 +1,9 @@ +VERSION = "0.2.0" + +local config = import("micro/config") + +function init() + -- uses the default linter plugin + -- matches any filetype + linter.makeLinter("misspell", "", "misspell", {"%f"}, "%f:%l:%c: %m", {}, false, true) +end \ No newline at end of file diff --git a/etc/skel/.config/micro/plug/misspell/repo.json b/etc/skel/.config/micro/plug/misspell/repo.json new file mode 100644 index 0000000..3208340 --- /dev/null +++ b/etc/skel/.config/micro/plug/misspell/repo.json @@ -0,0 +1,22 @@ +[{ + "Name": "misspell", + "Description": "plugin that corrects commonly misspelled words", + "Tags": ["spell", "check", "misspell"], + "Website": "https://github.com/onodera-punpun/micro-misspell-plugin", + "Versions": [ + { + "Version": "0.2.0", + "Url": "https://github.com/micro-editor/updated-plugins/releases/download/v1.0.0/misspell-0.2.0.zip", + "Require": { + "micro": ">=2.0.0-1" + } + }, + { + "Version": "0.1.0", + "Url": "https://github.com/onodera-punpun/micro-misspell-plugin/archive/0.1.0.zip", + "Require": { + "micro": ">=1.0.3" + } + } + ] +}] diff --git a/etc/skel/.config/micro/plug/monokai-dark/monokai-dark.lua b/etc/skel/.config/micro/plug/monokai-dark/monokai-dark.lua new file mode 100644 index 0000000..0252ea4 --- /dev/null +++ b/etc/skel/.config/micro/plug/monokai-dark/monokai-dark.lua @@ -0,0 +1,3 @@ +VERSION = "0.1.0" + +AddRuntimeFile("monokai-dark", "colorscheme", "monokai-dark.micro") diff --git a/etc/skel/.config/micro/plug/monokai-dark/monokai-dark.micro b/etc/skel/.config/micro/plug/monokai-dark/monokai-dark.micro new file mode 100644 index 0000000..a4eb347 --- /dev/null +++ b/etc/skel/.config/micro/plug/monokai-dark/monokai-dark.micro @@ -0,0 +1,21 @@ +color-link default "#D5D8D6,#1D0000" +color-link comment "#75715E" +color-link identifier "#66D9EF" +color-link constant "#AE81FF" +color-link constant.string "#E6DB74" +color-link constant.string.char "#BDE6AD" +color-link statement "#F92672" +color-link preproc "#CB4B16" +color-link type "#66D9EF" +color-link special "#A6E22E" +color-link underlined "#D33682" +color-link error "bold #CB4B16" +color-link todo "bold #D33682" +color-link statusline "#282828,#F8F8F2" +color-link indent-char "#505050,#282828" +color-link line-number "#AAAAAA,#282828" +color-link current-line-number "#AAAAAA,#282828" +color-link gutter-error "#CB4B16" +color-link gutter-warning "#E6DB74" +color-link cursor-line "#323232" +color-link color-column "#323232" diff --git a/etc/skel/.config/micro/plug/monokai-dark/repo.json b/etc/skel/.config/micro/plug/monokai-dark/repo.json new file mode 100644 index 0000000..9d9aa58 --- /dev/null +++ b/etc/skel/.config/micro/plug/monokai-dark/repo.json @@ -0,0 +1,14 @@ +[{ + "Name": "monokai-dark", + "Description": "A dark monokai colorscheme for micro", + "Tags": ["colorscheme"], + "Versions": [ + { + "Version": "0.1.0", + "Url": "https://github.com/theodus/monokai-dark/archive/0.1.0.zip", + "Require": { + "micro": ">=1.1.3" + } + } + ] +}] diff --git a/etc/skel/.config/micro/plug/wc/CHANGELOG.md b/etc/skel/.config/micro/plug/wc/CHANGELOG.md new file mode 100644 index 0000000..b36e4df --- /dev/null +++ b/etc/skel/.config/micro/plug/wc/CHANGELOG.md @@ -0,0 +1,6 @@ +Version 1.2.1 +* Fixed utf8 character count + +Version 1.2.0 ++ Now counts lines ++ Added Support for counting lines, words and characters in selection diff --git a/etc/skel/.config/micro/plug/wc/LICENSE b/etc/skel/.config/micro/plug/wc/LICENSE new file mode 100644 index 0000000..8c58ad0 --- /dev/null +++ b/etc/skel/.config/micro/plug/wc/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 bananaapple + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/etc/skel/.config/micro/plug/wc/README.md b/etc/skel/.config/micro/plug/wc/README.md new file mode 100644 index 0000000..78ff3c6 --- /dev/null +++ b/etc/skel/.config/micro/plug/wc/README.md @@ -0,0 +1,4 @@ +# Micro Word Count Plugin + +Word, character and line counter for micro editor. +(forked from https://github.com/adamnpeace/micro-wc-plugin) \ No newline at end of file diff --git a/etc/skel/.config/micro/plug/wc/help/wc.md b/etc/skel/.config/micro/plug/wc/help/wc.md new file mode 100644 index 0000000..ad36643 --- /dev/null +++ b/etc/skel/.config/micro/plug/wc/help/wc.md @@ -0,0 +1,25 @@ +# WordCount (wc) Plugin # + +The wc plugin provides the user with the ability to count either +characters or strings in any text being edited with micro. + +A word is defined as a string of characters delimited by white +space characters. White space characters are the set of characters +for which the iswspace(3) function returns true. + +A line is defined as a string of characters delimited by \n +characters, or by the beginning or end of the file. \r\n line +endings will be counted correctly as well, since there is only +one \n per \r\n. + +Character count includes white space and newline characters. + +To initiate the function, you can either: + +Press "F5" + +Or run: + +``` +> wc +``` diff --git a/etc/skel/.config/micro/plug/wc/info.json b/etc/skel/.config/micro/plug/wc/info.json new file mode 100644 index 0000000..b5b8886 --- /dev/null +++ b/etc/skel/.config/micro/plug/wc/info.json @@ -0,0 +1,10 @@ +{ + "name": "wc", + "description": "Word count plugin", + "website": "", + "install": "", + "version": "1.2.1", + "require": [ + "micro >= 2.0.0" + ] +} diff --git a/etc/skel/.config/micro/plug/wc/repo.json b/etc/skel/.config/micro/plug/wc/repo.json new file mode 100644 index 0000000..3f6a05d --- /dev/null +++ b/etc/skel/.config/micro/plug/wc/repo.json @@ -0,0 +1,22 @@ +[{ + "Name": "wc", + "Description": "Plugin to count words/characters in micro", + "Tags": ["wc", "word", "character", "count"], + "Website": "https://github.com/adamnpeace/micro-wc-plugin", + "Versions": [ + { + "Version": "1.1.0", + "Url": "https://github.com/adamnpeace/micro-wc-plugin/archive/v1.1.0.zip", + "Require": { + "micro": ">=2.0.0-1" + } + }, + { + "Version": "1.0.1", + "Url": "https://github.com/adamnpeace/micro-wc-plugin/archive/v1.0.1.zip", + "Require": { + "micro": ">=1.1.0" + } + } + ] +}] diff --git a/etc/skel/.config/micro/plug/wc/wc.lua b/etc/skel/.config/micro/plug/wc/wc.lua new file mode 100644 index 0000000..0e13677 --- /dev/null +++ b/etc/skel/.config/micro/plug/wc/wc.lua @@ -0,0 +1,37 @@ +VERSION = "1.2.1" + +local micro = import("micro") +local config = import("micro/config") +local util = import("micro/util") +local utf8 = import("unicode/utf8") + +function init() + config.MakeCommand("wc", wordCount, config.NoComplete) + config.AddRuntimeFile("wc", config.RTHelp, "help/wc.md") + config.TryBindKey("F5", "lua:wc.wordCount", false) +end + +function wordCount(bp) + -- Buffer of selection/whole document + local buffer + --Get active cursor (to get selection) + local cursor = bp.Buf:GetActiveCursor() + --If cursor exists and there is selection, convert selection byte[] to string + if cursor and cursor:HasSelection() then + buffer = util.String(cursor:GetSelection()) + else + --no selection, convert whole buffer byte[] to string + buffer = util.String(bp.Buf:Bytes()) + end + --length of the buffer/selection (string), utf8 friendly + charCount = utf8.RuneCountInString(buffer) + --Get word/line count using gsub's number of substitutions + -- number of substitutions, pattern: %S+ (more than one non-whitespace characters) + local _ , wordCount = buffer:gsub("%S+","") + -- number of substitutions, pattern: \n (number of newline characters) + local _, lineCount = buffer:gsub("\n", "") + --add one to line count (since we're counting separators not lines above) + lineCount = lineCount + 1 + --display the message + micro.InfoBar():Message("Lines:" .. lineCount .. " Words:"..wordCount.." Characters:"..charCount) +end diff --git a/etc/skel/.config/micro/settings.json b/etc/skel/.config/micro/settings.json new file mode 100644 index 0000000..a0e0ae8 --- /dev/null +++ b/etc/skel/.config/micro/settings.json @@ -0,0 +1,5 @@ +{ + "autosu": true, + "colorscheme": "monokai-dark", + "mkparents": true +}