1
0
Fork 0
mirror of synced 2024-12-22 16:18:59 -05:00

Add root configs

This commit is contained in:
Nico Jensch 2020-11-13 12:54:07 +01:00
parent 33534c42cf
commit 222587ccee
18 changed files with 1660 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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).

View file

@ -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

View file

@ -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"
}
```

View file

@ -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"
}
}
]
}]

View file

@ -0,0 +1 @@
Provides a `fzf` command in micro to open a file in the current pane using fzf.

View file

@ -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

View file

@ -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"
}
}
]
}
]

View file

@ -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

View file

@ -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.

View file

@ -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)

View file

@ -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
```

View file

@ -0,0 +1,10 @@
{
"name": "wc",
"description": "Word count plugin",
"website": "",
"install": "",
"version": "1.2.1",
"require": [
"micro >= 2.0.0"
]
}

View file

@ -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"
}
}
]
}]

View file

@ -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

View file

@ -0,0 +1,4 @@
{
"autosu": true,
"mkparents": true
}