From 222587ccee13e899aebec9c3d25a37a15afa4e59 Mon Sep 17 00:00:00 2001 From: Nico Jensch Date: Fri, 13 Nov 2020 12:54:07 +0100 Subject: [PATCH] Add root configs --- root/.config/alacritty/alacritty.yml | 648 ++++++++++++++++++ root/.config/bleachbit/bleachbit.ini | 51 ++ root/.config/micro/plug/aspell/LICENSE | 21 + root/.config/micro/plug/aspell/README.md | 4 + root/.config/micro/plug/aspell/aspell.lua | 637 +++++++++++++++++ root/.config/micro/plug/aspell/help/aspell.md | 70 ++ root/.config/micro/plug/aspell/repo.json | 29 + root/.config/micro/plug/fzf/README.md | 1 + root/.config/micro/plug/fzf/main.lua | 38 + root/.config/micro/plug/fzf/repo.json | 32 + root/.config/micro/plug/wc/CHANGELOG.md | 6 + root/.config/micro/plug/wc/LICENSE | 21 + root/.config/micro/plug/wc/README.md | 4 + root/.config/micro/plug/wc/help/wc.md | 25 + root/.config/micro/plug/wc/info.json | 10 + root/.config/micro/plug/wc/repo.json | 22 + root/.config/micro/plug/wc/wc.lua | 37 + root/.config/micro/settings.json | 4 + 18 files changed, 1660 insertions(+) create mode 100644 root/.config/alacritty/alacritty.yml create mode 100644 root/.config/bleachbit/bleachbit.ini create mode 100644 root/.config/micro/plug/aspell/LICENSE create mode 100644 root/.config/micro/plug/aspell/README.md create mode 100644 root/.config/micro/plug/aspell/aspell.lua create mode 100644 root/.config/micro/plug/aspell/help/aspell.md create mode 100644 root/.config/micro/plug/aspell/repo.json create mode 100644 root/.config/micro/plug/fzf/README.md create mode 100644 root/.config/micro/plug/fzf/main.lua create mode 100644 root/.config/micro/plug/fzf/repo.json create mode 100644 root/.config/micro/plug/wc/CHANGELOG.md create mode 100644 root/.config/micro/plug/wc/LICENSE create mode 100644 root/.config/micro/plug/wc/README.md create mode 100644 root/.config/micro/plug/wc/help/wc.md create mode 100644 root/.config/micro/plug/wc/info.json create mode 100644 root/.config/micro/plug/wc/repo.json create mode 100644 root/.config/micro/plug/wc/wc.lua create mode 100644 root/.config/micro/settings.json diff --git a/root/.config/alacritty/alacritty.yml b/root/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..4a7c77c --- /dev/null +++ b/root/.config/alacritty/alacritty.yml @@ -0,0 +1,648 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator. + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty itself. +env: + # TERM variable + # + # This value is used to set the `$TERM` environment variable for + # each instance of Alacritty. If it is not present, alacritty will + # check the local terminfo database and use `alacritty` if it is + # available, otherwise `xterm-256color` is used. + TERM: xterm-256color + +window: + # Window dimensions (changes require restart) + # + # Specified in number of columns/lines, not pixels. + # If both are `0`, this setting is ignored. + #dimensions: + # columns: 0 + # lines: 0 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + #position: + # x: 0 + # y: 0 + + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is scaled + # by DPI and the specified value is always added at both opposing sides. + #padding: + # x: 0 + # y: 0 + + # Spread additional padding evenly around the terminal content. + dynamic_padding: true + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background, but no title bar buttons + decorations: full + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # Window title + title: Garudas Alacritty + + # Window class (Linux/BSD only): + #class: + # Application instance name + #instance: Alacritty + # General application class + #general: Alacritty + + # GTK theme variant (Linux/BSD only) + # + # Override the variant of the GTK theme. Commonly supported values are `dark` and `light`. + # Set this to `None` to use the default theme variant. + gtk_theme_variant: dark + +scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. + history: 10000 + + # Scrolling distance multiplier. + multiplier: 3 + +# Font configuration +font: + # Normal (roman) font face + size: 10 + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: MesloLGS NF + + # The `style` can be specified to pick a specific face. + #style: Regular + + # Bold font face + bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + family: MesloLGS NF + + # The `style` can be specified to pick a specific face. + #style: Bold + + # Italic font face + italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + family: MesloLGS NF + + # The `style` can be specified to pick a specific face. + #style: Italic + + # Bold italic font face + bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + family: MesloLGS NF + + # The `style` can be specified to pick a specific face. + #style: Bold Italic + + # Point size + size: 11.0 + + # Offset is the extra space around each character. `offset.y` can be thought of + # as modifying the line spacing, and `offset.x` as modifying the letter spacing. + #offset: + # x: 0 + # y: 0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increasing `x` moves the glyph to the right, + # increasing `y` moves the glyph upwards. + #glyph_offset: + # x: 0 + # y: 0 + + # Thin stroke font rendering (macOS only) + # + # Thin strokes are suitable for retina displays, but for non-retina screens + # it is recommended to set `use_thin_strokes` to `false`. + #use_thin_strokes: true + +# If `true`, bold text is drawn using the bright color variants. +draw_bold_text_with_bright_colors: true + +# Colors (Tomorrow Night) +#colors: + # Default colors + #primary: + # background: '#1d1f21' + # foreground: '#c5c8c6' + + # Bright and dim foreground colors + # + # The dimmed foreground color is calculated automatically if it is not present. + # If the bright foreground color is not set, or `draw_bold_text_with_bright_colors` + # is `false`, the normal foreground color will be used. + #dim_foreground: '#828482' + #bright_foreground: '#eaeaea' + + # Cursor colors + # + # Colors which should be used to draw the terminal cursor. If these are + # unset, the cursor color will be the inverse of the cell color. + #cursor: + # text: '#000000' + # cursor: '#ffffff' + + # Vi mode cursor colors + # + # Colors for the cursor when the vi mode is active. If these are unset, the + # cursor color will be the inverse of the cell color. + #vi_mode_cursor: + # text: '#000000' + # cursor: '#ffffff' + + # Selection colors + # + # Colors which should be used to draw the selection area. If selection + # background is unset, selection color will be the inverse of the cell colors. + # If only text is unset the cell text color will remain the same. + #selection: + # text: '#eaeaea' + # background: '#404040' + + # Normal colors + #normal: + # black: '#1d1f21' + # red: '#cc6666' + # green: '#b5bd68' + # yellow: '#f0c674' + # blue: '#81a2be' + # magenta: '#b294bb' + # cyan: '#8abeb7' + # white: '#c5c8c6' + + # Bright colors + #bright: + # black: '#666666' + # red: '#d54e53' + # green: '#b9ca4a' + # yellow: '#e7c547' + # blue: '#7aa6da' + # magenta: '#c397d8' + # cyan: '#70c0b1' + # white: '#eaeaea' + + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. + #dim: + # black: '#131415' + # red: '#864343' + # green: '#777c44' + # yellow: '#9e824c' + # blue: '#556a7d' + # magenta: '#75617b' + # cyan: '#5b7d78' + # white: '#828482' + + # Indexed Colors + # + # The indexed colors include all colors from 16 to 256. + # When these are not set, they're filled with sensible defaults. + # + # Example: + # `- { index: 16, color: '#ff00ff' }` + # + #indexed_colors: [] + +# Visual Bell +# +# Any time the BEL code is received, Alacritty "rings" the visual bell. Once +# rung, the terminal background will be set to white and transition back to the +# default background color. You can control the rate of this transition by +# setting the `duration` property (represented in milliseconds). You can also +# configure the transition function by setting the `animation` property. +# +# Values for `animation`: +# - Ease +# - EaseOut +# - EaseOutSine +# - EaseOutQuad +# - EaseOutCubic +# - EaseOutQuart +# - EaseOutQuint +# - EaseOutExpo +# - EaseOutCirc +# - Linear +# +# Specifying a `duration` of `0` will disable the visual bell. +#visual_bell: +# animation: EaseOutExpo +# duration: 0 +# color: '#ffffff' + +# Background opacity +# +# Window opacity as a floating point number from `0.0` to `1.0`. +# The value `0.0` is completely transparent and `1.0` is opaque. +background_opacity: 0.9 + +#selection: + #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + #save_to_clipboard: false + +# Allow terminal applications to change Alacritty's window title. +#dynamic_title: true + +#cursor: + # Cursor style + # + # Values for `style`: + # - ▇ Block + # - _ Underline + # - | Beam + #style: Block + + # Vi mode cursor style + # + # If the vi mode cursor style is `None` or not specified, it will fall back to + # the style of the active value of the normal cursor. + # + # See `cursor.style` for available options. + #vi_mode_style: None + + # If this is `true`, the cursor will be rendered as a hollow box when the + # window is not focused. + #unfocused_hollow: true + + # Thickness of the cursor relative to the cell width as floating point number + # from `0.0` to `1.0`. + #thickness: 0.15 + +# Live config reload (changes require restart) +#live_config_reload: true + +# Shell +# +# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. +# Entries in `shell.args` are passed unmodified as arguments to the shell. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +#shell: +# program: /bin/bash +# args: +# - --login + +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None + +# WinPTY backend (Windows only) +# +# Alacritty defaults to using the newer ConPTY backend if it is available, +# since it resolves a lot of bugs and is quite a bit faster. If it is not +# available, the the WinPTY backend will be used instead. +# +# Setting this option to `true` makes Alacritty use the legacy WinPTY backend, +# even if the ConPTY backend is available. +#winpty_backend: false + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. + #double_click: { threshold: 300 } + #triple_click: { threshold: 300 } + + # If this is `true`, the cursor is temporarily hidden when typing. + hide_when_typing: true + + #url: + # URL launcher + # + # This program is executed when clicking on a text which is recognized as a URL. + # The URL is always added to the command as the last parameter. + # + # When set to `launcher: None`, URL launching will be disabled completely. + # + # Default: + # - (macOS) open + # - (Linux/BSD) xdg-open + # - (Windows) explorer + #launcher: + # program: xdg-open + # args: [] + + # URL modifiers + # + # These are the modifiers that need to be held down for opening URLs when clicking + # on them. The available modifiers are documented in the key binding section. + #modifiers: None + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty captures the mouse, the +# `Shift` modifier is automatically added as a requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings) +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Middle, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - ToggleViMode +# - Copy +# - Paste +# - PasteSelection +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# - Hide +# - Minimize +# - Quit +# - ToggleFullscreen +# - SpawnNewInstance +# - ClearLogNotice +# - ClearSelection +# - ReceiveChar +# - None +# +# (`mode: Vi` only): +# - Open +# - Up +# - Down +# - Left +# - Right +# - First +# - Last +# - FirstOccupied +# - High +# - Middle +# - Low +# - SemanticLeft +# - SemanticRight +# - SemanticLeftEnd +# - SemanticRightEnd +# - WordRight +# - WordLeft +# - WordRightEnd +# - WordLeftEnd +# - Bracket +# - ToggleNormalSelection +# - ToggleLineSelection +# - ToggleBlockSelection +# - ToggleSemanticSelection +# +# (macOS only): +# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space +# +# (Linux/BSD only): +# - CopySelection: Copies into selection buffer +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Alt +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# at once. +#key_bindings: + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, mode: ~Vi, chars: "\x0c" } + #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, } + #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } + #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, } + #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } + + # Vi Mode + #- { key: Space, mods: Shift|Control, mode: Vi, action: ScrollToBottom } + #- { key: Space, mods: Shift|Control, action: ToggleViMode } + #- { key: Escape, mode: Vi, action: ClearSelection } + #- { key: I, mode: Vi, action: ScrollToBottom } + #- { key: I, mode: Vi, action: ToggleViMode } + #- { key: Y, mods: Control, mode: Vi, action: ScrollLineUp } + #- { key: E, mods: Control, mode: Vi, action: ScrollLineDown } + #- { key: G, mode: Vi, action: ScrollToTop } + #- { key: G, mods: Shift, mode: Vi, action: ScrollToBottom } + #- { key: B, mods: Control, mode: Vi, action: ScrollPageUp } + #- { key: F, mods: Control, mode: Vi, action: ScrollPageDown } + #- { key: U, mods: Control, mode: Vi, action: ScrollHalfPageUp } + #- { key: D, mods: Control, mode: Vi, action: ScrollHalfPageDown } + #- { key: Y, mode: Vi, action: Copy } + #- { key: Y, mode: Vi, action: ClearSelection } + #- { key: Copy, mode: Vi, action: ClearSelection } + #- { key: V, mode: Vi, action: ToggleNormalSelection } + #- { key: V, mods: Shift, mode: Vi, action: ToggleLineSelection } + #- { key: V, mods: Control, mode: Vi, action: ToggleBlockSelection } + #- { key: V, mods: Alt, mode: Vi, action: ToggleSemanticSelection } + #- { key: Return, mode: Vi, action: Open } + #- { key: K, mode: Vi, action: Up } + #- { key: J, mode: Vi, action: Down } + #- { key: H, mode: Vi, action: Left } + #- { key: L, mode: Vi, action: Right } + #- { key: Up, mode: Vi, action: Up } + #- { key: Down, mode: Vi, action: Down } + #- { key: Left, mode: Vi, action: Left } + #- { key: Right, mode: Vi, action: Right } + #- { key: Key0, mode: Vi, action: First } + #- { key: Key4, mods: Shift, mode: Vi, action: Last } + #- { key: Key6, mods: Shift, mode: Vi, action: FirstOccupied } + #- { key: H, mods: Shift, mode: Vi, action: High } + #- { key: M, mods: Shift, mode: Vi, action: Middle } + #- { key: L, mods: Shift, mode: Vi, action: Low } + #- { key: B, mode: Vi, action: SemanticLeft } + #- { key: W, mode: Vi, action: SemanticRight } + #- { key: E, mode: Vi, action: SemanticRightEnd } + #- { key: B, mods: Shift, mode: Vi, action: WordLeft } + #- { key: W, mods: Shift, mode: Vi, action: WordRight } + #- { key: E, mods: Shift, mode: Vi, action: WordRightEnd } + #- { key: Key5, mods: Shift, mode: Vi, action: Bracket } + + # (Windows, Linux, and BSD only) + #- { key: V, mods: Control|Shift, action: Paste } + #- { key: C, mods: Control|Shift, action: Copy } + #- { key: C, mods: Control|Shift, mode: Vi, action: ClearSelection } + #- { key: Insert, mods: Shift, action: PasteSelection } + #- { key: Key0, mods: Control, action: ResetFontSize } + #- { key: Equals, mods: Control, action: IncreaseFontSize } + #- { key: Add, mods: Control, action: IncreaseFontSize } + #- { key: Subtract, mods: Control, action: DecreaseFontSize } + #- { key: Minus, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: K, mods: Command, mode: ~Vi, chars: "\x0c" } + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Add, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: K, mods: Command, action: ClearHistory } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: C, mods: Command, mode: Vi, action: ClearSelection } + #- { key: H, mods: Command, action: Hide } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: N, mods: Command, action: SpawnNewInstance } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + +#debug: + # Display the time it takes to redraw each frame. + #render_timer: false + + # Keep the log file after quitting Alacritty. + #persistent_logging: false + + # Log level + # + # Values for `log_level`: + # - None + # - Error + # - Warn + # - Info + # - Debug + # - Trace + #log_level: Warn + + # Print all received window events. + #print_events: false diff --git a/root/.config/bleachbit/bleachbit.ini b/root/.config/bleachbit/bleachbit.ini new file mode 100644 index 0000000..3b2d1a4 --- /dev/null +++ b/root/.config/bleachbit/bleachbit.ini @@ -0,0 +1,51 @@ +[bleachbit] +auto_hide = True +check_beta = False +check_online_updates = True +dark_mode = True +delete_confirmation = True +debug = False +exit_done = False +shred = False +units_iec = False + +[tree] +evolution = True +evolution.cache = True +firefox.crash_reports = True +firefox = True +firefox.backup = True +firefox.cache = True +gnome = True +gnome.run = True +gnome.search_history = True +journald = True +journald.clean = True +system.desktop_entry = True +system = True +system.recent_documents = True +system.localizations = True +system.trash = True +system.rotated_logs = True +system.tmp = True +system.clipboard = True +system.cache = True +deepscan.ds_store = True +deepscan = True +deepscan.backup = True +deepscan.tmp = True +deepscan.thumbs_db = True +deepscan.vim_swap_root = True +deepscan.vim_swap_user = True +x11 = True +x11.debug_logs = True +thumbnails = True +thumbnails.cache = True +thunderbird = True +thunderbird.cache = True +thunderbird.cookies = True +thunderbird.index = True +thunderbird.passwords = True +thunderbird.vacuum = True +firefox.vacuum = True + diff --git a/root/.config/micro/plug/aspell/LICENSE b/root/.config/micro/plug/aspell/LICENSE new file mode 100644 index 0000000..b569716 --- /dev/null +++ b/root/.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/root/.config/micro/plug/aspell/README.md b/root/.config/micro/plug/aspell/README.md new file mode 100644 index 0000000..1b6d4f9 --- /dev/null +++ b/root/.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/root/.config/micro/plug/aspell/aspell.lua b/root/.config/micro/plug/aspell/aspell.lua new file mode 100644 index 0000000..4e7ae78 --- /dev/null +++ b/root/.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/root/.config/micro/plug/aspell/help/aspell.md b/root/.config/micro/plug/aspell/help/aspell.md new file mode 100644 index 0000000..c3a028a --- /dev/null +++ b/root/.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/root/.config/micro/plug/aspell/repo.json b/root/.config/micro/plug/aspell/repo.json new file mode 100644 index 0000000..baa1289 --- /dev/null +++ b/root/.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/root/.config/micro/plug/fzf/README.md b/root/.config/micro/plug/fzf/README.md new file mode 100644 index 0000000..2f03afd --- /dev/null +++ b/root/.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/root/.config/micro/plug/fzf/main.lua b/root/.config/micro/plug/fzf/main.lua new file mode 100644 index 0000000..fbdcd97 --- /dev/null +++ b/root/.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/root/.config/micro/plug/fzf/repo.json b/root/.config/micro/plug/fzf/repo.json new file mode 100644 index 0000000..592bab8 --- /dev/null +++ b/root/.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/root/.config/micro/plug/wc/CHANGELOG.md b/root/.config/micro/plug/wc/CHANGELOG.md new file mode 100644 index 0000000..b36e4df --- /dev/null +++ b/root/.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/root/.config/micro/plug/wc/LICENSE b/root/.config/micro/plug/wc/LICENSE new file mode 100644 index 0000000..8c58ad0 --- /dev/null +++ b/root/.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/root/.config/micro/plug/wc/README.md b/root/.config/micro/plug/wc/README.md new file mode 100644 index 0000000..78ff3c6 --- /dev/null +++ b/root/.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/root/.config/micro/plug/wc/help/wc.md b/root/.config/micro/plug/wc/help/wc.md new file mode 100644 index 0000000..ad36643 --- /dev/null +++ b/root/.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/root/.config/micro/plug/wc/info.json b/root/.config/micro/plug/wc/info.json new file mode 100644 index 0000000..b5b8886 --- /dev/null +++ b/root/.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/root/.config/micro/plug/wc/repo.json b/root/.config/micro/plug/wc/repo.json new file mode 100644 index 0000000..3f6a05d --- /dev/null +++ b/root/.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/root/.config/micro/plug/wc/wc.lua b/root/.config/micro/plug/wc/wc.lua new file mode 100644 index 0000000..0e13677 --- /dev/null +++ b/root/.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/root/.config/micro/settings.json b/root/.config/micro/settings.json new file mode 100644 index 0000000..cb79748 --- /dev/null +++ b/root/.config/micro/settings.json @@ -0,0 +1,4 @@ +{ + "autosu": true, + "mkparents": true +}