summaryrefslogtreecommitdiff
path: root/.config/micro/plug/snippets
diff options
context:
space:
mode:
Diffstat (limited to '.config/micro/plug/snippets')
-rw-r--r--.config/micro/plug/snippets/LICENSE20
-rw-r--r--.config/micro/plug/snippets/README.md26
-rw-r--r--.config/micro/plug/snippets/help/snippets.md82
-rw-r--r--.config/micro/plug/snippets/info.json10
-rw-r--r--.config/micro/plug/snippets/repo.json29
-rw-r--r--.config/micro/plug/snippets/snippets.lua586
-rw-r--r--.config/micro/plug/snippets/snippets/apacheconf.snippets35
-rw-r--r--.config/micro/plug/snippets/snippets/awk.snippets102
-rw-r--r--.config/micro/plug/snippets/snippets/c#.snippets470
-rw-r--r--.config/micro/plug/snippets/snippets/c.snippets228
-rw-r--r--.config/micro/plug/snippets/snippets/cmake.snippets83
-rw-r--r--.config/micro/plug/snippets/snippets/css.snippets987
-rw-r--r--.config/micro/plug/snippets/snippets/d.snippets338
-rw-r--r--.config/micro/plug/snippets/snippets/dart.snippets82
-rw-r--r--.config/micro/plug/snippets/snippets/fish.snippets29
-rw-r--r--.config/micro/plug/snippets/snippets/fortran.snippets93
-rw-r--r--.config/micro/plug/snippets/snippets/go.snippets237
-rw-r--r--.config/micro/plug/snippets/snippets/haml.snippets37
-rw-r--r--.config/micro/plug/snippets/snippets/haskell.snippets115
-rw-r--r--.config/micro/plug/snippets/snippets/html.snippets877
-rw-r--r--.config/micro/plug/snippets/snippets/ino.snippets106
-rw-r--r--.config/micro/plug/snippets/snippets/java.snippets287
-rw-r--r--.config/micro/plug/snippets/snippets/javascript.snippets286
-rw-r--r--.config/micro/plug/snippets/snippets/ledger.snippets5
-rw-r--r--.config/micro/plug/snippets/snippets/lfe.snippets18
-rw-r--r--.config/micro/plug/snippets/snippets/lua.snippets21
-rw-r--r--.config/micro/plug/snippets/snippets/makefile.snippets50
-rw-r--r--.config/micro/plug/snippets/snippets/markdown.snippets139
-rw-r--r--.config/micro/plug/snippets/snippets/perl.snippets363
-rw-r--r--.config/micro/plug/snippets/snippets/perl6.snippets116
-rw-r--r--.config/micro/plug/snippets/snippets/php.snippets663
-rw-r--r--.config/micro/plug/snippets/snippets/po.snippets5
-rw-r--r--.config/micro/plug/snippets/snippets/puppet.snippets269
-rw-r--r--.config/micro/plug/snippets/snippets/python.snippets242
-rw-r--r--.config/micro/plug/snippets/snippets/r.snippets131
-rw-r--r--.config/micro/plug/snippets/snippets/rst.snippets98
-rw-r--r--.config/micro/plug/snippets/snippets/ruby.snippets731
-rw-r--r--.config/micro/plug/snippets/snippets/rust.snippets190
-rw-r--r--.config/micro/plug/snippets/snippets/scala.snippets360
-rw-r--r--.config/micro/plug/snippets/snippets/shell.snippets99
-rw-r--r--.config/micro/plug/snippets/snippets/sql.snippets26
-rw-r--r--.config/micro/plug/snippets/snippets/tcl.snippets96
-rw-r--r--.config/micro/plug/snippets/snippets/tex.snippets317
-rw-r--r--.config/micro/plug/snippets/snippets/vi.snippets52
-rw-r--r--.config/micro/plug/snippets/snippets/xml.snippets12
-rw-r--r--.config/micro/plug/snippets/snippets/zsh.snippets66
46 files changed, 9214 insertions, 0 deletions
diff --git a/.config/micro/plug/snippets/LICENSE b/.config/micro/plug/snippets/LICENSE
new file mode 100644
index 0000000..11b0566
--- /dev/null
+++ b/.config/micro/plug/snippets/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2016: Florian Sundermann.
+
+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. \ No newline at end of file
diff --git a/.config/micro/plug/snippets/README.md b/.config/micro/plug/snippets/README.md
new file mode 100644
index 0000000..54cf3b9
--- /dev/null
+++ b/.config/micro/plug/snippets/README.md
@@ -0,0 +1,26 @@
+This project was originally created by [boombuler](https://github.com/boombuler)
+
+## Introduction
+
+This is a simple snippet plugin for the [Micro](https://github.com/zyedidia/micro) editor.
+
+The plugin comes with some snippet files which are taken from [vim-snippets](https://github.com/honza/vim-snippets)
+
+Have a look at those repositories for their license and additional information!
+
+Other [plugins](https://github.com/micro-editor/plugin-channel) for Micro editor
+
+## Install Snippet Plugin
+
+### From Micro Version 1
+
+'ctrl-e'
+
+'plugin install snippets'
+
+### From Micro Version 2
+
+```bash
+cd ~/.config/micro/plug
+git clone https://github.com/tommyshem/micro-snippets-plugin.git snippets
+```
diff --git a/.config/micro/plug/snippets/help/snippets.md b/.config/micro/plug/snippets/help/snippets.md
new file mode 100644
index 0000000..aeeaab3
--- /dev/null
+++ b/.config/micro/plug/snippets/help/snippets.md
@@ -0,0 +1,82 @@
+# About the snippet plugin
+
+This plugin is designed to work with simple VIM snippets like the once from
+[here](https://github.com/honza/vim-snippets/tree/master/snippets)
+The plugin itself doesn't provide any snippets. To add snippets for a language
+place a file containing the snippets at `~/.config/micro/plugins/snippets/[filetype].snippets`
+
+## Commands
+
+The plugin provides the following commands:
+
+ | Command | Description of function | Key |
+ | ------------- | :--------------------------------------------------- | :---: |
+ | snippetinsert | with an optional parameter to specify which snippet | Alt+S |
+ | ' | should be inserted. |
+ | ' | If the parameter is absent, the word right |
+ | ' | before the cursor will be used for this. |
+ | snippetnext | proceeds to the next placeholder | Alt+W |
+ | snippetcancel | removes all the current snippet | Alt+D |
+ | snippetaccept | finishes the snippet editing for the current snippet | Alt+A |
+
+## Snippet Files
+
+The snippet files have a very simple syntax:
+
+* lines starting with `#` are ignored
+* a line starts with `snippet` starts a new snippet.
+* after `snippet` you can add one or more shortcuts for the snippets,
+ like `snippet aFunc bFunc` (at least one shortcut is required)
+* every line of code within the snippet must start with a tab (`\t`)
+* a snippet can have multiple placeholders which are indicated by `
+ ${num[:name]}` where num is a numeric value. Placeholders with the
+ same number share the same value. You also have the option to give
+ a placeholder a name / description / default value.
+
+Plugins can provide snippet files they just need to publish them as a runtime file with type `snippets`.
+See the plugins help for additional details.
+
+Sample for go:
+
+```go
+# creates a function that prints a value
+snippet fmtfunc
+ func ${0:name}() {
+ fmt.Println("${0} prints:", ${1:value})
+ }
+```
+
+## Custom Key Bindings
+
+Add a file, if not already created in `~/.config/micro/bindings.json`
+
+Change the default keys you want to use.
+
+Micro editor as a help file here https://github.com/zyedidia/micro/blob/master/runtime/help/keybindings.md
+
+```json
+{
+"Alt-w": "snippets.Next",
+"Alt-a": "snippets.Accept",
+"Alt-s": "snippets.Insert",
+"Alt-d": "snippets.Cancel"
+}
+```
+
+## Raw key codes
+
+Micro has a command `raw`
+
+Micro will open a new tab and show the escape sequence for every event it receives from the terminal.
+
+This shows you what micro actually sees from the terminal and helps you see which bindings aren't possible and why.
+
+This is most useful for debugging keybindings.
+
+Example
+
+\x1b turns into \u001 then the same as the raw output.
+
+`"\u001bctrlback": "DeleteWordLeft"`
+
+Micro editor help file https://github.com/zyedidia/micro/blob/master/runtime/help/keybindings.md
diff --git a/.config/micro/plug/snippets/info.json b/.config/micro/plug/snippets/info.json
new file mode 100644
index 0000000..fd6450b
--- /dev/null
+++ b/.config/micro/plug/snippets/info.json
@@ -0,0 +1,10 @@
+{
+ "name": "snippets",
+ "description": "Snippets plugin",
+ "website": "",
+ "install": "",
+ "version": "1.0.0",
+ "require": [
+ "micro >= 2.0.0"
+ ]
+}
diff --git a/.config/micro/plug/snippets/repo.json b/.config/micro/plug/snippets/repo.json
new file mode 100644
index 0000000..8e66336
--- /dev/null
+++ b/.config/micro/plug/snippets/repo.json
@@ -0,0 +1,29 @@
+[{
+ "Name": "snippets",
+ "Description": "plugin to insert language specific code snippets.",
+ "Website": "https://github.com/tommyshem/micro-snippets-plugin",
+ "Tags": ["snippet"],
+ "Versions": [
+ {
+ "Version": "0.2.0",
+ "Url": "https://github.com/tommyshem/micro-snippets-plugin/archive/v0.2.0.zip",
+ "Require": {
+ "micro": ">=2.0.0-1"
+ }
+ },
+ {
+ "Version": "0.1.4",
+ "Url": "https://github.com/tommyshem/micro-snippets-plugin/archive/v0.1.4.zip",
+ "Require": {
+ "micro": ">=1.3.4"
+ }
+ },
+ {
+ "Version": "0.1.2",
+ "Url": "https://github.com/tommyshem/micro-snippets-plugin/archive/v0.1.2.zip",
+ "Require": {
+ "micro": ">1.0.3 <1.3.4"
+ }
+ }
+ ]
+}]
diff --git a/.config/micro/plug/snippets/snippets.lua b/.config/micro/plug/snippets/snippets.lua
new file mode 100644
index 0000000..d5d71b3
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets.lua
@@ -0,0 +1,586 @@
+VERSION = "0.2.0"
+
+local micro = import("micro")
+local buffer = import("micro/buffer")
+local config = import("micro/config")
+local util = import("micro/util")
+
+local debugflag = true
+local curFileType = ""
+local snippets = {}
+local currentSnippet = nil
+local RTSnippets = config.NewRTFiletype()
+
+local Location = {}
+Location.__index = Location
+
+local Snippet = {}
+Snippet.__index = Snippet
+
+-- Snippets
+-- --> Snippet
+-- --> Location
+
+function Location.new(idx, ph, snippet)
+ debug1("Location.new(idx, ph, snip) idx = " , idx)
+ --debugt("Location.new(idx, ph, snip) ph = ", ph)
+ --debugt("Location.new(idx, ph, snippet) snippet = ", snippet)
+
+ local self = setmetatable({}, Location)
+ self.idx = idx
+ self.ph = ph
+ self.snippet = snippet
+ return self
+end
+
+-- offset of the location relative to the snippet start
+function Location.offset(self)
+ debug("Location.offset(self)")
+ local add = 0
+ for i = 1, #self.snippet.locations do
+ local loc = self.snippet.locations[i]
+ debug1("loc = ",loc)
+ if loc == self then
+ break
+ end
+
+ local val = loc.ph.value
+ micro.Log("VAL", val)
+ if val then
+ add = add + val:len()
+ end
+ end
+ return self.idx+add
+end
+
+function Location.startPos(self)
+ --debugt("Location.startPos(self) = ",self)
+ local loc = self.snippet.startPos
+ return loc:Move(self:offset(), self.snippet.view.buf)
+end
+
+-- returns the length of the location (but at least 1)
+function Location.len(self)
+ debug("Location.len(self)")
+ local len = 0
+ if self.ph.value then
+ len = self.ph.value:len()
+ end
+ if len <= 0 then
+ len = 1
+ end
+ return len
+end
+
+function Location.endPos(self)
+ debug("Location.endPos(self)")
+ local start = self:startPos()
+ micro.Log("ENDPOS", self.ph.value)
+ return start:Move(self:len(), self.snippet.view.buf)
+end
+
+-- check if the given loc is within the location
+function Location.isWithin(self, loc)
+ debug("Location.isWithin(self, loc)")
+ return loc:GreaterEqual(self:startPos()) and loc:LessEqual(self:endPos())
+end
+
+function Location.focus(self)
+ debug("Location.focus(self)")
+ local view = self.snippet.view
+ local startP = self:startPos():Move(-1, view.Buf)
+ local endP = self:endPos():Move(-1, view.Buf)
+ micro.Log(startP, endP)
+
+ if view.Cursor:LessThan(startP) then
+ while view.Cursor:LessThan(startP) do
+ view.Cursor:Right()
+ end
+ elseif view.Cursor:GreaterEqual(endP) then
+ while view.Cursor:GreaterEqual(endP) do
+ view.Cursor:Left()
+ end
+ end
+
+ if self.ph.value:len() > 0 then
+ view.Cursor:SetSelectionStart(startP)
+ view.Cursor:SetSelectionEnd(endP)
+ else
+ view.Cursor:ResetSelection()
+ end
+end
+
+function Location.handleInput(self, ev)
+ debug("Location.handleInput(self, ev)")
+ if ev.EventType == 1 then
+ -- TextInput
+ if util.String(ev.Deltas[1].Text) == "\n" then
+ Accept()
+ return false
+ else
+ local offset = 1
+ local sp = self:startPos()
+ while sp:LessEqual(-ev.Deltas[1].Start) do
+ sp = sp:Move(1, self.snippet.view.Buf)
+ offset = offset + 1
+ end
+
+ self.snippet:remove()
+ local v = self.ph.value
+ if v == nil then
+ v = ""
+ end
+
+ self.ph.value = v:sub(0, offset-1) .. util.String(ev.Deltas[1].Text) .. v:sub(offset)
+ self.snippet:insert()
+ return true
+ end
+ elseif ev.EventType == -1 then
+ -- TextRemove
+ local offset = 1
+ local sp = self:startPos()
+ while sp:LessEqual(-ev.Deltas[1].Start) do
+ sp = sp:Move(1, self.snippet.view.Buf)
+ offset = offset + 1
+ end
+
+ if ev.Deltas[1].Start.Y ~= ev.Deltas[1].End.Y then
+ return false
+ end
+
+ self.snippet:remove()
+
+ local v = self.ph.value
+ if v == nil then
+ v = ""
+ end
+
+ local len = ev.Deltas[1].End.X - ev.Deltas[1].Start.X
+
+ self.ph.value = v:sub(0, offset-1) .. v:sub(offset+len)
+ self.snippet:insert()
+ return true
+ end
+
+ return false
+end
+
+-- new snippet
+function Snippet.new()
+ debug("Snippet.new()")
+ local self = setmetatable({}, Snippet)
+ self.code = ""
+ return self
+end
+
+-- add line of code to snippet
+function Snippet.AddCodeLine(self, line)
+ --debugt("Snippet.AddCodeLine(self,line) self = " , self)
+ debug1("Snippet.AddCodeLine(self, line) line = " , line)
+ if self.code ~= "" then
+ self.code = self.code .. "\n"
+ end
+ self.code = self.code .. line
+end
+
+function Snippet.Prepare(self)
+ debug("Snippet.Prepare(self)")
+ if not self.placeholders then
+ self.placeholders = {}
+ self.locations = {}
+ local count = 0
+ local pattern = "${(%d+):?([^}]*)}"
+ while true do
+ local num, value = self.code:match(pattern)
+ if not num then
+ break
+ end
+ count = count+1
+ num = tonumber(num)
+ local idx = self.code:find(pattern)
+ self.code = self.code:gsub(pattern, "", 1)
+ micro.Log("IDX", idx, self.code)
+
+ local placeHolders = self.placeholders[num]
+ if not placeHolders then
+ placeHolders = {num = num}
+ self.placeholders[#self.placeholders+1] = placeHolders
+ end
+ self.locations[#self.locations+1] = Location.new(idx, placeHolders, self)
+ debug1("location total = ",#self.locations)
+ if value then
+ placeHolders.value = value
+ end
+ end
+ end
+end
+
+function Snippet.clone(self)
+ debug("Snippet.clone(self)")
+ local result = Snippet.new()
+ result:AddCodeLine(self.code)
+ result:Prepare()
+ return result
+end
+
+function Snippet.str(self)
+ debug("Snippet.str(self)")
+ local res = self.code
+ for i = #self.locations, 1, -1 do
+ local loc = self.locations[i]
+ res = res:sub(0, loc.idx-1) .. loc.ph.value .. res:sub(loc.idx)
+ end
+ return res
+end
+
+function Snippet.findLocation(self, loc)
+ debug1("Snippet.findLocation(self, loc) loc = ",loc)
+ for i = 1, #self.locations do
+ if self.locations[i]:isWithin(loc) then
+ return self.locations[i]
+ end
+ end
+ return nil
+end
+
+function Snippet.remove(self)
+ debug("Snippet.remove(self)")
+ local endPos = self.startPos:Move(self:str():len(), self.view.Buf)
+ self.modText = true
+ self.view.Cursor:SetSelectionStart(self.startPos)
+ self.view.Cursor:SetSelectionEnd(endPos)
+ self.view.Cursor:DeleteSelection()
+ self.view.Cursor:ResetSelection()
+ self.modText = false
+end
+
+function Snippet.insert(self)
+ debug("Snippet.insert(self)")
+ self.modText = true
+ self.view.Buf:insert(self.startPos, self:str())
+ self.modText = false
+end
+
+function Snippet.focusNext(self)
+ debug("Snippet.focusNext(self)")
+ if self.focused == nil then
+ self.focused = 0
+ else
+ self.focused = (self.focused + 1) % #self.placeholders
+ end
+
+ local ph = self.placeholders[self.focused+1]
+
+ for i = 1, #self.locations do
+ if self.locations[i].ph == ph then
+ self.locations[i]:focus()
+ return
+ end
+ end
+end
+
+local function CursorWord(bp)
+ debug1("CursorWord(bp)",bp)
+ local c = bp.Cursor
+ local x = c.X-1 -- start one rune before the cursor
+ local result = ""
+ while x >= 0 do
+ local r = util.RuneStr(c:RuneUnder(x))
+ if (r == " ") then -- IsWordChar(r) then
+ break
+ else
+ result = r .. result
+ end
+ x = x-1
+ end
+
+ return result
+end
+
+local function ReadSnippets(filetype)
+ debug1("ReadSnippets(filetype)",filetype)
+ local snippets = {}
+ local allSnippetFiles = config.ListRuntimeFiles(RTSnippets)
+ local exists = false
+
+ for i = 1, #allSnippetFiles do
+ if allSnippetFiles[i] == filetype then
+ exists = true
+ break
+ end
+ end
+
+ if not exists then
+ micro.InfoBar():Error("No snippets file for \""..filetype.."\"")
+ return snippets
+ end
+
+ local snippetFile = config.ReadRuntimeFile(RTSnippets, filetype)
+
+ local curSnip = nil
+ local lineNo = 0
+ for line in string.gmatch(snippetFile, "(.-)\r?\n") do
+ lineNo = lineNo + 1
+ if string.match(line,"^#") then
+ -- comment
+ elseif line:match("^snippet") then
+ curSnip = Snippet.new()
+ for snipName in line:gmatch("%s(.+)") do -- %s space .+ one or more non-empty sequence
+ snippets[snipName] = curSnip
+ end
+ else
+ local codeLine = line:match("^\t(.*)$")
+ if codeLine ~= nil then
+ curSnip:AddCodeLine(codeLine)
+ elseif line ~= "" then
+ micro.InfoBar():Error("Invalid snippets file (Line #"..tostring(lineNo)..")")
+ end
+ end
+ end
+ debugt("ReadSnippets(filetype) snippets = ",snippets)
+ return snippets
+end
+
+-- Check filetype and load snippets
+-- Return true is snippets loaded for filetype
+-- Return false if no snippets loaded
+local function EnsureSnippets(bp)
+ debug("EnsureSnippets()")
+ local filetype = bp.Buf.Settings["filetype"]
+ if curFileType ~= filetype then
+ snippets = ReadSnippets(filetype)
+ curFileType = filetype
+ end
+ if next(snippets) == nil then
+ return false
+ end
+ return true
+end
+
+function onBeforeTextEvent(sb, ev)
+ debug1("onBeforeTextEvent(ev)",ev)
+ if currentSnippet ~= nil and currentSnippet.view.Buf.SharedBuffer == sb then
+ if currentSnippet.modText then
+ -- text event from the snippet. simply ignore it...
+ return true
+ end
+
+ local locStart = nil
+ local locEnd = nil
+
+ if ev.Deltas[1].Start ~= nil and currentSnippet ~= nil then
+ locStart = currentSnippet:findLocation(ev.Deltas[1].Start:Move(1, currentSnippet.view.Buf))
+ locEnd = currentSnippet:findLocation(ev.Deltas[1].End)
+ end
+ if locStart ~= nil and ((locStart == locEnd) or (ev.Deltas[1].End.Y==0 and ev.Deltas[1].End.X==0)) then
+ if locStart:handleInput(ev) then
+ currentSnippet.view.Cursor:Goto(-ev.C)
+ return false
+ end
+ end
+ Accept()
+ end
+
+ return true
+
+end
+
+-- Insert snippet if found.
+-- Pass in the name of the snippet to be inserted by command mode
+-- No name passed in then it will check the text left of the cursor
+function Insert(bp, args)
+ local snippetName = nil
+ if args ~= nil and #args > 0 then
+ snippetName = args[1]
+ end
+ debug1("Insert(snippetName)",snippetName)
+
+ local c = bp.Cursor
+ local buf = bp.Buf
+ local xy = buffer.Loc(c.X, c.Y)
+ -- check if a snippet name was passed in
+ local noArg = false
+ if not snippetName then
+ snippetName = CursorWord(bp)
+ noArg = true
+ end
+ -- check filetype and load snippets
+ local result = EnsureSnippets(bp)
+ -- if no snippets return early
+ if (result == false) then return end
+
+ -- curSn cloned into currentSnippet if snippet found
+ local curSn = snippets[snippetName]
+ if curSn then
+ currentSnippet = curSn:clone()
+ currentSnippet.view = bp
+ -- remove snippet keyword from micro buffer before inserting snippet
+ if noArg then
+ currentSnippet.startPos = xy:Move(-snippetName:len(), buf)
+
+ currentSnippet.modText = true
+
+ c:SetSelectionStart(currentSnippet.startPos)
+ c:SetSelectionEnd(xy)
+ c:DeleteSelection()
+ c:ResetSelection()
+
+ currentSnippet.modText = false
+ else
+ -- no need to remove snippet keyword from buffer as run from command mode
+ currentSnippet.startPos = xy
+ end
+ -- insert snippet to micro buffer
+ currentSnippet:insert()
+ micro.InfoBar():Message("Snippet Inserted \""..snippetName.."\"")
+
+ -- Placeholders
+ if #currentSnippet.placeholders == 0 then
+ local pos = currentSnippet.startPos:Move(currentSnippet:str():len(), bp.Buf)
+ while bp.Cursor:LessThan(pos) do
+ bp.Cursor:Right()
+ end
+ while bp.Cursor:GreaterThan(pos) do
+ bp.Cursor:Left()
+ end
+ else
+ currentSnippet:focusNext()
+ end
+ else
+ -- Snippet not found
+ micro.InfoBar():Message("Unknown snippet \""..snippetName.."\"")
+ end
+end
+
+function Next()
+ debug("Next()")
+ if currentSnippet then
+ currentSnippet:focusNext()
+ end
+end
+
+function Accept()
+ debug("Accept()")
+ currentSnippet = nil
+end
+
+function Cancel()
+ debug("Cancel()")
+ if currentSnippet then
+ currentSnippet:remove()
+ Accept()
+ end
+end
+
+
+local function StartsWith(String,Start)
+ debug1("StartsWith(String,Start) String ",String)
+ debug1("StartsWith(String,Start) start ",start)
+ String = String:upper()
+ Start = Start:upper()
+ return string.sub(String,1,string.len(Start))==Start
+end
+
+-- Used for auto complete in the command prompt
+function findSnippet(input)
+ debug1("findSnippet(input)",input)
+ local result = {}
+ -- TODO: pass bp
+ EnsureSnippets()
+
+ for name,v in pairs(snippets) do
+ if StartsWith(name, input) then
+ table.insert(result, name)
+ end
+ end
+ return result
+end
+
+-- Debug functions below
+-- debug1 is for logging functionName and 1 argument passed
+function debug1(functionName, argument)
+ if debugflag == false then return end
+ if argument == nil then
+ micro.Log("snippets-plugin -> function " .. functionName .. " = nil")
+ elseif argument == "" then
+ micro.Log("snippets-plugin -> function " .. functionName .. " = empty string")
+ else micro.Log("snippets-plugin -> function " .. functionName .. " = " .. tostring(argument))
+ end
+end
+
+-- debug is for logging functionName only
+function debug(functionName)
+ if debugflag == false then return end
+ micro.Log("snippets-plugin -> function " .. functionName)
+end
+
+-- debug is for logging functionName and table
+function debugt(functionName,tablepassed)
+ if debugflag == false then return end
+ micro.Log("snippets-plugin -> function " .. functionName )
+ tprint(tablepassed)
+-- if (tablepassed == nil) then return end
+-- for key,value in pairs(tablepassed) do
+-- micro.Log("key - " .. tostring(key) .. "value = " .. tostring(value[1]) )
+-- end
+end
+
+-- dump table
+function dump(o)
+ if type(o) == 'table' then
+ local s = '{ '
+ for k,v in pairs(o) do
+ if type(k) ~= 'number' then k = '"'..k..'"' end
+ s = s .. '['..k..'] = ' .. dump(v) .. ','
+ end
+ return s .. '} '
+ else
+ return tostring(o)
+ end
+ end
+
+ function tprint (tbl, indent)
+ if not indent then indent = 0 end
+ for k, v in pairs(tbl) do
+ formatting = string.rep(" ", indent) .. k .. ": "
+ if type(v) == "table" then
+ micro.Log(formatting .. "Table ->")
+ tprint(v, indent+1)
+ elseif type(v) == nil then
+ micro.Log(formatting .. " nil")
+ else
+ micro.Log(formatting .. tostring(v))
+ end
+ end
+ end
+
+ function checkTableisEmpty(myTable)
+ if next(myTable) == nil then
+ -- myTable is empty
+ end
+end
+
+function tablePrint(tbl)
+ for index = 1, #tbl do
+ micro.Log(tostring(index) .. " = " .. tostring(tbl[index]))
+ end
+end
+
+function init()
+ -- Insert a snippet
+ config.MakeCommand("snippetinsert", Insert, config.NoComplete)
+ -- Mark next placeholder
+ config.MakeCommand("snippetnext", Next, config.NoComplete)
+ -- Cancel current snippet (removes the text)
+ config.MakeCommand("snippetcancel", Cancel, config.NoComplete)
+ -- Acceptes snipped editing
+ config.MakeCommand("snippetaccept", Accept, config.NoComplete)
+
+ config.AddRuntimeFile("snippets", config.RTHelp, "help/snippets.md")
+ config.AddRuntimeFilesFromDirectory("snippets", RTSnippets, "snippets", "*.snippets")
+
+ config.TryBindKey("Alt-w", "lua:snippets.Next", false)
+ config.TryBindKey("Alt-a", "lua:snippets.Accept", false)
+ config.TryBindKey("Alt-s", "lua:snippets.Insert", false)
+ config.TryBindKey("Alt-d", "lua:snippets.Cancel", false)
+end
diff --git a/.config/micro/plug/snippets/snippets/apacheconf.snippets b/.config/micro/plug/snippets/snippets/apacheconf.snippets
new file mode 100644
index 0000000..db3256e
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/apacheconf.snippets
@@ -0,0 +1,35 @@
+# Snippets for code blocks used oftenly in Apache files.
+# <Directory>
+snippet dir
+ <Directory ${1:/}>
+ DirectoryIndex ${0:index.html}
+ Order Deny,Allow
+ Deny from All
+ </Directory>
+# <FilesMatch>
+snippet filesmatch
+ <FilesMatch "${1:regex}">
+ ${0}
+ </FilesMatch>
+# <IfModule>
+snippet ifmodule
+ <IfModule ${1:mod_example.c}>
+ ${0}
+ </IfModule>
+# <LimitExcept>
+snippet limitexcept
+ <LimitExcept ${1:POST GET}>
+ ${0}
+ </LimitExcept>
+# <Proxy>
+snippet proxy
+ <Proxy ${1:*}>
+ ${0}
+ </Proxy>
+# <VirtualHost>
+snippet virtualhost
+ <VirtualHost ${1:*}:${2:80}>
+ ServerAdmin ${3:webmaster@example.com}
+ DocumentRoot ${4:/www/example.com}
+ ServerName ${0:www.example.com}
+ </VirtualHost>
diff --git a/.config/micro/plug/snippets/snippets/awk.snippets b/.config/micro/plug/snippets/snippets/awk.snippets
new file mode 100644
index 0000000..32e56f2
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/awk.snippets
@@ -0,0 +1,102 @@
+# cannot use /usr/bin/env because it does not support parameters (as -f)
+snippet #! #!/usr/bin/awk -f
+ #!/usr/bin/awk -f
+
+# @include is a gawk extension
+snippet inc @include
+ @include "${1}"${0}
+
+# @load is a gawk extension
+snippet loa @load
+ @load "${1}"${0}
+
+snippet beg BEGIN { ... }
+ BEGIN {
+ ${0}
+ }
+
+# BEGINFILE is a gawk extension
+snippet begf BEGINFILE { ... }
+ BEGINFILE {
+ ${0}
+ }
+
+snippet end END { ... }
+ END {
+ ${0}
+ }
+
+# ENDFILE is a gawk extension
+snippet endf ENDFILE { ... }
+ ENDFILE {
+ ${0}
+ }
+
+snippet pri print
+ print ${1:"${2}"}${0}
+
+snippet printf printf
+ printf("${1:%s}\n", ${2})${0}
+
+snippet ign IGNORECASE
+ IGNORECASE = ${1:1}
+
+snippet if if {...}
+ if (${1}) {
+ ${0}
+ }
+
+snippet ife if ... else ...
+ if (${1}) {
+ ${2}
+ } else {
+ ${0}
+ }
+
+snippet eif else if ...
+ else if (${1}) {
+ ${0}
+ }
+
+snippet el else {...}
+ else {
+ ${0}
+ }
+
+snippet wh while
+ while (${1}) {
+ ${2}
+ }
+
+snippet do do ... while
+ do {
+ ${0}
+ } while (${1})
+
+snippet for for
+ for (${2:i} = 0; i < ${1:n}; ${3:++i}) {
+ ${0}
+ }
+
+snippet fore for each
+ for (${1:i} in ${2:array}) {
+ ${0}
+ }
+
+# the switch is a gawk extension
+snippet sw switch
+ switch (${1}) {
+ case ${2}:
+ ${3}
+ break
+ default:
+ ${0}
+ break
+ }
+
+# the switch is a gawk extension
+snippet case case
+ case ${1}:
+ ${0}
+ break
+
diff --git a/.config/micro/plug/snippets/snippets/c#.snippets b/.config/micro/plug/snippets/snippets/c#.snippets
new file mode 100644
index 0000000..40e9c8f
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/c#.snippets
@@ -0,0 +1,470 @@
+# cs.snippets
+# ===========
+#
+# Standard C-Sharp snippets for snipmate.
+#
+# Largely ported over from Visual Studio 2010 snippets plus
+# a few snippets from Resharper plus a few widely known snippets.
+#
+# Most snippets on elements (i.e. classes, properties)
+# follow suffix conventions. The order of suffixes to a snippet
+# is fixed.
+#
+# Snippet Suffix Order
+# --------------------
+# 1. Access Modifiers
+# 2. Class Modifiers
+#
+# Access Modifier Suffix Table
+# ----------------------------
+# + = public
+# & = internal
+# | = protected
+# - = private
+#
+# Example: `cls&` expands to `internal class $1`.
+# Access modifiers might be doubled to indicate
+# different modifiers for get/set on properties.
+# Example: `pb+-` expands to `public bool $1 { get; private set; }`
+#
+# Class Modifier Table
+# --------------------
+# ^ = static
+# % = abstract
+#
+# Example: `cls|%` expands to `protected abstract class $1`
+#
+# On method and property snippets, you can directly set
+# one of the common types int, string and bool, if desired,
+# just by appending the type modifier.
+#
+# Type Modifier Table
+# -------------------
+# i = integer
+# s = string
+# b = bool
+#
+# Example: `pi+&` expands to `public int $1 { get; internal set; }`
+#
+# I'll most propably add more stuff in here like
+# * List/Array constructio
+# * Mostly used generics
+# * Linq
+# * Funcs, Actions, Predicates
+# * Lambda
+# * Events
+#
+# Feedback is welcome!
+#
+# Main
+snippet sim
+ ${1:public }static int Main(string[] args) {
+ ${0}
+ return 0;
+ }
+snippet simc
+ public class Application {
+ ${1:public }static int Main(string[] args) {
+ ${0}
+ return 0;
+ }
+ }
+snippet svm
+ ${1:public }static void Main(string[] args) {
+ ${0}
+ }
+# if condition
+snippet if
+ if (${1:true}) {
+ ${0}
+ }
+snippet el
+ else {
+ ${0}
+ }
+snippet ifs
+ if (${1})
+ ${0}
+# ternary conditional
+snippet t
+ ${1} ? ${2} : ${0}
+snippet ?
+ ${1} ? ${2} : ${0}
+# do while loop
+snippet do
+ do {
+ ${0}
+ } while (${1:true});
+# while loop
+snippet wh
+ while (${1:true}) {
+ ${0}
+ }
+# for loop
+snippet for
+ for (int ${1:i} = 0; $1 < ${2:count}; $1${3:++}) {
+ ${0}
+ }
+snippet forr
+ for (int ${1:i} = ${2:length}; $1 >= 0; $1--) {
+ ${0}
+ }
+# foreach
+snippet fore
+ foreach (${1:var} ${2:entry} in ${3}) {
+ ${0}
+ }
+snippet foreach
+ foreach (${1:var} ${2:entry} in ${3}) {
+ ${0}
+ }
+snippet each
+ foreach (${1:var} ${2:entry} in ${3}) {
+ ${0}
+ }
+# interfaces
+snippet interface
+ public interface ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+snippet if+
+ public interface ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+# class bodies
+snippet class
+ public class ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+snippet cls
+ ${2:public} class ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+snippet cls+
+ public class ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+snippet cls+^
+ public static class ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+snippet cls&
+ internal class ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+snippet cls&^
+ internal static class ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+snippet cls|
+ protected class ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+snippet cls|%
+ protected abstract class ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+# constructor
+snippet ctor
+ public ${1:`vim_snippets#Filename()`}() {
+ ${0}
+ }
+# properties - auto properties by default.
+# default type is int with layout get / set.
+snippet prop
+ ${1:public} ${2:int} ${3} { get; set; }
+snippet p
+ ${1:public} ${2:int} ${3} { get; set; }
+snippet p+
+ public ${1:int} ${2} { get; set; }
+snippet p+&
+ public ${1:int} ${2} { get; internal set; }
+snippet p+|
+ public ${1:int} ${2} { get; protected set; }
+snippet p+-
+ public ${1:int} ${2} { get; private set; }
+snippet p&
+ internal ${1:int} ${2} { get; set; }
+snippet p&|
+ internal ${1:int} ${2} { get; protected set; }
+snippet p&-
+ internal ${1:int} ${2} { get; private set; }
+snippet p|
+ protected ${1:int} ${2} { get; set; }
+snippet p|-
+ protected ${1:int} ${2} { get; private set; }
+snippet p-
+ private ${1:int} ${2} { get; set; }
+# property - bool
+snippet pi
+ ${1:public} int ${2} { get; set; }
+snippet pi+
+ public int ${1} { get; set; }
+snippet pi+&
+ public int ${1} { get; internal set; }
+snippet pi+|
+ public int ${1} { get; protected set; }
+snippet pi+-
+ public int ${1} { get; private set; }
+snippet pi&
+ internal int ${1} { get; set; }
+snippet pi&|
+ internal int ${1} { get; protected set; }
+snippet pi&-
+ internal int ${1} { get; private set; }
+snippet pi|
+ protected int ${1} { get; set; }
+snippet pi|-
+ protected int ${1} { get; private set; }
+snippet pi-
+ private int ${1} { get; set; }
+# property - bool
+snippet pb
+ ${1:public} bool ${2} { get; set; }
+snippet pb+
+ public bool ${1} { get; set; }
+snippet pb+&
+ public bool ${1} { get; internal set; }
+snippet pb+|
+ public bool ${1} { get; protected set; }
+snippet pb+-
+ public bool ${1} { get; private set; }
+snippet pb&
+ internal bool ${1} { get; set; }
+snippet pb&|
+ internal bool ${1} { get; protected set; }
+snippet pb&-
+ internal bool ${1} { get; private set; }
+snippet pb|
+ protected bool ${1} { get; set; }
+snippet pb|-
+ protected bool ${1} { get; private set; }
+snippet pb-
+ private bool ${1} { get; set; }
+# property - string
+snippet ps
+ ${1:public} string ${2} { get; set; }
+snippet ps+
+ public string ${1} { get; set; }
+snippet ps+&
+ public string ${1} { get; internal set; }
+snippet ps+|
+ public string ${1} { get; protected set; }
+snippet ps+-
+ public string ${1} { get; private set; }
+snippet ps&
+ internal string ${1} { get; set; }
+snippet ps&|
+ internal string ${1} { get; protected set; }
+snippet ps&-
+ internal string ${1} { get; private set; }
+snippet ps|
+ protected string ${1} { get; set; }
+snippet ps|-
+ protected string ${1} { get; private set; }
+snippet ps-
+ private string ${1} { get; set; }
+# members - void
+snippet m
+ ${1:public} ${2:void} ${3}(${4}) {
+ ${0}
+ }
+snippet m+
+ public ${1:void} ${2}(${3}) {
+ ${0}
+ }
+snippet m&
+ internal ${1:void} ${2}(${3}) {
+ ${0}
+ }
+snippet m|
+ protected ${1:void} ${2}(${3}) {
+ ${0}
+ }
+snippet m-
+ private ${1:void} ${2}(${3}) {
+ ${0}
+ }
+# members - int
+snippet mi
+ ${1:public} int ${2}(${3}) {
+ ${0:return 0;}
+ }
+snippet mi+
+ public int ${1}(${2}) {
+ ${0:return 0;}
+ }
+snippet mi&
+ internal int ${1}(${2}) {
+ ${0:return 0;}
+ }
+snippet mi|
+ protected int ${1}(${2}) {
+ ${0:return 0;}
+ }
+snippet mi-
+ private int ${1}(${2}) {
+ ${0:return 0;}
+ }
+# members - bool
+snippet mb
+ ${1:public} bool ${2}(${3}) {
+ ${0:return false;}
+ }
+snippet mb+
+ public bool ${1}(${2}) {
+ ${0:return false;}
+ }
+snippet mb&
+ internal bool ${1}(${2}) {
+ ${0:return false;}
+ }
+snippet mb|
+ protected bool ${1}(${2}) {
+ ${0:return false;}
+ }
+snippet mb-
+ private bool ${1}(${2}) {
+ ${0:return false;}
+ }
+# members - string
+snippet ms
+ ${1:public} string ${2}(${3}) {
+ ${0:return "";}
+ }
+snippet ms+
+ public string ${1}(${2}) {
+ ${0:return "";}
+ }
+snippet ms&
+ internal string ${1}(${2}) {
+ ${0:return "";}
+ }
+snippet ms|
+ protected string ${1:}(${2:}) {
+ ${0:return "";}
+ }
+snippet ms-
+ private string ${1}(${2}) {
+ ${0:return "";}
+ }
+# structure
+snippet struct
+ public struct ${1:`vim_snippets#Filename()`} {
+ ${0}
+ }
+# enumeration
+snippet enum
+ enum ${1} {
+ ${0}
+ }
+
+snippet enum+
+ public enum ${1} {
+ ${0}
+ }
+# preprocessor directives
+snippet #if
+ #if
+ ${0}
+ #endif
+# inline xml documentation
+snippet ///
+ /// <summary>
+ /// ${0}
+ /// </summary>
+snippet <p
+ <param name="${1}">${2:$1}</param>
+snippet <ex
+ <exception cref="${1:System.Exception}">${2}</exception>
+snippet <r
+ <returns>${1}</returns>{
+snippet <s
+ <see cref="${1}"/>
+snippet <rem
+ <remarks>${1}</remarks>
+snippet <c
+ <code>${1}</code>
+
+snippet cw
+ Console.WriteLine(${1});
+
+# equals override
+snippet eq
+ public override bool Equals(object obj) {
+ if (obj == null || GetType() != obj.GetType()) {
+ return false;
+ }
+ ${0:throw new NotImplementedException();}
+ return base.Equals(obj);
+ }
+# exception
+snippet exc
+ public class ${1:MyException} : ${2:Exception} {
+ public $1() { }
+ public $1(string message) : base(message) { }
+ public $1(string message, Exception inner) : base(message, inner) { }
+ protected $1(
+ System.Runtime.Serialization.SerializationInfo info,
+ System.Runtime.Serialization.StreamingContext context)
+ : base(info, context) { }
+ }
+# indexer
+snippet index
+ public ${1:object} this[${2:int} index] {
+ get { ${0} }
+ set { ${0} }
+ }
+# eventhandler
+snippet inv
+ EventHandler temp = ${1:MyEvent};
+ if (${2:temp} != null) {
+ $2();
+ }
+# lock
+snippet lock
+ lock (${1:this}) {
+ ${0}
+ }
+# namespace
+snippet namespace
+ namespace ${1:MyNamespace} {
+ ${0}
+ }
+# property
+snippet prop
+ public ${1:int} ${2:MyProperty} { get; set; }
+snippet propf
+ private ${1:int} ${2:myVar};
+ public $1 ${3:MyProperty} {
+ get { return $2; }
+ set { $2 = value; }
+ }
+snippet propg
+ public ${1:int} ${2:MyProperty} { get; private set; }
+# switch
+snippet switch
+ switch (${1:switch_on}) {
+ ${0}
+ default:
+ }
+# try
+snippet try
+ try {
+ ${0}
+ }
+ catch (${1:System.Exception}) {
+ throw;
+ }
+snippet tryf
+ try {
+ ${0}
+ }
+ finally {
+ ${1}
+ }
+# using
+snippet usi
+ using(${1:resource}) {
+ ${0}
+ }
diff --git a/.config/micro/plug/snippets/snippets/c.snippets b/.config/micro/plug/snippets/snippets/c.snippets
new file mode 100644
index 0000000..f4745c2
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/c.snippets
@@ -0,0 +1,228 @@
+## Main
+# main
+snippet main
+ int main(int argc, const char *argv[])
+ {
+ ${0}
+ return 0;
+ }
+# main(void)
+snippet mainn
+ int main(void)
+ {
+ ${0}
+ return 0;
+ }
+##
+## Preprocessor
+# #include <...>
+snippet inc
+ #include <${1:stdio}.h>
+# #include "..."
+snippet Inc
+ #include "${1:`vim_snippets#Filename("$1.h")`}"
+# ifndef...define...endif
+snippet ndef
+ #ifndef $1
+ #define ${1:SYMBOL} ${2:value}
+ #endif /* ifndef $1 */
+# define
+snippet def
+ #define
+# ifdef...endif
+snippet ifdef
+ #ifdef ${1:FOO}
+ ${2:#define }
+ #endif
+# if
+snippet #if
+ #if ${1:FOO}
+ ${0}
+ #endif
+# header include guard
+snippet once
+ #ifndef ${1:`toupper(vim_snippets#Filename('$1_H', 'UNTITLED_H'))`}
+
+ #define $1
+
+ ${0}
+
+ #endif /* end of include guard: $1 */
+##
+## Control Statements
+# if
+snippet if
+ if (${1:true}) {
+ ${0}
+ }
+snippet ife
+ if (${1:true}) {
+ ${2}
+ } else {
+ ${0}
+ }
+# else
+snippet el
+ else {
+ ${0}
+ }
+# else if
+snippet elif
+ else if (${1:true}) {
+ ${0}
+ }
+# ifi
+snippet ifi
+ if (${1:true}) ${0};
+# ternary
+snippet t
+ ${1:/* condition */} ? ${2:a} : ${3:b}
+# switch
+snippet switch
+ switch (${1:/* variable */}) {
+ case ${2:/* variable case */}:
+ ${3}
+ ${4:break;}${5}
+ default:
+ ${6}
+ }
+# switch without default
+snippet switchndef
+ switch (${1:/* variable */}) {
+ case ${2:/* variable case */}:
+ ${3}
+ ${4:break;}${5}
+ }
+# case
+snippet case
+ case ${1:/* variable case */}:
+ ${2}
+ ${3:break;}
+snippet ret
+ return ${0};
+##
+## Loops
+# for
+snippet for
+ for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {
+ ${4}
+ }
+# for (custom)
+snippet forr
+ for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {
+ ${5}
+ }
+# while
+snippet wh
+ while (${1:/* condition */}) {
+ ${2}
+ }
+# do... while
+snippet do
+ do {
+ ${2}
+ } while (${1:/* condition */});
+##
+## Functions
+# function definition
+snippet fun
+ ${1:void} ${2:function_name}(${3})
+ {
+ ${4}
+ }
+# function declaration
+snippet fund
+ ${1:void} ${2:function_name}(${3});
+##
+## Types
+# typedef
+snippet td
+ typedef ${1:int} ${2:MyCustomType};
+# struct
+snippet st
+ struct ${1:`vim_snippets#Filename('$1_t', 'name')`} {
+ ${2:/* data */}
+ }${3: /* optional variable list */};
+# typedef struct
+snippet tds
+ typedef struct ${2:_$1 }{
+ ${3:/* data */}
+ } ${1:`vim_snippets#Filename('$1_t', 'name')`};
+
+snippet enum
+ enum ${1:name} { ${0} };
+# typedef enum
+snippet tde
+ typedef enum {
+ ${1:/* data */}
+ } ${2:foo};
+##
+## Input/Output
+# printf
+snippet pr
+ printf("${1:%s}\n"${2});
+# fprintf (again, this isn't as nice as TextMate's version, but it works)
+snippet fpr
+ fprintf(${1:stderr}, "${2:%s}\n"${3});
+# getopt
+snippet getopt
+ int choice;
+ while (1)
+ {
+ static struct option long_options[] =
+ {
+ /* Use flags like so:
+ {"verbose", no_argument, &verbose_flag, 'V'}*/
+ /* Argument styles: no_argument, required_argument, optional_argument */
+ {"version", no_argument, 0, 'v'},
+ {"help", no_argument, 0, 'h'},
+ ${1}
+ {0,0,0,0}
+ };
+
+ int option_index = 0;
+
+ /* Argument parameters:
+ no_argument: " "
+ required_argument: ":"
+ optional_argument: "::" */
+
+ choice = getopt_long( argc, argv, "vh",
+ long_options, &option_index);
+
+ if (choice == -1)
+ break;
+
+ switch( choice )
+ {
+ case 'v':
+ ${2}
+ break;
+
+ case 'h':
+ ${3}
+ break;
+
+ case '?':
+ /* getopt_long will have already printed an error */
+ break;
+
+ default:
+ /* Not sure how to get here... */
+ return EXIT_FAILURE;
+ }
+ }
+
+ /* Deal with non-option arguments here */
+ if ( optind < argc )
+ {
+ while ( optind < argc )
+ {
+ ${0}
+ }
+ }
+##
+## Miscellaneous
+# This is kind of convenient
+snippet .
+ [${1}]
diff --git a/.config/micro/plug/snippets/snippets/cmake.snippets b/.config/micro/plug/snippets/snippets/cmake.snippets
new file mode 100644
index 0000000..3a0b920
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/cmake.snippets
@@ -0,0 +1,83 @@
+snippet init
+ cmake_minimum_required(version ${1:2.8.2})
+ project(${2:ProjectName})
+
+ find_package(${3:library})
+
+ include_directories(${$3_INCLUDE_DIRS})
+
+ add_subdirectory(${0:src})
+
+ add_executable($2)
+
+ target_link_libraries($2 ${$3_LIBRARIES})
+
+snippet proj
+ project(${0:Name})
+
+snippet min
+ cmake_minimum_required(version ${0:2.8.2})
+
+snippet include
+ include_directories(${${0:include_dir}})
+
+snippet find
+ find_package(${1:library} ${0:REQUIRED})
+
+snippet glob
+ file(glob ${1:srcs} *.${0:cpp})
+
+snippet subdir
+ add_subdirectory(${0:src})
+
+snippet lib
+ add_library(${1:lib} ${${0:srcs}})
+
+snippet link
+ target_link_libraries(${1:bin} ${0:somelib})
+
+snippet bin
+ add_executable(${1:bin})
+
+snippet set
+ set(${1:var} ${0:val})
+
+snippet dep
+ add_dependencies(${1:target}
+ ${0:dep}
+ )
+
+snippet Ext_url
+ include(ExternalProject)
+ ExternalProject_Add(${1:googletest}
+ URL ${2:http://googletest.googlecode.com/files/gtest-1.7.0.zip}
+ URL_HASH SHA1=${3:f85f6d2481e2c6c4a18539e391aa4ea8ab0394af}
+ SOURCE_DIR "${4:${CMAKE_BINARY_DIR}/gtest-src}"
+ BINARY_DIR "${0:${CMAKE_BINARY_DIR}/gtest-build}"
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ TEST_COMMAND ""
+ )
+
+snippet Ext_git
+ include(ExternalProject)
+ ExternalProject_Add(${1:googletest}
+ GIT_REPOSITORY ${2:https://github.com/google/googletest.git}
+ GIT_TAG ${3:master}
+ SOURCE_DIR "${4:${CMAKE_BINARY_DIR}/googletest-src}"
+ BINARY_DIR "${0:${CMAKE_BINARY_DIR}/googletest-build}"
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ TEST_COMMAND ""
+ )
+
+snippet props
+ set_target_properties(${1:target}
+ ${2:properties} ${3:compile_flags}
+ ${0:"-O3 -Wall -pedantic"}
+ )
+
+snippet test
+ add_test(${1:ATestName} ${0:testCommand --options})
diff --git a/.config/micro/plug/snippets/snippets/css.snippets b/.config/micro/plug/snippets/snippets/css.snippets
new file mode 100644
index 0000000..c4a74de
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/css.snippets
@@ -0,0 +1,987 @@
+snippet .
+ ${1} {
+ ${0}
+ }
+snippet !
+ !important
+snippet bdi:m+
+ -moz-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${0:stretch};
+snippet bdi:m
+ -moz-border-image: ${0};
+snippet bdrz:m
+ -moz-border-radius: ${0};
+snippet bxsh:m+
+ -moz-box-shadow: ${1:0} ${2:0} ${3:0} #${0:000};
+snippet bxsh:m
+ -moz-box-shadow: ${0};
+snippet bdi:w+
+ -webkit-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${0:stretch};
+snippet bdi:w
+ -webkit-border-image: ${0};
+snippet bdrz:w
+ -webkit-border-radius: ${0};
+snippet bxsh:w+
+ -webkit-box-shadow: ${1:0} ${2:0} ${3:0} #${0:000};
+snippet bxsh:w
+ -webkit-box-shadow: ${0};
+snippet @f
+ @font-face {
+ font-family: ${1};
+ src: url(${0});
+ }
+snippet @i
+ @import url(${0});
+snippet @m
+ @media ${1:print} {
+ ${0}
+ }
+snippet bg+
+ background: #${1:FFF} url(${2}) ${3:0} ${4:0} ${0:no-repeat};
+snippet bga
+ background-attachment: ${0};
+snippet bga:f
+ background-attachment: fixed;
+snippet bga:s
+ background-attachment: scroll;
+snippet bgbk
+ background-break: ${0};
+snippet bgbk:bb
+ background-break: bounding-box;
+snippet bgbk:c
+ background-break: continuous;
+snippet bgbk:eb
+ background-break: each-box;
+snippet bgcp
+ background-clip: ${0};
+snippet bgcp:bb
+ background-clip: border-box;
+snippet bgcp:cb
+ background-clip: content-box;
+snippet bgcp:nc
+ background-clip: no-clip;
+snippet bgcp:pb
+ background-clip: padding-box;
+snippet bgc
+ background-color: #${0:FFF};
+snippet bgc:t
+ background-color: transparent;
+snippet bgi
+ background-image: url(${0});
+snippet bgi:n
+ background-image: none;
+snippet bgo
+ background-origin: ${0};
+snippet bgo:bb
+ background-origin: border-box;
+snippet bgo:cb
+ background-origin: content-box;
+snippet bgo:pb
+ background-origin: padding-box;
+snippet bgpx
+ background-position-x: ${0};
+snippet bgpy
+ background-position-y: ${0};
+snippet bgp
+ background-position: ${1:0} ${0:0};
+snippet bgr
+ background-repeat: ${0};
+snippet bgr:n
+ background-repeat: no-repeat;
+snippet bgr:x
+ background-repeat: repeat-x;
+snippet bgr:y
+ background-repeat: repeat-y;
+snippet bgr:r
+ background-repeat: repeat;
+snippet bgz
+ background-size: ${0};
+snippet bgz:a
+ background-size: auto;
+snippet bgz:ct
+ background-size: contain;
+snippet bgz:cv
+ background-size: cover;
+snippet bg
+ background: ${0};
+snippet bg:ie
+ filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1}',sizingMethod='${0:crop}');
+snippet bg:n
+ background: none;
+snippet bd+
+ border: ${1:1px} ${2:solid} #${0:000};
+snippet bdb+
+ border-bottom: ${1:1px} ${2:solid} #${0:000};
+snippet bdbc
+ border-bottom-color: #${0:000};
+snippet bdbi
+ border-bottom-image: url(${0});
+snippet bdbi:n
+ border-bottom-image: none;
+snippet bdbli
+ border-bottom-left-image: url(${0});
+snippet bdbli:c
+ border-bottom-left-image: continue;
+snippet bdbli:n
+ border-bottom-left-image: none;
+snippet bdblrz
+ border-bottom-left-radius: ${0};
+snippet bdbri
+ border-bottom-right-image: url(${0});
+snippet bdbri:c
+ border-bottom-right-image: continue;
+snippet bdbri:n
+ border-bottom-right-image: none;
+snippet bdbrrz
+ border-bottom-right-radius: ${0};
+snippet bdbs
+ border-bottom-style: ${0};
+snippet bdbs:n
+ border-bottom-style: none;
+snippet bdbw
+ border-bottom-width: ${0};
+snippet bdb
+ border-bottom: ${0};
+snippet bdb:n
+ border-bottom: none;
+snippet bdbk
+ border-break: ${0};
+snippet bdbk:c
+ border-break: close;
+snippet bdcl
+ border-collapse: ${0};
+snippet bdcl:c
+ border-collapse: collapse;
+snippet bdcl:s
+ border-collapse: separate;
+snippet bdc
+ border-color: #${0:000};
+snippet bdci
+ border-corner-image: url(${0});
+snippet bdci:c
+ border-corner-image: continue;
+snippet bdci:n
+ border-corner-image: none;
+snippet bdf
+ border-fit: ${0};
+snippet bdf:c
+ border-fit: clip;
+snippet bdf:of
+ border-fit: overwrite;
+snippet bdf:ow
+ border-fit: overwrite;
+snippet bdf:r
+ border-fit: repeat;
+snippet bdf:sc
+ border-fit: scale;
+snippet bdf:sp
+ border-fit: space;
+snippet bdf:st
+ border-fit: stretch;
+snippet bdi
+ border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${0:stretch};
+snippet bdi:n
+ border-image: none;
+snippet bdl+
+ border-left: ${1:1px} ${2:solid} #${0:000};
+snippet bdlc
+ border-left-color: #${0:000};
+snippet bdli
+ border-left-image: url(${0});
+snippet bdli:n
+ border-left-image: none;
+snippet bdls
+ border-left-style: ${0};
+snippet bdls:n
+ border-left-style: none;
+snippet bdlw
+ border-left-width: ${0};
+snippet bdl
+ border-left: ${0};
+snippet bdl:n
+ border-left: none;
+snippet bdlt
+ border-length: ${0};
+snippet bdlt:a
+ border-length: auto;
+snippet bdrz
+ border-radius: ${0};
+snippet bdr+
+ border-right: ${1:1px} ${2:solid} #${0:000};
+snippet bdrc
+ border-right-color: #${0:000};
+snippet bdri
+ border-right-image: url(${0});
+snippet bdri:n
+ border-right-image: none;
+snippet bdrs
+ border-right-style: ${0};
+snippet bdrs:n
+ border-right-style: none;
+snippet bdrw
+ border-right-width: ${0};
+snippet bdr
+ border-right: ${0};
+snippet bdr:n
+ border-right: none;
+snippet bdsp
+ border-spacing: ${0};
+snippet bds
+ border-style: ${0};
+snippet bds:ds
+ border-style: dashed;
+snippet bds:dtds
+ border-style: dot-dash;
+snippet bds:dtdtds
+ border-style: dot-dot-dash;
+snippet bds:dt
+ border-style: dotted;
+snippet bds:db
+ border-style: double;
+snippet bds:g
+ border-style: groove;
+snippet bds:h
+ border-style: hidden;
+snippet bds:i
+ border-style: inset;
+snippet bds:n
+ border-style: none;
+snippet bds:o
+ border-style: outset;
+snippet bds:r
+ border-style: ridge;
+snippet bds:s
+ border-style: solid;
+snippet bds:w
+ border-style: wave;
+snippet bdt+
+ border-top: ${1:1px} ${2:solid} #${0:000};
+snippet bdtc
+ border-top-color: #${0:000};
+snippet bdti
+ border-top-image: url(${0});
+snippet bdti:n
+ border-top-image: none;
+snippet bdtli
+ border-top-left-image: url(${0});
+snippet bdtli:c
+ border-corner-image: continue;
+snippet bdtli:n
+ border-corner-image: none;
+snippet bdtlrz
+ border-top-left-radius: ${0};
+snippet bdtri
+ border-top-right-image: url(${0});
+snippet bdtri:c
+ border-top-right-image: continue;
+snippet bdtri:n
+ border-top-right-image: none;
+snippet bdtrrz
+ border-top-right-radius: ${0};
+snippet bdts
+ border-top-style: ${0};
+snippet bdts:n
+ border-top-style: none;
+snippet bdtw
+ border-top-width: ${0};
+snippet bdt
+ border-top: ${0};
+snippet bdt:n
+ border-top: none;
+snippet bdw
+ border-width: ${0};
+snippet bd
+ border: ${0};
+snippet bd:n
+ border: none;
+snippet b
+ bottom: ${0};
+snippet b:a
+ bottom: auto;
+snippet bxsh+
+ box-shadow: ${1:0} ${2:0} ${3:0} #${0:000};
+snippet bxsh
+ box-shadow: ${0};
+snippet bxsh:n
+ box-shadow: none;
+snippet bxz
+ box-sizing: ${0};
+snippet bxz:bb
+ box-sizing: border-box;
+snippet bxz:cb
+ box-sizing: content-box;
+snippet cps
+ caption-side: ${0};
+snippet cps:b
+ caption-side: bottom;
+snippet cps:t
+ caption-side: top;
+snippet cl
+ clear: ${0};
+snippet cl:b
+ clear: both;
+snippet cl:l
+ clear: left;
+snippet cl:n
+ clear: none;
+snippet cl:r
+ clear: right;
+snippet cp
+ clip: ${0};
+snippet cp:a
+ clip: auto;
+snippet cp:r
+ clip: rect(${1:0} ${2:0} ${3:0} ${0:0});
+snippet c
+ color: #${0:000};
+snippet ct
+ content: ${0};
+snippet ct:a
+ content: attr(${0});
+snippet ct:cq
+ content: close-quote;
+snippet ct:c
+ content: counter(${0});
+snippet ct:cs
+ content: counters(${0});
+snippet ct:ncq
+ content: no-close-quote;
+snippet ct:noq
+ content: no-open-quote;
+snippet ct:n
+ content: normal;
+snippet ct:oq
+ content: open-quote;
+snippet coi
+ counter-increment: ${0};
+snippet cor
+ counter-reset: ${0};
+snippet cur
+ cursor: ${0};
+snippet cur:a
+ cursor: auto;
+snippet cur:c
+ cursor: crosshair;
+snippet cur:d
+ cursor: default;
+snippet cur:ha
+ cursor: hand;
+snippet cur:he
+ cursor: help;
+snippet cur:m
+ cursor: move;
+snippet cur:p
+ cursor: pointer;
+snippet cur:t
+ cursor: text;
+snippet d
+ display: ${0};
+snippet d:mib
+ display: -moz-inline-box;
+snippet d:mis
+ display: -moz-inline-stack;
+snippet d:b
+ display: block;
+snippet d:cp
+ display: compact;
+snippet d:ib
+ display: inline-block;
+snippet d:itb
+ display: inline-table;
+snippet d:i
+ display: inline;
+snippet d:li
+ display: list-item;
+snippet d:n
+ display: none;
+snippet d:ri
+ display: run-in;
+snippet d:tbcp
+ display: table-caption;
+snippet d:tbc
+ display: table-cell;
+snippet d:tbclg
+ display: table-column-group;
+snippet d:tbcl
+ display: table-column;
+snippet d:tbfg
+ display: table-footer-group;
+snippet d:tbhg
+ display: table-header-group;
+snippet d:tbrg
+ display: table-row-group;
+snippet d:tbr
+ display: table-row;
+snippet d:tb
+ display: table;
+snippet ec
+ empty-cells: ${0};
+snippet ec:h
+ empty-cells: hide;
+snippet ec:s
+ empty-cells: show;
+snippet exp
+ expression()
+snippet fl
+ float: ${0};
+snippet fl:l
+ float: left;
+snippet fl:n
+ float: none;
+snippet fl:r
+ float: right;
+snippet f+
+ font: ${1:1em} ${2:Arial},${0:sans-serif};
+snippet fef
+ font-effect: ${0};
+snippet fef:eb
+ font-effect: emboss;
+snippet fef:eg
+ font-effect: engrave;
+snippet fef:n
+ font-effect: none;
+snippet fef:o
+ font-effect: outline;
+snippet femp
+ font-emphasize-position: ${0};
+snippet femp:a
+ font-emphasize-position: after;
+snippet femp:b
+ font-emphasize-position: before;
+snippet fems
+ font-emphasize-style: ${0};
+snippet fems:ac
+ font-emphasize-style: accent;
+snippet fems:c
+ font-emphasize-style: circle;
+snippet fems:ds
+ font-emphasize-style: disc;
+snippet fems:dt
+ font-emphasize-style: dot;
+snippet fems:n
+ font-emphasize-style: none;
+snippet fem
+ font-emphasize: ${0};
+snippet ff
+ font-family: ${0};
+snippet ff:c
+ font-family: ${0:'Monotype Corsiva','Comic Sans MS'},cursive;
+snippet ff:f
+ font-family: ${0:Capitals,Impact},fantasy;
+snippet ff:m
+ font-family: ${0:Monaco,'Courier New'},monospace;
+snippet ff:ss
+ font-family: ${0:Helvetica,Arial},sans-serif;
+snippet ff:s
+ font-family: ${0:Georgia,'Times New Roman'},serif;
+snippet fza
+ font-size-adjust: ${0};
+snippet fza:n
+ font-size-adjust: none;
+snippet fz
+ font-size: ${0};
+snippet fsm
+ font-smooth: ${0};
+snippet fsm:aw
+ font-smooth: always;
+snippet fsm:a
+ font-smooth: auto;
+snippet fsm:n
+ font-smooth: never;
+snippet fst
+ font-stretch: ${0};
+snippet fst:c
+ font-stretch: condensed;
+snippet fst:e
+ font-stretch: expanded;
+snippet fst:ec
+ font-stretch: extra-condensed;
+snippet fst:ee
+ font-stretch: extra-expanded;
+snippet fst:n
+ font-stretch: normal;
+snippet fst:sc
+ font-stretch: semi-condensed;
+snippet fst:se
+ font-stretch: semi-expanded;
+snippet fst:uc
+ font-stretch: ultra-condensed;
+snippet fst:ue
+ font-stretch: ultra-expanded;
+snippet fs
+ font-style: ${0};
+snippet fs:i
+ font-style: italic;
+snippet fs:n
+ font-style: normal;
+snippet fs:o
+ font-style: oblique;
+snippet fv
+ font-variant: ${0};
+snippet fv:n
+ font-variant: normal;
+snippet fv:sc
+ font-variant: small-caps;
+snippet fw
+ font-weight: ${0};
+snippet fw:b
+ font-weight: bold;
+snippet fw:br
+ font-weight: bolder;
+snippet fw:lr
+ font-weight: lighter;
+snippet fw:n
+ font-weight: normal;
+snippet f
+ font: ${0};
+snippet h
+ height: ${0};
+snippet h:a
+ height: auto;
+snippet l
+ left: ${0};
+snippet l:a
+ left: auto;
+snippet lts
+ letter-spacing: ${0};
+snippet lh
+ line-height: ${0};
+snippet lisi
+ list-style-image: url(${0});
+snippet lisi:n
+ list-style-image: none;
+snippet lisp
+ list-style-position: ${0};
+snippet lisp:i
+ list-style-position: inside;
+snippet lisp:o
+ list-style-position: outside;
+snippet list
+ list-style-type: ${0};
+snippet list:c
+ list-style-type: circle;
+snippet list:dclz
+ list-style-type: decimal-leading-zero;
+snippet list:dc
+ list-style-type: decimal;
+snippet list:d
+ list-style-type: disc;
+snippet list:lr
+ list-style-type: lower-roman;
+snippet list:n
+ list-style-type: none;
+snippet list:s
+ list-style-type: square;
+snippet list:ur
+ list-style-type: upper-roman;
+snippet lis
+ list-style: ${0};
+snippet lis:n
+ list-style: none;
+snippet mb
+ margin-bottom: ${0};
+snippet mb:a
+ margin-bottom: auto;
+snippet ml
+ margin-left: ${0};
+snippet ml:a
+ margin-left: auto;
+snippet mr
+ margin-right: ${0};
+snippet mr:a
+ margin-right: auto;
+snippet mt
+ margin-top: ${0};
+snippet mt:a
+ margin-top: auto;
+snippet m
+ margin: ${0};
+snippet m:4
+ margin: ${1:0} ${2:0} ${3:0} ${0:0};
+snippet m:3
+ margin: ${1:0} ${2:0} ${0:0};
+snippet m:2
+ margin: ${1:0} ${0:0};
+snippet m:0
+ margin: 0;
+snippet m:a
+ margin: auto;
+snippet mah
+ max-height: ${0};
+snippet mah:n
+ max-height: none;
+snippet maw
+ max-width: ${0};
+snippet maw:n
+ max-width: none;
+snippet mih
+ min-height: ${0};
+snippet miw
+ min-width: ${0};
+snippet op
+ opacity: ${0};
+snippet op:ie
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=${0:100});
+snippet op:ms
+ -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=${0:100})';
+snippet orp
+ orphans: ${0};
+snippet o+
+ outline: ${1:1px} ${2:solid} #${0:000};
+snippet oc
+ outline-color: ${0:#000};
+snippet oc:i
+ outline-color: invert;
+snippet oo
+ outline-offset: ${0};
+snippet os
+ outline-style: ${0};
+snippet ow
+ outline-width: ${0};
+snippet o
+ outline: ${0};
+snippet o:n
+ outline: none;
+snippet ovs
+ overflow-style: ${0};
+snippet ovs:a
+ overflow-style: auto;
+snippet ovs:mq
+ overflow-style: marquee;
+snippet ovs:mv
+ overflow-style: move;
+snippet ovs:p
+ overflow-style: panner;
+snippet ovs:s
+ overflow-style: scrollbar;
+snippet ovx
+ overflow-x: ${0};
+snippet ovx:a
+ overflow-x: auto;
+snippet ovx:h
+ overflow-x: hidden;
+snippet ovx:s
+ overflow-x: scroll;
+snippet ovx:v
+ overflow-x: visible;
+snippet ovy
+ overflow-y: ${0};
+snippet ovy:a
+ overflow-y: auto;
+snippet ovy:h
+ overflow-y: hidden;
+snippet ovy:s
+ overflow-y: scroll;
+snippet ovy:v
+ overflow-y: visible;
+snippet ov
+ overflow: ${0};
+snippet ov:a
+ overflow: auto;
+snippet ov:h
+ overflow: hidden;
+snippet ov:s
+ overflow: scroll;
+snippet ov:v
+ overflow: visible;
+snippet pb
+ padding-bottom: ${0};
+snippet pl
+ padding-left: ${0};
+snippet pr
+ padding-right: ${0};
+snippet pt
+ padding-top: ${0};
+snippet p
+ padding: ${0};
+snippet p:4
+ padding: ${1:0} ${2:0} ${3:0} ${0:0};
+snippet p:3
+ padding: ${1:0} ${2:0} ${0:0};
+snippet p:2
+ padding: ${1:0} ${0:0};
+snippet p:0
+ padding: 0;
+snippet pgba
+ page-break-after: ${0};
+snippet pgba:aw
+ page-break-after: always;
+snippet pgba:a
+ page-break-after: auto;
+snippet pgba:l
+ page-break-after: left;
+snippet pgba:r
+ page-break-after: right;
+snippet pgbb
+ page-break-before: ${0};
+snippet pgbb:aw
+ page-break-before: always;
+snippet pgbb:a
+ page-break-before: auto;
+snippet pgbb:l
+ page-break-before: left;
+snippet pgbb:r
+ page-break-before: right;
+snippet pgbi
+ page-break-inside: ${0};
+snippet pgbi:a
+ page-break-inside: auto;
+snippet pgbi:av
+ page-break-inside: avoid;
+snippet pos
+ position: ${0};
+snippet pos:a
+ position: absolute;
+snippet pos:f
+ position: fixed;
+snippet pos:r
+ position: relative;
+snippet pos:s
+ position: static;
+snippet q
+ quotes: ${0};
+snippet q:en
+ quotes: '\201C' '\201D' '\2018' '\2019';
+snippet q:n
+ quotes: none;
+snippet q:ru
+ quotes: '\00AB' '\00BB' '\201E' '\201C';
+snippet rz
+ resize: ${0};
+snippet rz:b
+ resize: both;
+snippet rz:h
+ resize: horizontal;
+snippet rz:n
+ resize: none;
+snippet rz:v
+ resize: vertical;
+snippet r
+ right: ${0};
+snippet r:a
+ right: auto;
+snippet tbl
+ table-layout: ${0};
+snippet tbl:a
+ table-layout: auto;
+snippet tbl:f
+ table-layout: fixed;
+snippet tal
+ text-align-last: ${0};
+snippet tal:a
+ text-align-last: auto;
+snippet tal:c
+ text-align-last: center;
+snippet tal:l
+ text-align-last: left;
+snippet tal:r
+ text-align-last: right;
+snippet ta
+ text-align: ${0};
+snippet ta:c
+ text-align: center;
+snippet ta:l
+ text-align: left;
+snippet ta:r
+ text-align: right;
+snippet td
+ text-decoration: ${0};
+snippet td:l
+ text-decoration: line-through;
+snippet td:n
+ text-decoration: none;
+snippet td:o
+ text-decoration: overline;
+snippet td:u
+ text-decoration: underline;
+snippet te
+ text-emphasis: ${0};
+snippet te:ac
+ text-emphasis: accent;
+snippet te:a
+ text-emphasis: after;
+snippet te:b
+ text-emphasis: before;
+snippet te:c
+ text-emphasis: circle;
+snippet te:ds
+ text-emphasis: disc;
+snippet te:dt
+ text-emphasis: dot;
+snippet te:n
+ text-emphasis: none;
+snippet th
+ text-height: ${0};
+snippet th:a
+ text-height: auto;
+snippet th:f
+ text-height: font-size;
+snippet th:m
+ text-height: max-size;
+snippet th:t
+ text-height: text-size;
+snippet ti
+ text-indent: ${0};
+snippet ti:-
+ text-indent: -9999px;
+snippet tj
+ text-justify: ${0};
+snippet tj:a
+ text-justify: auto;
+snippet tj:d
+ text-justify: distribute;
+snippet tj:ic
+ text-justify: inter-cluster;
+snippet tj:ii
+ text-justify: inter-ideograph;
+snippet tj:iw
+ text-justify: inter-word;
+snippet tj:k
+ text-justify: kashida;
+snippet tj:t
+ text-justify: tibetan;
+snippet to+
+ text-outline: ${1:0} ${2:0} #${0:000};
+snippet to
+ text-outline: ${0};
+snippet to:n
+ text-outline: none;
+snippet tr
+ text-replace: ${0};
+snippet tr:n
+ text-replace: none;
+snippet tsh+
+ text-shadow: ${1:0} ${2:0} ${3:0} #${0:000};
+snippet tsh
+ text-shadow: ${0};
+snippet tsh:n
+ text-shadow: none;
+snippet tt
+ text-transform: ${0};
+snippet tt:c
+ text-transform: capitalize;
+snippet tt:l
+ text-transform: lowercase;
+snippet tt:n
+ text-transform: none;
+snippet tt:u
+ text-transform: uppercase;
+snippet tw
+ text-wrap: ${0};
+snippet tw:no
+ text-wrap: none;
+snippet tw:n
+ text-wrap: normal;
+snippet tw:s
+ text-wrap: suppress;
+snippet tw:u
+ text-wrap: unrestricted;
+snippet t
+ top: ${0};
+snippet t:a
+ top: auto;
+snippet va
+ vertical-align: ${0};
+snippet va:bl
+ vertical-align: baseline;
+snippet va:b
+ vertical-align: bottom;
+snippet va:m
+ vertical-align: middle;
+snippet va:sub
+ vertical-align: sub;
+snippet va:sup
+ vertical-align: super;
+snippet va:tb
+ vertical-align: text-bottom;
+snippet va:tt
+ vertical-align: text-top;
+snippet va:t
+ vertical-align: top;
+snippet v
+ visibility: ${0};
+snippet v:c
+ visibility: collapse;
+snippet v:h
+ visibility: hidden;
+snippet v:v
+ visibility: visible;
+snippet whsc
+ white-space-collapse: ${0};
+snippet whsc:ba
+ white-space-collapse: break-all;
+snippet whsc:bs
+ white-space-collapse: break-strict;
+snippet whsc:k
+ white-space-collapse: keep-all;
+snippet whsc:l
+ white-space-collapse: loose;
+snippet whsc:n
+ white-space-collapse: normal;
+snippet whs
+ white-space: ${0};
+snippet whs:n
+ white-space: normal;
+snippet whs:nw
+ white-space: nowrap;
+snippet whs:pl
+ white-space: pre-line;
+snippet whs:pw
+ white-space: pre-wrap;
+snippet whs:p
+ white-space: pre;
+snippet wid
+ widows: ${0};
+snippet w
+ width: ${0};
+snippet w:a
+ width: auto;
+snippet wob
+ word-break: ${0};
+snippet wob:ba
+ word-break: break-all;
+snippet wob:bs
+ word-break: break-strict;
+snippet wob:k
+ word-break: keep-all;
+snippet wob:l
+ word-break: loose;
+snippet wob:n
+ word-break: normal;
+snippet wos
+ word-spacing: ${0};
+snippet wow
+ word-wrap: ${0};
+snippet wow:no
+ word-wrap: none;
+snippet wow:n
+ word-wrap: normal;
+snippet wow:s
+ word-wrap: suppress;
+snippet wow:u
+ word-wrap: unrestricted;
+snippet z
+ z-index: ${0};
+snippet z:a
+ z-index: auto;
+snippet zoo
+ zoom: 1;
+snippet :h
+ :hover
+snippet :fc
+ :first-child
+snippet :lc
+ :last-child
+snippet :nc
+ :nth-child(${0})
+snippet :nlc
+ :nth-last-child(${0})
+snippet :oc
+ :only-child
+snippet :a
+ :after
+snippet :b
+ :before
+snippet ::a
+ ::after
+snippet ::b
+ ::before
diff --git a/.config/micro/plug/snippets/snippets/d.snippets b/.config/micro/plug/snippets/snippets/d.snippets
new file mode 100644
index 0000000..216a4d8
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/d.snippets
@@ -0,0 +1,338 @@
+### Import
+snippet imp
+ import
+snippet pimp
+ public import
+### My favorite modules
+snippet io
+ std.stdio
+snippet traits
+ std.traits
+snippet conv
+ std.conv
+snippet arr
+ std.array
+snippet algo
+ std.algorithm
+snippet theusual
+ import std.stdio, std.string, std.array;
+ import std.traits, std.conv, std.algorithm;
+ import std.math, std.regex;
+### Control Structures
+snippet for
+ for(int ${1:i} = 0; $1 < ${2:count}; $1++) {
+ ${0}
+ }
+snippet fe
+ foreach(${1:elem}; ${2:range}) {
+ ${0}
+ }
+snippet fei
+ foreach(${1:i}, ${2:elem}; ${3:range}) {
+ ${0}
+ }
+snippet fer
+ foreach_reverse(${1:elem}; ${2:range}) {
+ ${0}
+ }
+snippet feri
+ foreach_reverse(${1:i}, ${2:elem}; ${3:range}) {
+ ${0}
+ }
+snippet sce
+ scope(exit) ${1:f.close();}
+snippet scs
+ scope(success) ${1}
+snippet scf
+ scope(failure) ${1}
+snippet el
+ else {
+ ${1}
+ }
+snippet eif
+ else if(${1}) {
+ ${0}
+ }
+snippet if
+ if(${1}) {
+ ${0}
+ }
+snippet ife
+ if(${1}) {
+ ${2}
+ } else {
+ ${3}
+ }
+snippet ifee
+ if(${1}) {
+ ${2}
+ } else if(${3}) {
+ ${4}
+ } else {
+ ${5}
+ }
+snippet sw
+ switch(${1}) {
+ ${0}
+ }
+snippet cs
+ case ${1:0}:
+ ${2}
+ break;
+snippet def
+ default:
+ ${0}
+snippet fsw
+ final switch(${1}) {
+ ${0}
+ }
+snippet try
+ try {
+ ${1}
+ } catch(${2:Exception} ${3:e}) {
+ ${4}
+ }
+snippet tcf
+ try {
+ ${0}
+ } catch(${1:Exception} ${2:e}) {
+ ${3}
+ } finally {
+ ${4}
+ }
+snippet wh
+ while(${1:cond}) {
+ ${0}
+ }
+snippet dowh
+ do {
+ ${1}
+ } while(${2});
+snippet sif
+ static if(${1:cond}) {
+ ${2}
+ }
+snippet sife
+ static if(${1}) {
+ ${2}
+ } else {
+ ${3}
+ }
+snippet sifee
+ static if(${1}) {
+ ${2}
+ } else static if(${3}) {
+ ${4}
+ } else {
+ ${5}
+ }
+snippet seif
+ else static if(${1}) {
+ ${2}
+ }
+snippet ?
+ (${1: a > b}) ? ${2:a} : ${3:b};
+snippet with
+ with(${1:exp}) {
+ ${2}
+ } ${0}
+### Functions
+snippet fun
+ ${1:auto} ${2:func}(${3:params}) {
+ ${0}
+ }
+snippet contr
+ in {
+ ${1}
+ } out {
+ ${2}
+ } body {
+ ${0}
+ }
+snippet l
+ (${1:x}) => ${2:x}${0:;}
+snippet funl
+ function (${1:int x}) => ${2}${3:;}
+snippet del
+ delegate (${1:int x}) => ${2}${3:;}
+### Templates
+snippet temp
+ template ${1:`vim_snippets#Filename("$2", "untitled")`}(${2:T}) {
+ ${0}
+ }
+snippet tempif
+ template ${1:`vim_snippets#Filename("$2", "untitled")`}(${2:T}) if(${3:isSomeString!}$2) {
+ ${0}
+ }
+snippet opApply
+ int opApply(Dg)(Dg dg) if(ParameterTypeTuble!Dg.length == 2) {
+ ${0}
+ }
+snippet psn
+ pure @safe nothrow
+snippet safe
+ @safe
+snippet trusted
+ @trusted
+snippet system
+ @system
+### OOPs
+snippet cl
+ class${1:(T)} ${2:`vim_snippets#Filename("$3", "untitled")`} {
+ ${0}
+ }
+snippet str
+ struct${1:(T)} ${2:`vim_snippets#Filename("$3", "untitled")`} {
+ ${0}
+ }
+snippet uni
+ union${1:(T)} ${2:`vim_snippets#Filename("$3", "untitled")`} {
+ ${0}
+ }
+snippet inter
+ interface I${1:`vim_snippets#Filename("$2", "untitled")`} {
+ ${0}
+ }
+snippet enum
+ enum ${1} {
+ ${0}
+ }
+snippet pu
+ public
+snippet pr
+ private
+snippet po
+ protected
+snippet ctor
+ this(${1}) {
+ ${0}
+ }
+snippet dtor
+ ~this(${1}) {
+ ${0}
+ }
+### Type Witchery
+snippet al
+ alias ${1:b} = ${2:a};
+ ${0}
+snippet alth
+ alias ${1:value} this;
+ ${0}
+### The Commonplace
+snippet main
+ void main() {
+ ${0}
+ }
+snippet maina
+ void main(string[] args) {
+ ${0}
+ }
+snippet mod
+ module ${1:main};${0}
+snippet var
+ ${1:auto} ${2:var} = ${0:1};
+snippet new
+ ${1:auto} ${2:var} = new ${3:Object}(${4});
+ ${0}
+snippet file
+ auto ${1:f} = File(${2:"useful_info.xml"}, ${3:"rw"});
+ ${0}
+snippet map
+ map!(${1:f})(${2:xs});
+ ${0}
+snippet filter
+ filter!(${1:p})(${2:xs});
+ ${0}
+snippet reduce
+ reduce!(${1:f})(${2:xs});
+ ${0}
+snippet find
+ find!(${1:p})($2:xs);
+ ${0}
+snippet aa
+ ${1:int}[${2:string}] ${3:dict} = ${0};
+### Misc
+snippet #!
+ #!/usr/bin/env rdmd
+snippet bang
+ #!/usr/bin/env rdmd
+snippet rdmd
+ #!/usr/bin/env rdmd
+snippet isstr
+ isSomeString!${1:S}
+snippet isnum
+ isNumeric!${1:N}
+snippet tos
+ to!string(${1:x});
+ ${0}
+snippet toi
+ to!int(${1:str});
+ ${0}
+snippet tod
+ to!double(${1:str});
+ ${0}
+snippet un
+ unittest {
+ ${0}
+ }
+snippet ver
+ version(${1:Posix}) {
+ ${0}
+ }
+snippet de
+ debug {
+ ${0}
+ }
+snippet sst
+ shared static this(${1}) {
+ ${0}
+ }
+snippet td
+ // Typedef is deprecated. Use alias instead.
+ typedef
+snippet ino
+ inout
+snippet imm
+ immutable
+snippet fin
+ final
+snippet con
+ const
+snippet psi
+ private static immutable ${1:int} ${2:Constant} = ${3:1};
+ ${0}
+snippet prag
+ pragma(${1})
+snippet pms
+ pragma(msg, ${1:Warning});
+snippet asm
+ asm {
+ ${1}
+ }
+snippet mixin
+ mixin(${1:`writeln("Hello, World!");`});
+snippet over
+ override
+snippet ret
+ return ${1};
+snippet FILE
+ __FILE__
+snippet MOD
+ __MODULE__
+snippet LINE
+ __LINE__
+snippet FUN
+ __FUNCTION__
+snippet PF
+ __PRETTY_FUNCTION__
+snippet cast
+ cast(${1:T})(${2:val});
+snippet /*
+ /*
+ * ${1}
+ */
+### Fun stuff
+snippet idk
+ // I don't know how this works. Don't touch it.
+snippet idfk
+ // Don't FUCKING touch this.
diff --git a/.config/micro/plug/snippets/snippets/dart.snippets b/.config/micro/plug/snippets/snippets/dart.snippets
new file mode 100644
index 0000000..0093f2b
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/dart.snippets
@@ -0,0 +1,82 @@
+snippet lib
+ #library('${1}');
+ ${0}
+snippet im
+ #import('${1}');
+ ${0}
+snippet so
+ #source('${1}');
+ ${0}
+snippet main
+ static void main() {
+ ${0}
+ }
+snippet st
+ static ${0}
+snippet fi
+ final ${0}
+snippet re
+ return ${0}
+snippet br
+ break;
+snippet th
+ throw ${0}
+snippet cl
+ class ${1:`vim_snippets#Filename("", "untitled")`} ${0}
+snippet in
+ interface ${1:`vim_snippets#Filename("", "untitled")`} ${0}
+snippet imp
+ implements ${0}
+snippet ext
+ extends ${0}
+snippet if
+ if (${1:true}) {
+ ${0}
+ }
+snippet ife
+ if (${1:true}) {
+ ${2}
+ } else {
+ ${0}
+ }
+snippet el
+ else
+snippet sw
+ switch (${1}) {
+ ${0}
+ }
+snippet cs
+ case ${1}:
+ ${0}
+snippet de
+ default:
+ ${0}
+snippet for
+ for (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) {
+ ${0:$1[$2]}
+ }
+snippet fore
+ for (final ${2:item} in ${1:itemList}) {
+ ${0}
+ }
+snippet wh
+ while (${1:/* condition */}) {
+ ${0}
+ }
+snippet dowh
+ do {
+ ${0}
+ } while (${0:/* condition */});
+snippet as
+ assert(${0:/* condition */});
+snippet try
+ try {
+ ${0}
+ } catch (${1:Exception e}) {
+ }
+snippet tryf
+ try {
+ ${0}
+ } catch (${1:Exception e}) {
+ } finally {
+ }
diff --git a/.config/micro/plug/snippets/snippets/fish.snippets b/.config/micro/plug/snippets/snippets/fish.snippets
new file mode 100644
index 0000000..3549fe1
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/fish.snippets
@@ -0,0 +1,29 @@
+# Shebang. Executing bash via /usr/bin/env makes scripts more portable.
+snippet #!
+ #!/usr/bin/env fish
+
+snippet if
+ if ${1:condition}
+ ${0:#statements}
+ end
+
+snippet for
+ for ${1:needle} in ${1:haystack}
+ ${0:#statements}
+ end
+
+snippet while
+ while ${1:condition}
+ ${0:#statements}
+ end
+
+snippet switch
+ switch ${1:word}
+ case ${2:pattern}
+ ${0:#statements}
+ end
+
+snippet function
+ function ${1:name}
+ ${0:#body}
+ end
diff --git a/.config/micro/plug/snippets/snippets/fortran.snippets b/.config/micro/plug/snippets/snippets/fortran.snippets
new file mode 100644
index 0000000..c9ab060
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/fortran.snippets
@@ -0,0 +1,93 @@
+snippet impl
+ implicit none
+ $0
+snippet prog
+ program ${1:main}
+ $0
+ end program $1
+snippet mod
+ module ${1:modulename}
+ $0
+ end module $1
+snippet proc
+ procedure ${1:name}
+ ${0}
+ end procedure $1
+snippet iface
+ interface ${1:name}
+ ${0}
+ end interface $1
+snippet doc
+ ! """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+ ! File: ${2:`vim_snippets#Filename('$1')`}
+ ! Author: `g:snips_author`
+ ! Email: `g:snips_email`
+ ! Github: `g:snips_github`
+ ! Description: $1
+ ! """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+ $0
+# Variables definitions
+# Boolean
+snippet bool
+ logical :: $0
+# Integer
+snippet int
+ integer :: $0
+snippet real
+ real :: $0
+# Double Precision
+snippet double
+ double precision :: $0
+# Char
+snippet str
+ character(len=${1:*}) :: ${0:}
+# Types
+snippet type
+ type(${1:name})
+ $0
+ end type
+snippet const
+ ${1:type}, parameter :: $2 = $0
+snippet arr
+ ${1:type}, allocatable, dimension(${2::}) :: $0
+snippet intent
+ ${1:type}, intent(inout) :: $0
+# Array
+snippet /
+ (/ $1 /) ${2:,&} $0
+snippet if
+ if (${1:condition}) then
+ $2
+ end if
+snippet case
+ select case (${1:expr})
+ case ($2)
+ case default
+ $3
+ end select $0
+snippet do
+ do ${1:i} = ${2:start},${3:end}, ${4:incr}
+ $4
+ end do
+snippet dow
+ do while (${1:condition})
+ $2
+ end do
+snippet sub
+ subroutine ${1:name}($2)
+ $0
+ end subroutine $1
+snippet func
+ function ${1:name}($2) result($3)
+ $0
+ end function $1
+snippet pr
+ write(*,*) $0
+snippet read
+ read( unit = ${1:fp}, file = ${2:filename}${3:, iostat = IERR }) $0
+snippet write
+ write( unit = ${1:fp}, file = ${2:filename}${3:, iostat = IERR }) $0
+snippet open
+ open (unit = ${1:fp}, file = ${2:filename}, status = unknown${3:, iostat = IERR }) $0
+snippet close
+ close ( unit = ${1:fp} ) $0
diff --git a/.config/micro/plug/snippets/snippets/go.snippets b/.config/micro/plug/snippets/snippets/go.snippets
new file mode 100644
index 0000000..b2bdc9e
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/go.snippets
@@ -0,0 +1,237 @@
+# shorthand variable declaration
+snippet v
+ ${1} := ${2}
+# variable initialization
+snippet vr
+ var ${1:t} ${0:string}
+# variable declaration
+snippet var
+ var ${1} ${2} = ${3}
+# variables declaration
+snippet vars
+ var (
+ ${1} ${2} = ${3}
+ )
+# append
+snippet ap
+ append(${1:slice}, ${0:value})
+# bool
+snippet bl
+ bool
+# byte
+snippet bt
+ byte
+# break
+snippet br
+ break
+# channel
+snippet ch
+ chan ${0:int}
+# case
+snippet cs
+ case ${1:value}:
+ ${0}
+# const
+snippet c
+ const ${1:NAME} = ${0:0}
+# constants with iota
+snippet co
+ const (
+ ${1:NAME1} = iota
+ ${0:NAME2}
+ )
+# continue
+snippet cn
+ continue
+# defer
+snippet df
+ defer ${0:func}()
+# defer recover
+snippet dfr
+ defer func() {
+ if err := recover(); err != nil {
+ ${0}
+ }
+ }()
+# int
+snippet i
+ int
+# import
+snippet im
+ import (
+ "${1:package}"
+ )
+# interface
+snippet in
+ interface{}
+# full interface snippet
+snippet inf
+ interface ${1:name} {
+ ${2:/* methods */}
+ }
+# if condition
+snippet if
+ if ${1:/* condition */} {
+ ${2}
+ }
+snippet ife
+ if ${1:/* condition */} {
+ ${2}
+ } else {
+ ${0}
+ }
+# else snippet
+snippet el
+ else {
+ ${1}
+ }
+# error snippet
+snippet ir
+ if err != nil {
+ return err
+ }
+ ${0}
+# false
+snippet f
+ false
+# fallthrough
+snippet ft
+ fallthrough
+# float
+snippet fl
+ float32
+# float32
+snippet f3
+ float32
+# float64
+snippet f6
+ float64
+# if else
+snippet ie
+ if ${1:/* condition */} {
+ ${2}
+ } else {
+ ${3}
+ }
+ ${0}
+# for int loop
+snippet for
+ for ${1}{
+ ${0}
+ }
+# for int loop
+snippet fori
+ for ${2:i} := 0; $2 < ${1:count}; $2${3:++} {
+ ${0}
+ }
+# for range loop
+snippet forr
+ for ${1:e} := range ${2:collection} {
+ ${0}
+ }
+# function simple
+snippet fun
+ func ${1:funcName}(${2}) ${3:error} {
+ ${4}
+ }
+ ${0}
+# function on receiver
+snippet fum
+ func (${1:receiver} ${2:type}) ${3:funcName}(${4}) ${5:error} {
+ ${6}
+ }
+ ${0}
+# log printf
+snippet lf
+ log.Printf("%${1:s}", ${2:var})
+# log printf
+snippet lp
+ log.Println("${1}")
+# make
+snippet mk
+ make(${1:[]string}, ${0:0})
+# map
+snippet mp
+ map[${1:string}]${0:int}
+# main()
+snippet main
+ func main() {
+ ${1}
+ }
+ ${0}
+# new
+snippet nw
+ new(${0:type})
+# package
+snippet pa
+ package ${1:main}
+# panic
+snippet pn
+ panic("${0:msg}")
+# print
+snippet pr
+ fmt.Printf("%${1:s}\n", ${2:var})
+# println
+snippet pl
+ fmt.Println("${1:s}")
+# range
+snippet rn
+ range ${0}
+# return
+snippet rt
+ return ${0}
+# result
+snippet rs
+ result
+# select
+snippet sl
+ select {
+ case ${1:v1} := <-${2:chan1}
+ ${3}
+ default:
+ ${0}
+ }
+# string
+snippet sr
+ string
+# struct
+snippet st
+ struct ${1:name} {
+ ${2:/* data */}
+ }
+ ${0}
+# switch
+snippet sw
+ switch ${1:var} {
+ case ${2:value1}:
+ ${3}
+ case ${4:value2}:
+ ${5}
+ default:
+ ${0}
+ }
+snippet sp
+ fmt.Sprintf("%${1:s}", ${2:var})
+# true
+snippet t
+ true
+# goroutine named function
+snippet g
+ go ${1:funcName}(${0})
+# goroutine anonymous function
+snippet ga
+ go func(${1} ${2:type}) {
+ ${3:/* code */}
+ }(${0})
+snippet test test function
+ func Test${1:name}(t *testing.T) {
+ ${2}
+ }
+ ${0}
+snippet bench benchmark function
+ func Benchmark${1:name}(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ ${2}
+ }
+ }
+ ${0}
diff --git a/.config/micro/plug/snippets/snippets/haml.snippets b/.config/micro/plug/snippets/snippets/haml.snippets
new file mode 100644
index 0000000..09217c6
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/haml.snippets
@@ -0,0 +1,37 @@
+snippet t
+ %table
+ %tr
+ %th
+ ${1:headers}
+ %tr
+ %td
+ ${0:headers}
+snippet ul
+ %ul
+ %li
+ ${0:item}
+ %li
+snippet rp
+ = render :partial => "${0:item}"
+snippet rpc
+ = render :partial => "${1:item}", :collection => ${0:@$1s}
+snippet rpl
+ = render :partial => "${1:item}", :locals => { :${2:$1} => ${0:@$1}
+snippet rpo
+ = render :partial => "${1:item}", :object => ${0:@$1}
+snippet lt
+ = link_to ${1:name}, ${2:dest}
+snippet mt
+ = mail_to ${1:email_address}, ${2:name}
+snippet mts
+ = mail_to ${1:email_address}, ${2:name}, :subject => ${3}, :body => ${4}
+snippet ife
+ - if ${1:condition}
+ ${2}
+ - else
+ ${0}
+snippet ifp
+ - if ${1:condition}.presence?
+ ${0}
+snippet ntc
+ = number_to_currency(${1})
diff --git a/.config/micro/plug/snippets/snippets/haskell.snippets b/.config/micro/plug/snippets/snippets/haskell.snippets
new file mode 100644
index 0000000..e4957e4
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/haskell.snippets
@@ -0,0 +1,115 @@
+snippet lang
+ {-# LANGUAGE ${0:OverloadedStrings} #-}
+snippet haddock
+ {-# OPTIONS_HADDOCK ${0:hide} #-}
+snippet ghc
+ {-# OPTIONS_GHC ${0:-fno-warn-unused-imports} #-}
+snippet inline
+ {-# INLINE ${0:name} #-}
+snippet info
+ -- |
+ -- Module : ${1:`substitute(substitute(expand('%:r'), '[/\\]','.','g'),'^\%(\l*\.\)\?','','')`}
+ -- Copyright : ${2:Author} ${3:2011-2012}
+ -- License : ${4:BSD3}
+ --
+ -- Maintainer : ${5:email@something.com}
+ -- Stability : ${6:experimental}
+ -- Portability : ${7:unknown}
+ --
+ -- ${0:Description}
+ --
+snippet imp
+ import ${0:Data.Text}
+snippet import
+ import ${0:Data.Text}
+snippet import2
+ import ${1:Data.Text} (${0:head})
+snippet impq
+ import qualified ${1:Data.Text} as ${0:T}
+snippet importq
+ import qualified ${1:Data.Text} as ${0:T}
+snippet inst
+ instance ${1:Monoid} ${2:Type} where
+ ${0}
+snippet type
+ type ${1:Type} = ${0:Type}
+snippet data
+ data ${1:Type} = ${2:$1} ${0:Int}
+snippet newtype
+ newtype ${1:Type} = ${2:$1} ${0:Int}
+snippet class
+ class ${1:Class} a where
+ ${0}
+snippet module
+ module `substitute(substitute(expand('%:r'), '[/\\]','.','g'),'^\%(\l*\.\)\?','','')` (
+ ) where
+ `expand('%') =~ 'Main' ? "\nmain :: IO ()\nmain = undefined" : ""`
+
+snippet main
+ main :: IO ()
+ main = ${0:undefined}
+snippet const
+ ${1:name} :: ${2:a}
+ $1 = ${0:undefined}
+snippet fn
+ ${1:fn} :: ${2:a} -> ${3:a}
+ $1 ${4} = ${0:undefined}
+snippet fn2
+ ${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}
+ $1 ${5} = ${0:undefined}
+snippet fn3
+ ${1:fn} :: ${2:a} -> ${3:a} -> ${4:a} -> ${5:a}
+ $1 ${6} = ${0:undefined}
+snippet => "Type constraint"
+ (${1:Class} ${2:a}) => $2
+snippet ap
+ ${1:map} ${2:fn} ${0:list}
+snippet \
+ \\${1:x} -> ${0:expression}
+snippet (\
+ (\\${1:x} -> ${0:expression})
+snippet <-
+ ${1:a} <- ${0:m a}
+snippet ->
+ ${1:m a} -> ${0:a}
+snippet tup
+ (${1:a}, ${0:b})
+snippet tup2
+ (${1:a}, ${2:b}, ${0:c})
+snippet tup3
+ (${1:a}, ${2:b}, ${3:c}, ${0:d})
+snippet rec
+ ${1:Record} { ${2:recFieldA} = ${3:undefined}
+ , ${4:recFieldB} = ${0:undefined}
+ }
+snippet case
+ case ${1:something} of
+ ${2} -> ${0}
+snippet let
+ let ${1} = ${2}
+ in ${3}
+snippet where
+ where
+ ${1:fn} = ${0:undefined}
+snippet spec
+ module `substitute(substitute(expand('%:r'), '[/\\]','.','g'),'^\%(\l*\.\)\?','','')` (main, spec) where
+
+ import Test.Hspec
+ import Test.QuickCheck
+
+ main :: IO ()
+ main = hspec spec
+
+ spec :: Spec
+ spec =
+ describe "${1}" $ do
+ $0
+snippet desc
+ describe "${1}" $ do
+ $0
+snippet it
+ it "${1}" $
+ $0
+snippet itp
+ it "${1}" $ property $
+ $0
diff --git a/.config/micro/plug/snippets/snippets/html.snippets b/.config/micro/plug/snippets/snippets/html.snippets
new file mode 100644
index 0000000..5ae8e74
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/html.snippets
@@ -0,0 +1,877 @@
+# Some useful Unicode entities
+# Non-Breaking Space
+snippet nbs
+ &nbsp;
+# ←
+snippet left
+ &#x2190;
+# →
+snippet right
+ &#x2192;
+# ↑
+snippet up
+ &#x2191;
+# ↓
+snippet down
+ &#x2193;
+# ↩
+snippet return
+ &#x21A9;
+# ⇤
+snippet backtab
+ &#x21E4;
+# ⇥
+snippet tab
+ &#x21E5;
+# ⇧
+snippet shift
+ &#x21E7;
+# ⌃
+snippet ctrl
+ &#x2303;
+# ⌅
+snippet enter
+ &#x2305;
+# ⌘
+snippet cmd
+ &#x2318;
+# ⌥
+snippet option
+ &#x2325;
+# ⌦
+snippet delete
+ &#x2326;
+# ⌫
+snippet backspace
+ &#x232B;
+# ⎋
+snippet esc
+ &#x238B;
+# comment
+snippet //
+ <!-- ${1} -->${0}
+# Generic Doctype
+snippet doctype HTML 4.01 Strict
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+snippet doctype HTML 4.01 Transitional
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+snippet doctype HTML 5
+ <!DOCTYPE HTML>
+snippet doctype XHTML 1.0 Frameset
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+snippet doctype XHTML 1.0 Strict
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+snippet doctype XHTML 1.0 Transitional
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+snippet doctype XHTML 1.1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+# HTML Doctype 4.01 Strict
+snippet docts
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+# HTML Doctype 4.01 Transitional
+snippet doct
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+# HTML Doctype 5
+snippet doct5
+ <!DOCTYPE HTML>
+# XHTML Doctype 1.0 Frameset
+snippet docxf
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+# XHTML Doctype 1.0 Strict
+snippet docxs
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+# XHTML Doctype 1.0 Transitional
+snippet docxt
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+# XHTML Doctype 1.1
+snippet docx
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+# Attributes
+snippet attr
+ ${1:attribute}="${0:property}"
+snippet attr+
+ ${1:attribute}="${2:property}" attr+
+snippet .
+ class="${1}"
+snippet #
+ id="${1}"
+snippet alt
+ alt="${1}"
+snippet charset
+ charset="${1:utf-8}"
+snippet data
+ data-${1}="${2:$1}"
+snippet for
+ for="${1}"
+snippet height
+ height="${1}"
+snippet href
+ href="${1:#}"
+snippet lang
+ lang="${1:en}"
+snippet media
+ media="${1}"
+snippet name
+ name="${1}"
+snippet rel
+ rel="${1}"
+snippet scope
+ scope="${1:row}"
+snippet src
+ src="${1}"
+snippet title=
+ title="${1}"
+snippet type
+ type="${1}"
+snippet value
+ value="${1}"
+snippet width
+ width="${1}"
+# Elements
+snippet a
+ <a href="${1:#}">${0:$1}</a>
+snippet a.
+ <a class="${1}" href="${2:#}">${0:$1}</a>
+snippet a#
+ <a id="${1}" href="${2:#}">${0:$1}</a>
+snippet a:ext
+ <a href="http://${1:example.com}">${0:$1}</a>
+snippet a:mail
+ <a href="mailto:${1:joe@example.com}?subject=${2:feedback}">${0:email me}</a>
+snippet ac
+ <a href="`@+`">${0:`@+`}</a>
+snippet abbr
+ <abbr title="${1}">${0}</abbr>
+snippet address
+ <address>
+ ${0}
+ </address>
+snippet area
+ <area shape="${1:rect}" coords="${2}" href="${3}" alt="${0}" />
+snippet area+
+ <area shape="${1:rect}" coords="${2}" href="${3}" alt="${4}" />
+ area+
+snippet area:c
+ <area shape="circle" coords="${1}" href="${2}" alt="${0}" />
+snippet area:d
+ <area shape="default" coords="${1}" href="${2}" alt="${0}" />
+snippet area:p
+ <area shape="poly" coords="${1}" href="${2}" alt="${0}" />
+snippet area:r
+ <area shape="rect" coords="${1}" href="${2}" alt="${0}" />
+snippet article
+ <article>
+ ${0}
+ </article>
+snippet article.
+ <article class="${1}">
+ ${0}
+ </article>
+snippet article#
+ <article id="${1}">
+ ${0}
+ </article>
+snippet aside
+ <aside>
+ ${0}
+ </aside>
+snippet aside.
+ <aside class="${1}">
+ ${0}
+ </aside>
+snippet aside#
+ <aside id="${1}">
+ ${0}
+ </aside>
+snippet audio
+ <audio src="${1}>${0}</audio>
+snippet b
+ <b>${0}</b>
+snippet base
+ <base href="${1}" target="${0}" />
+snippet bdi
+ <bdi>${0}</bdo>
+snippet bdo
+ <bdo dir="${1}">${0}</bdo>
+snippet bdo:l
+ <bdo dir="ltr">${0}</bdo>
+snippet bdo:r
+ <bdo dir="rtl">${0}</bdo>
+snippet blockquote
+ <blockquote>
+ ${0}
+ </blockquote>
+snippet body
+ <body>
+ ${0}
+ </body>
+snippet br
+ <br />
+snippet button
+ <button type="${1:submit}">${0}</button>
+snippet button.
+ <button class="${1:button}" type="${2:submit}">${0}</button>
+snippet button#
+ <button id="${1}" type="${2:submit}">${0}</button>
+snippet button:s
+ <button type="submit">${0}</button>
+snippet button:r
+ <button type="reset">${0}</button>
+snippet canvas
+ <canvas>
+ ${0}
+ </canvas>
+snippet caption
+ <caption>${0}</caption>
+snippet cite
+ <cite>${0}</cite>
+snippet code
+ <code>${0}</code>
+snippet col
+ <col />
+snippet col+
+ <col />
+ col+
+snippet colgroup
+ <colgroup>
+ ${0}
+ </colgroup>
+snippet colgroup+
+ <colgroup>
+ <col />
+ col+${0}
+ </colgroup>
+snippet command
+ <command type="command" label="${1}" icon="${0}">
+snippet command:c
+ <command type="checkbox" label="${1}" icon="${0}">
+snippet command:r
+ <command type="radio" radiogroup="${1}" label="${2}" icon="${0}">
+snippet datagrid
+ <datagrid>
+ ${0}
+ </datagrid>
+snippet datalist
+ <datalist>
+ ${0}
+ </datalist>
+snippet datatemplate
+ <datatemplate>
+ ${0}
+ </datatemplate>
+snippet dd
+ <dd>${0}</dd>
+snippet dd.
+ <dd class="${1}">${0}</dd>
+snippet dd#
+ <dd id="${1}">${0}</dd>
+snippet del
+ <del>${0}</del>
+snippet details
+ <details>${0}</details>
+snippet dfn
+ <dfn>${0}</dfn>
+snippet dialog
+ <dialog>
+ ${0}
+ </dialog>
+snippet div
+ <div>
+ ${0}
+ </div>
+snippet div.
+ <div class="${1}">
+ ${0}
+ </div>
+snippet div#
+ <div id="${1}">
+ ${0}
+ </div>
+snippet dl
+ <dl>
+ ${0}
+ </dl>
+snippet dl.
+ <dl class="${1}">
+ ${0}
+ </dl>
+snippet dl#
+ <dl id="${1}">
+ ${0}
+ </dl>
+snippet dl+
+ <dl>
+ <dt>${1}</dt>
+ <dd>${2}</dd>
+ dt+${0}
+ </dl>
+snippet dt
+ <dt>${0}</dt>
+snippet dt.
+ <dt class="${1}">${0}</dt>
+snippet dt#
+ <dt id="${1}">${0}</dt>
+snippet dt+
+ <dt>${1}</dt>
+ <dd>${2}</dd>
+ dt+${0}
+snippet em
+ <em>${0}</em>
+snippet embed
+ <embed src="${1}" type="${0}" />
+snippet fieldset
+ <fieldset>
+ ${0}
+ </fieldset>
+snippet fieldset.
+ <fieldset class="${1}">
+ ${0}
+ </fieldset>
+snippet fieldset#
+ <fieldset id="${1}">
+ ${0}
+ </fieldset>
+snippet fieldset+
+ <fieldset>
+ <legend><span>${1}</span></legend>
+ ${2}
+ </fieldset>
+ fieldset+${0}
+snippet figcaption
+ <figcaption>${0}</figcaption>
+snippet figure
+ <figure>${0}</figure>
+snippet figure#
+ <figure id="${1}">
+ ${0}
+ </figure>
+snippet figure.
+ <figure class="${1}">
+ ${0}
+ </figure>
+snippet footer
+ <footer>
+ ${0}
+ </footer>
+snippet footer.
+ <footer class="${1}">
+ ${0}
+ </footer>
+snippet footer#
+ <footer id="${1}">
+ ${0}
+ </footer>
+snippet form
+ <form action="${1}" method="${2:post}">
+ ${0}
+ </form>
+snippet form.
+ <form class="${1}" action="${2}" method="${3:post}">
+ ${0}
+ </form>
+snippet form#
+ <form id="${1}" action="${2}" method="${3:post}">
+ ${0}
+ </form>
+snippet h1
+ <h1>${0}</h1>
+snippet h1.
+ <h1 class="${1}">${0}</h1>
+snippet h1#
+ <h1 id="${1}">${0}</h1>
+snippet h2
+ <h2>${0}</h2>
+snippet h2.
+ <h2 class="${1}">${0}</h2>
+snippet h2#
+ <h2 id="${1}">${0}</h2>
+snippet h3
+ <h3>${0}</h3>
+snippet h3.
+ <h3 class="${1}">${0}</h3>
+snippet h3#
+ <h3 id="${1}">${0}</h3>
+snippet h4
+ <h4>${0}</h4>
+snippet h4.
+ <h4 class="${1}">${0}</h4>
+snippet h4#
+ <h4 id="${1}">${0}</h4>
+snippet h5
+ <h5>${0}</h5>
+snippet h5.
+ <h5 class="${1}">${0}</h5>
+snippet h5#
+ <h5 id="${1}">${0}</h5>
+snippet h6
+ <h6>${0}</h6>
+snippet h6.
+ <h6 class="${1}">${0}</h6>
+snippet h6#
+ <h6 id="${1}">${0}</h6>
+snippet head
+ <head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+
+ <title>${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}</title>
+ ${0}
+ </head>
+snippet header
+ <header>
+ ${0}
+ </header>
+snippet header.
+ <header class="${1}">
+ ${0}
+ </header>
+snippet header#
+ <header id="${1}">
+ ${0}
+ </header>
+snippet hgroup
+ <hgroup>
+ ${0}
+ </hgroup>
+snippet hgroup.
+ <hgroup class="${1}>
+ ${0}
+ </hgroup>
+snippet hr
+ <hr />
+snippet html
+ <html>
+ ${0}
+ </html>
+snippet xhtml
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ ${0}
+ </html>
+snippet html5
+ <!DOCTYPE html>
+ <html>
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width" />
+ <title>${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}</title>
+ ${2:link}
+ </head>
+ <body>
+ ${0:body}
+ </body>
+ </html>
+snippet html5l
+ <!DOCTYPE html>
+ <html lang="${1:es}">
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width" />
+ <title>${2:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}</title>
+ ${3:link}
+ </head>
+ <body>
+ ${0:body}
+ </body>
+ </html>
+snippet i
+ <i>${0}</i>
+snippet iframe
+ <iframe src="${1}" frameborder="0"></iframe>
+snippet iframe.
+ <iframe class="${1}" src="${2}" frameborder="0"></iframe>
+snippet iframe#
+ <iframe id="${1}" src="${2}" frameborder="0"></iframe>
+snippet img
+ <img src="${1}" alt="${2}" />
+snippet img.
+ <img class="${1}" src="${2}" alt="${3}" />
+snippet img#
+ <img id="${1}" src="${2}" alt="${3}" />
+snippet input
+ <input type="${1:text/submit/hidden/button/image}" name="${2}" id="${3:$2}" value="${4}" />
+snippet input.
+ <input class="${1}" type="${2:text/submit/hidden/button/image}" name="${3}" id="${4:$3}" value="${5}" />
+snippet input:text
+ <input type="text" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:submit
+ <input type="submit" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:hidden
+ <input type="hidden" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:button
+ <input type="button" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:image
+ <input type="image" name="${1}" id="${2:$1}" src="${3}" alt="${4}" />
+snippet input:checkbox
+ <input type="checkbox" name="${1}" id="${2:$1}" />
+snippet input:radio
+ <input type="radio" name="${1}" id="${2:$1}" />
+snippet input:color
+ <input type="color" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:date
+ <input type="date" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:datetime
+ <input type="datetime" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:datetime-local
+ <input type="datetime-local" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:email
+ <input type="email" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:file
+ <input type="file" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:month
+ <input type="month" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:number
+ <input type="number" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:password
+ <input type="password" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:range
+ <input type="range" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:reset
+ <input type="reset" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:search
+ <input type="search" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:time
+ <input type="time" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:url
+ <input type="url" name="${1}" id="${2:$1}" value="${3}" />
+snippet input:week
+ <input type="week" name="${1}" id="${2:$1}" value="${3}" />
+snippet ins
+ <ins>${0}</ins>
+snippet kbd
+ <kbd>${0}</kbd>
+snippet label
+ <label for="${0:$1}">${1}</label>
+snippet label:i
+ <label for="${2:$1}">${1}</label>
+ <input type="${3:text/submit/hidden/button}" name="${4:$2}" id="${5:$2}" value="${6}" />
+snippet label:s
+ <label for="${2:$1}">${1}</label>
+ <select name="${3:$2}" id="${4:$2}">
+ <option value="${5}">${0:$5}</option>
+ </select>
+snippet legend
+ <legend>${0}</legend>
+snippet legend+
+ <legend><span>${0}</span></legend>
+snippet li
+ <li>${0}</li>
+snippet li.
+ <li class="${1}">${0}</li>
+snippet li+
+ <li>${1}</li>
+ li+
+snippet lia
+ <li><a href="${0:#}">${1}</a></li>
+snippet lia+
+ <li><a href="${2:#}">${1}</a></li>
+ lia+
+snippet link
+ <link rel="${1}" href="${2}" title="${3}" type="${4}" />
+snippet link:atom
+ <link rel="alternate" href="${1:atom.xml}" title="Atom" type="application/atom+xml" />
+snippet link:s
+ <link rel="stylesheet" href="${1:style.css}" />
+snippet link:css
+ <link rel="stylesheet" href="${1:style.css}" type="text/css" media="${2:all}" />
+snippet link:favicon
+ <link rel="shortcut icon" href="${1:favicon.ico}" type="image/x-icon" />
+snippet link:rss
+ <link rel="alternate" href="${1:rss.xml}" title="RSS" type="application/atom+xml" />
+snippet link:touch
+ <link rel="apple-touch-icon" href="${1:favicon.png}" />
+snippet main
+ <main role="main">
+ ${0}
+ </main>
+snippet map
+ <map name="${1}">
+ ${0}
+ </map>
+snippet map.
+ <map class="${1}" name="${2}">
+ ${0}
+ </map>
+snippet map#
+ <map name="${1}" id="${2:$1}>
+ ${0}
+ </map>
+snippet map+
+ <map name="${1}">
+ <area shape="${2}" coords="${3}" href="${4}" alt="${5}" />${6}
+ </map>
+snippet mark
+ <mark>${0}</mark>
+snippet menu
+ <menu>
+ ${0}
+ </menu>
+snippet menu:c
+ <menu type="context">
+ ${0}
+ </menu>
+snippet menu:t
+ <menu type="toolbar">
+ ${0}
+ </menu>
+snippet meta
+ <meta http-equiv="${1}" content="${2}" />
+snippet meta:s
+ <meta ${0} />
+snippet meta:d
+ <meta name="description" content="${0}" />
+snippet meta:compat
+ <meta http-equiv="X-UA-Compatible" content="IE=${1:7,8,edge}" />
+snippet meta:refresh
+ <meta http-equiv="refresh" content="text/html;charset=UTF-8" />
+snippet meta:utf
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
+snippet meter
+ <meter>${0}</meter>
+snippet nav
+ <nav>
+ ${0}
+ </nav>
+snippet nav.
+ <nav class="${1}">
+ ${0}
+ </nav>
+snippet nav#
+ <nav id="${1}">
+ ${0}
+ </nav>
+snippet noscript
+ <noscript>
+ ${0}
+ </noscript>
+snippet object
+ <object data="${1}" type="${2}">
+ ${3}
+ </object>
+# Embed QT Movie
+snippet movie
+ <object width="$2" height="$3" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
+ codebase="http://www.apple.com/qtactivex/qtplugin.cab">
+ <param name="src" value="$1" />
+ <param name="controller" value="$4" />
+ <param name="autoplay" value="$5" />
+ <embed src="${1:movie.mov}"
+ width="${2:320}" height="${3:240}"
+ controller="${4:true}" autoplay="${5:true}"
+ scale="tofit" cache="true"
+ pluginspage="http://www.apple.com/quicktime/download/" />
+ </object>
+snippet ol
+ <ol>
+ ${0}
+ </ol>
+snippet ol.
+ <ol class="${1}">
+ ${0}
+ </ol>
+snippet ol#
+ <ol id="${1}">
+ ${0}
+ </ol>
+snippet ol+
+ <ol>
+ <li>${1}</li>
+ li+${0}
+ </ol>
+snippet opt
+ <option value="${1}">${0:$1}</option>
+snippet opt+
+ <option value="${1}">${2:$1}</option>
+ opt+${0}
+snippet optt
+ <option>${0}</option>
+snippet optgroup
+ <optgroup>
+ <option value="${1}">${2:$1}</option>
+ opt+${0}
+ </optgroup>
+snippet output
+ <output>${0}</output>
+snippet p
+ <p>${0}</p>
+snippet p.
+ <p class="${1}">${0}</p>
+snippet p#
+ <p id="${1}">${0}</p>
+snippet param
+ <param name="${1}" value="${2}" />
+snippet pre
+ <pre>
+ ${0}
+ </pre>
+snippet progress
+ <progress>${0}</progress>
+snippet q
+ <q>${0}</q>
+snippet rp
+ <rp>${0}</rp>
+snippet rt
+ <rt>${0}</rt>
+snippet ruby
+ <ruby>
+ <rp><rt>${0}</rt></rp>
+ </ruby>
+snippet s
+ <s>${0}</s>
+snippet samp
+ <samp>
+ ${0}
+ </samp>
+snippet script
+ <script type="text/javascript" charset="utf-8">
+ ${0}
+ </script>
+snippet scripts
+ <script src="${0}.js"></script>
+snippet scriptt
+ <script type="${1}" id="${2}">
+ ${0}
+ </script>
+snippet scriptsrc
+ <script src="${0}.js" type="text/javascript" charset="utf-8"></script>
+snippet section
+ <section>
+ ${0}
+ </section>
+snippet section.
+ <section class="${1}">
+ ${0}
+ </section>
+snippet section#
+ <section id="${1}">
+ ${0}
+ </section>
+snippet select
+ <select name="${1}" id="${2:$1}">
+ ${0}
+ </select>
+snippet select.
+ <select name="${1}" id="${2:$1}" class="${3}>
+ ${0}
+ </select>
+snippet select+
+ <select name="${1}" id="${2:$1}">
+ <option value="${3}">${4:$3}</option>
+ opt+${0}
+ </select>
+snippet small
+ <small>${0}</small>
+snippet source
+ <source src="${1}" type="${2}" media="${0}" />
+snippet span
+ <span>${0}</span>
+snippet span.
+ <span class="${1}">${0}</span>
+snippet span#
+ <span id="${1}">${0}</span>
+snippet strong
+ <strong>${0}</strong>
+snippet style
+ <style type="text/css" media="${1:all}">
+ ${0}
+ </style>
+snippet sub
+ <sub>${0}</sub>
+snippet summary
+ <summary>
+ ${0}
+ </summary>
+snippet sup
+ <sup>${0}</sup>
+snippet table
+ <table>
+ ${0}
+ </table>
+snippet table.
+ <table class="${1}">
+ ${0}
+ </table>
+snippet table#
+ <table id="${1}">
+ ${0}
+ </table>
+snippet tbody
+ <tbody>
+ ${0}
+ </tbody>
+snippet td
+ <td>${0}</td>
+snippet td.
+ <td class="${1}">${0}</td>
+snippet td#
+ <td id="${1}">${0}</td>
+snippet td+
+ <td>${1}</td>
+ td+${0}
+snippet textarea
+ <textarea name="${1}" id="${2:$1}" rows="${3:8}" cols="${4:40}">${5}</textarea>
+snippet tfoot
+ <tfoot>
+ ${0}
+ </tfoot>
+snippet th
+ <th>${0}</th>
+snippet th.
+ <th class="${1}">${0}</th>
+snippet th#
+ <th id="${1}">${0}</th>
+snippet th+
+ <th>${1}</th>
+ th+${0}
+snippet thead
+ <thead>
+ ${0}
+ </thead>
+snippet time
+ <time datetime="${1}" pubdate="${2:$1}">${0:$1}</time>
+snippet title
+ <title>${0:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}</title>
+snippet tr
+ <tr>
+ ${0}
+ </tr>
+snippet tr+
+ <tr>
+ <td>${1}</td>
+ td+${0}
+ </tr>
+snippet track
+ <track src="${1}" srclang="${2}" label="${3}" default="${4:default} />${5}
+snippet ul
+ <ul>
+ ${0}
+ </ul>
+snippet ul.
+ <ul class="${1}">
+ ${0}
+ </ul>
+snippet ul#
+ <ul id="${1}">
+ ${0}
+ </ul>
+snippet ul+
+ <ul>
+ <li>${1}</li>
+ li+${0}
+ </ul>
+snippet var
+ <var>${0}</var>
+snippet video
+ <video src="${1} height="${2}" width="${3}" preload="${5:none}" autoplay="${6:autoplay}>${7}</video>
+snippet wbr
+ <wbr />
diff --git a/.config/micro/plug/snippets/snippets/ino.snippets b/.config/micro/plug/snippets/snippets/ino.snippets
new file mode 100644
index 0000000..77ee46f
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/ino.snippets
@@ -0,0 +1,106 @@
+snippet setup
+ void setup()
+ {
+ ${0}
+ Serial.begin(9600);
+ }
+
+snippet loop
+ void loop()
+ {
+ ${0}
+ }
+
+snippet inc
+ #include <${1}.h>
+
+# if
+snippet if
+ if (${1:/* condition */}) {
+ ${2}
+ }
+# else
+snippet el
+ else {
+ ${1}
+ }
+# else if
+snippet elif
+ else if (${1:/* condition */}) {
+ ${2}
+ }
+# ifi
+snippet ifi
+ if (${1:/* condition */}) ${2};
+
+# switch
+snippet switch
+ switch (${1:/* variable */}) {
+ case ${2:/* variable case */}:
+ ${3}
+ ${4:break;}${5}
+ default:
+ ${6}
+ }
+
+snippet case
+ case ${1:/* variable case */}:
+ ${2}
+ ${3:break;}
+
+# for
+snippet for
+ for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {
+ ${4}
+ }
+# for (custom)
+snippet forr
+ for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {
+ ${5}
+ }
+# while
+snippet wh
+ while (${1:/* condition */}) {
+ ${2}
+ }
+# do... while
+snippet do
+ do {
+ ${2}
+ } while (${1:/* condition */});
+##
+## Functions
+# function definition
+snippet fun
+ ${1:void} ${2:function_name}(${3})
+ {
+ ${4}
+ }
+
+## IO
+# pinMode OUTPUT
+snippet pinout
+ pinMode(${1}, OUTPUT);
+# pinMode INPUT
+snippet pinin
+ pinMode(${1}, INPUT);
+# digitalWrite HIGH
+snippet dwHigh
+ digitalWrite(${1}, HIGH);
+# digitalWrite LOW
+snippet dwLow
+ digitalWrite(${1}, LOW);
+# digitalRead
+snippet dr
+ digitalRead(${1});
+# serialRead
+snippet sr
+ serialRead();
+# serial.println
+snippet sp
+ serial.println(${1});
+
+
+# delay
+snippet dl
+ delay(${1});
diff --git a/.config/micro/plug/snippets/snippets/java.snippets b/.config/micro/plug/snippets/snippets/java.snippets
new file mode 100644
index 0000000..e40bbf5
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/java.snippets
@@ -0,0 +1,287 @@
+## Access Modifiers
+snippet po
+ protected ${0}
+snippet pu
+ public ${0}
+snippet pr
+ private ${0}
+##
+## Annotations
+snippet before
+ @Before
+ static void ${1:intercept}(${2:args}) { ${0} }
+snippet mm
+ @ManyToMany
+ ${0}
+snippet mo
+ @ManyToOne
+ ${0}
+snippet om
+ @OneToMany${1:(cascade=CascadeType.ALL)}
+ ${0}
+snippet oo
+ @OneToOne
+ ${1}
+##
+## Basic Java packages and import
+snippet im
+ import ${0}
+snippet j.b
+ java.beans.
+snippet j.i
+ java.io.
+snippet j.m
+ java.math.
+snippet j.n
+ java.net.
+snippet j.u
+ java.util.
+##
+## Class
+snippet cl
+ class ${1:`vim_snippets#Filename("$1", "untitled")`} ${0}
+snippet pcl
+ public class ${1:`vim_snippets#Filename("$1", "untitled")`} ${0}
+snippet in
+ interface ${1:`vim_snippets#Filename("$1", "untitled")`} ${2:extends Parent}
+snippet tc
+ public class ${1:`vim_snippets#Filename("$1")`} extends ${0:TestCase}
+##
+## Class Enhancements
+snippet ext
+ extends ${0}
+snippet imp
+ implements ${0}
+##
+## Comments
+snippet /*
+ /*
+ * ${0}
+ */
+##
+## Constants
+snippet co
+ static public final ${1:String} ${2:var} = ${3};
+snippet cos
+ static public final String ${1:var} = "${2}";
+##
+## Control Statements
+snippet case
+ case ${1}:
+ ${0}
+snippet def
+ default:
+ ${0}
+snippet el
+ else
+snippet eif
+ else if (${1}) ${0}
+snippet if
+ if (${1}) ${0}
+snippet sw
+ switch (${1}) {
+ ${0}
+ }
+##
+## Create a Method
+snippet m
+ ${1:void} ${2:method}(${3}) ${4:throws }
+##
+## Create a Variable
+snippet v
+ ${1:String} ${2:var}${3: = null}${4};
+##
+## Declaration for ArrayList
+snippet d.al
+ List<${1:Object}> ${2:list} = new ArrayList<$1>();${0}
+## Declaration for HashMap
+snippet d.hm
+ Map<${1:Object}, ${2:Object}> ${3:map} = new HashMap<$1, $2>();${0}
+## Declaration for HashSet
+snippet d.hs
+ Set<${1:Object}> ${2:set} = new HashSet<$1>();${0}
+## Declaration for Stack
+snippet d.st
+ Stack<${1:Object}> ${2:stack} = new Stack<$1>();${0}
+##
+## Singleton Pattern
+snippet singlet
+ private static class Holder {
+ private static final ${1:`vim_snippets#Filename("$1")`} INSTANCE = new $1();
+ }
+
+ private $1() { }
+
+ public static $1 getInstance() {
+ return Holder.INSTANCE;
+ }
+##
+## Enhancements to Methods, variables, classes, etc.
+snippet ab
+ abstract ${0}
+snippet fi
+ final ${0}
+snippet st
+ static ${0}
+snippet sy
+ synchronized ${0}
+##
+## Error Methods
+snippet err
+ System.err.print("${0:Message}");
+snippet errf
+ System.err.printf("${1:Message}", ${0:exception});
+snippet errln
+ System.err.println("${0:Message}");
+##
+## Exception Handling
+snippet as
+ assert ${1:test} : "${2:Failure message}";
+snippet ae
+ assertEquals("${1:Failure message}", ${2:expected}, ${3:actual});
+snippet aae
+ assertArrayEquals("${1:Failure message}", ${2:expecteds}, ${3:actuals});
+snippet af
+ assertFalse("${1:Failure message}", ${2:condition});
+snippet at
+ assertTrue("${1:Failure message}", ${2:condition});
+snippet an
+ assertNull("${1:Failure message}", ${2:object});
+snippet ann
+ assertNotNull("${1:Failure message}", ${2:object});
+snippet ass
+ assertSame("${1:Failure message}", ${2:expected}, ${3:actual});
+snippet asns
+ assertNotSame("${1:Failure message}", ${2:expected}, ${3:actual});
+snippet fa
+ fail("${1:Failure message}");
+snippet ca
+ catch(${1:Exception} ${2:e}) ${0}
+snippet thr
+ throw ${0}
+snippet ths
+ throws ${0}
+snippet try
+ try {
+ ${0}
+ } catch(${1:Exception} ${2:e}) {
+ }
+snippet tryf
+ try {
+ ${0}
+ } catch(${1:Exception} ${2:e}) {
+ } finally {
+ }
+##
+## Find Methods
+snippet findall
+ List<${1:listName}> ${2:items} = ${1}.findAll();
+snippet findbyid
+ ${1:var} ${2:item} = ${1}.findById(${3});
+##
+## Javadocs
+snippet /**
+ /**
+ * ${0}
+ */
+snippet @au
+ @author `system("grep \`id -un\` /etc/passwd | cut -d \":\" -f5 | cut -d \",\" -f1")`
+snippet @br
+ @brief ${0:Description}
+snippet @fi
+ @file ${0:`vim_snippets#Filename("$1")`}.java
+snippet @pa
+ @param ${0:param}
+snippet @re
+ @return ${0:param}
+##
+## Logger Methods
+snippet debug
+ Logger.debug(${1:param});
+snippet error
+ Logger.error(${1:param});
+snippet info
+ Logger.info(${1:param});
+snippet warn
+ Logger.warn(${1:param});
+##
+## Loops
+snippet enfor
+ for (${1} : ${2}) ${0}
+snippet for
+ for (${1}; ${2}; ${3}) ${0}
+snippet wh
+ while (${1}) ${0}
+##
+## Main method
+snippet main
+ public static void main (String[] args) {
+ ${0}
+ }
+##
+## Print Methods
+snippet print
+ System.out.print("${0:Message}");
+snippet printf
+ System.out.printf("${1:Message}", ${0:args});
+snippet println
+ System.out.println(${0});
+snippet printlna
+ System.out.println(Arrays.toString(${0}));
+##
+## Render Methods
+snippet ren
+ render(${1:param});
+snippet rena
+ renderArgs.put("${1}", ${2});
+snippet renb
+ renderBinary(${1:param});
+snippet renj
+ renderJSON(${1:param});
+snippet renx
+ renderXml(${1:param});
+##
+## Setter and Getter Methods
+snippet set
+ ${1:public} void set${3:}(${2:String} ${0:}){
+ this.$4 = $4;
+ }
+snippet get
+ ${1:public} ${2:String} get${3:}(){
+ return this.${0:};
+ }
+##
+## Terminate Methods or Loops
+snippet re
+ return ${0}
+snippet br
+ break;
+##
+## Test Methods
+snippet t
+ public void test${1:Name}() throws Exception {
+ ${0}
+ }
+snippet test
+ @Test
+ public void test${1:Name}() throws Exception {
+ ${0}
+ }
+##
+## Utils
+snippet Sc
+ Scanner
+##
+## Miscellaneous
+snippet action
+ public static void ${1:index}(${2:args}) { ${0} }
+snippet rnf
+ notFound(${1:param});
+snippet rnfin
+ notFoundIfNull(${1:param});
+snippet rr
+ redirect(${1:param});
+snippet ru
+ unauthorized(${1:param});
+snippet unless
+ (unless=${1:param});
diff --git a/.config/micro/plug/snippets/snippets/javascript.snippets b/.config/micro/plug/snippets/snippets/javascript.snippets
new file mode 100644
index 0000000..db04e54
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/javascript.snippets
@@ -0,0 +1,286 @@
+# Functions
+
+# prototype
+snippet proto
+ ${1:class_name}.prototype.${2:method_name} = function(${3}) {
+ ${0}
+ };
+# Function
+snippet fun
+ function ${1:function_name}(${2}) {
+ ${0}
+ }
+# Anonymous Function
+snippet f "" w
+ function(${1}) {
+ ${0}
+ }
+# Anonymous Function assigned to variable
+snippet vaf
+ var ${1:function_name} = function(${2}) {
+ ${0}
+ };
+# Function assigned to variable
+snippet vf
+ var ${1:function_name} = function $1(${2}) {
+ ${0}
+ };
+# Immediate function
+snippet (f
+ (function(${1}) {
+ ${0}
+ }(${2}));
+# Minify safe iife
+snippet ;fe
+ ;(function(${1}) {
+ ${0}
+ }(${2}))
+# self-defining function
+snippet sdf
+ var ${1:function_name} = function (${2:argument}) {
+ ${3}
+
+ $1 = function ($2) {
+ ${0}
+ };
+ };
+
+# Flow control
+
+# if
+snippet if
+ if (${1:true}) {
+ ${0}
+ }
+# if ... else
+snippet ife
+ if (${1:true}) {
+ ${2}
+ } else {
+ ${0}
+ }
+# tertiary conditional
+snippet ter
+ ${1:/* condition */} ? ${2:/* if true */} : ${0:/* if false */}
+# switch
+snippet switch
+ switch (${1:expression}) {
+ case '${3:case}':
+ ${4}
+ break;
+ ${0}
+ default:
+ ${2}
+ }
+# case
+snippet case
+ case '${1:case}':
+ ${2}
+ break;
+ ${0}
+# try
+snippet try
+ try {
+ ${1}
+ } catch (${2:e}) {
+ ${0:/* handle error */}
+ }
+# try finally
+snippet tryf
+ try {
+ ${1}
+ } catch (${2:e}) {
+ ${0:/* handle error */}
+ } finally {
+ ${3:/* be executed regardless of the try / catch result*/}
+ }
+# throw Error
+snippet terr
+ throw new Error('${1:error message}')
+# return
+snippet ret
+ return ${0:result};
+
+# Loops
+
+# for loop
+snippet for
+ for (var ${2:i} = 0, l = ${1:arr}.length; $2 < l; $2++) {
+ var ${3:v} = $1[$2];${0:}
+ }
+# Reversed for loop
+snippet forr
+ for (var ${2:i} = ${1:arr}.length - 1; $2 >= 0; $2--) {
+ var ${3:v} = $1[$2];${0:}
+ }
+# While loop
+snippet wh
+ while (${1:/* condition */}) {
+ ${0}
+ }
+# Do while loop
+snippet do
+ do {
+ ${0}
+ } while (${1:/* condition */});
+# For in loop
+snippet fori
+ for (var ${1:prop} in ${2:object}) {
+ ${0:$2[$1]}
+ }
+
+# Objects
+
+# Object Method
+snippet :f
+ ${1:method_name}: function (${2:attribute}) {
+ ${3}
+ },
+# hasOwnProperty
+snippet has
+ hasOwnProperty(${0})
+# singleton
+snippet sing
+ function ${1:Singleton} (${2:argument}) {
+ // the cached instance
+ var instance;
+
+ // rewrite the constructor
+ $1 = function $1($2) {
+ return instance;
+ };
+
+ // carry over the prototype properties
+ $1.prototype = this;
+
+ // the instance
+ instance = new $1();
+
+ // reset the constructor pointer
+ instance.constructor = $1;
+
+ ${0}
+
+ return instance;
+ }
+# Crockford's object function
+snippet obj
+ function object(o) {
+ function F() {}
+ F.prototype = o;
+ return new F();
+ }
+# Define multiple properties
+snippet props
+ var ${1:my_object} = Object.defineProperties(
+ ${2:new Object()},
+ {
+ ${3:property} : {
+ get : function $1_$3_getter() {
+ // getter code
+ },
+ set : function $1_$3_setter(value) {
+ // setter code
+ },
+ value : ${4:value},
+ writeable : ${5:boolean},
+ enumerable : ${6:boolean},
+ configurable : ${0:boolean}
+ }
+ }
+ );
+# Define single property
+snippet prop
+ Object.defineProperty(
+ ${1:object},
+ '${2:property}',
+ {
+ get : function $1_$2_getter() {
+ // getter code
+ },
+ set : function $1_$2_setter(value) {
+ // setter code
+ },
+ value : ${3:value},
+ writeable : ${4:boolean},
+ enumerable : ${5:boolean},
+ configurable : ${0:boolean}
+ }
+ );
+
+# Documentation
+
+# docstring
+snippet /**
+ /**
+ * ${0:description}
+ *
+ */
+snippet @par
+ @param {${1:type}} ${2:name} ${0:description}
+snippet @ret
+ @return {${1:type}} ${0:description}
+# JSON
+
+# JSON.parse
+snippet jsonp
+ JSON.parse(${0:jstr});
+# JSON.stringify
+snippet jsons
+ JSON.stringify(${0:object});
+
+# DOM selectors
+
+# Get elements
+snippet get
+ getElementsBy${1:TagName}('${0}')
+# Get element
+snippet gett
+ getElementBy${1:Id}('${0}')
+# Elements by class
+snippet by.
+ ${1:document}.getElementsByClassName('${0:class}')
+# Element by ID
+snippet by#
+ ${1:document}.getElementById('${0:element ID}')
+# Query selector
+snippet qs
+ ${1:document}.querySelector('${0:CSS selector}')
+# Query selector all
+snippet qsa
+ ${1:document}.querySelectorAll('${0:CSS selector}')
+
+# Debugging
+snippet de
+ debugger;
+# console.log
+snippet cl
+ console.log(${0});
+# console.debug
+snippet cd
+ console.debug(${0});
+# console.error
+snippet ce
+ console.error(${0});
+# console.trace
+snippet ct
+ console.trace(${0:label});
+# console.time
+snippet ctime
+ console.time(${0:label});
+# console.assert
+snippet ca
+ console.assert(${1:expression}, ${0:obj});
+# console.dir
+snippet cdir
+ console.dir(${0:obj});
+
+# Misc
+
+# 'use strict';
+snippet us
+ 'use strict';
+
+# setTimeout function
+snippet timeout
+ setTimeout(function () {${0}}${2}, ${1:10});
diff --git a/.config/micro/plug/snippets/snippets/ledger.snippets b/.config/micro/plug/snippets/snippets/ledger.snippets
new file mode 100644
index 0000000..b401f61
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/ledger.snippets
@@ -0,0 +1,5 @@
+# Ledger <http://ledger-cli.org/>
+snippet ent
+ `strftime("%Y/%m/%d")` ${1:transaction}
+ ${2:account} ${3:value}
+ ${0:account}
diff --git a/.config/micro/plug/snippets/snippets/lfe.snippets b/.config/micro/plug/snippets/snippets/lfe.snippets
new file mode 100644
index 0000000..b716e6e
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/lfe.snippets
@@ -0,0 +1,18 @@
+snippet defmo
+ (defmodule ${1:`vim_snippets#Filename()`}
+ (export ${2:all}))
+ $0
+snippet def
+ (defun $1 ($2)
+ $0)
+snippet ltest
+ (defmodule ${1:`vim_snippets#Filename()`}
+ (behaviour ltest-unit)
+ (export all))
+
+ (include-lib "ltest/include/ltest-macros.lfe")
+
+ $0
+snippet test
+ (deftest $1
+ $0)
diff --git a/.config/micro/plug/snippets/snippets/lua.snippets b/.config/micro/plug/snippets/snippets/lua.snippets
new file mode 100644
index 0000000..b7de2de
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/lua.snippets
@@ -0,0 +1,21 @@
+snippet #!
+ #!/usr/bin/env lua
+ $1
+snippet local
+ local ${1:x} = ${0:1}
+snippet fun
+ function ${1:fname}(${2:...})
+ ${0:-- body}
+ end
+snippet for
+ for ${1:i}=${2:1},${3:10} do
+ ${0:print(i)}
+ end
+snippet forp
+ for ${1:i},${2:v} in pairs(${3:table_name}) do
+ ${0:-- body}
+ end
+snippet fori
+ for ${1:i},${2:v} in ipairs(${3:table_name}) do
+ ${0:-- body}
+ end
diff --git a/.config/micro/plug/snippets/snippets/makefile.snippets b/.config/micro/plug/snippets/snippets/makefile.snippets
new file mode 100644
index 0000000..332d6fc
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/makefile.snippets
@@ -0,0 +1,50 @@
+# base
+snippet base
+ .PHONY: clean, mrproper
+ CC = gcc
+ CFLAGS = -g -Wall
+
+ all: $1
+
+ %.o: %.c
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+ ${1:out}: $1.o
+ $(CC) $(CFLAGS) -o $@ $+
+
+ clean:
+ rm -f *.o core.*
+
+ mrproper: clean
+ rm -f $1
+# add
+snippet add
+ ${1:out}: $1.o
+ $(CC) $(CFLAGS) -o $@ $+
+# print
+snippet print
+ print-%: ; @echo $*=$($*)
+# ifeq
+snippet if
+ ifeq (${1:cond0}, ${2:cond1})
+ ${0}
+ endif
+# ifeq ... else ... endif
+snippet ife
+ ifeq (${1:cond0}, ${2:cond1})
+ ${3}
+ else
+ ${0}
+ endif
+# else ...
+snippet el
+ else
+ ${0}
+# .DEFAULT_GOAL := target
+snippet default
+ .DEFAULT_GOAL := ${1}
+# help target for self-documented Makefile
+snippet help
+ help: ## Prints help for targets with comments
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $\$1, $\$2}'
+ ${0}
diff --git a/.config/micro/plug/snippets/snippets/markdown.snippets b/.config/micro/plug/snippets/snippets/markdown.snippets
new file mode 100644
index 0000000..d258aa8
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/markdown.snippets
@@ -0,0 +1,139 @@
+# Markdown
+
+# Includes octopress (http://octopress.org/) snippets
+
+# The suffix `c` stands for "Clipboard".
+
+snippet [
+ [${1:text}](http://${2:address})
+snippet [*
+ [${1:link}](${2:`@*`})
+snippet [c
+ [${1:link}](${2:`@+`})
+snippet ["
+ [${1:text}](http://${2:address} "${3:title}")
+snippet ["*
+ [${1:link}](${2:`@*`} "${3:title}")
+snippet ["c
+ [${1:link}](${2:`@+`} "${3:title}")
+snippet [:
+ [${1:id}]: http://${2:url}
+
+snippet [:*
+ [${1:id}]: ${2:`@*`}
+
+snippet [:c
+ [${1:id}]: ${2:`@+`}
+
+snippet [:"
+ [${1:id}]: http://${2:url} "${3:title}"
+
+snippet [:"*
+ [${1:id}]: ${2:`@*`} "${3:title}"
+
+snippet [:"c
+ [${1:id}]: ${2:`@+`} "${3:title}"
+
+snippet ![
+ ![${1:alttext}](${2:/images/image.jpg})
+snippet ![*
+ ![${1:alt}](${2:`@*`})
+snippet ![c
+ ![${1:alt}](${2:`@+`})
+snippet !["
+ ![${1:alttext}](${2:/images/image.jpg} "${3:title}")
+snippet !["*
+ ![${1:alt}](${2:`@*`} "${3:title}")
+snippet !["c
+ ![${1:alt}](${2:`@+`} "${3:title}")
+snippet ![:
+ ![${1:id}]: ${2:url}
+
+snippet ![:*
+ ![${1:id}]: ${2:`@*`}
+
+snippet ![:"
+ ![${1:id}]: ${2:url} "${3:title}"
+
+snippet ![:"*
+ ![${1:id}]: ${2:`@*`} "${3:title}"
+
+snippet ![:"c
+ ![${1:id}]: ${2:`@+`} "${3:title}"
+
+snippet <
+ <http://${1:url}>
+snippet <*
+ <`@*`>
+snippet <c
+ <`@+`>
+snippet **
+ **${1:bold}**
+snippet __
+ __${1:bold}__
+snippet ===
+ `repeat('=', strlen(getline(line(".") - 1)) - strlen(getline('.')))`
+
+ ${0}
+snippet -
+ - ${0}
+snippet ---
+ `repeat('-', strlen(getline(line(".") - 1)) - strlen(getline('.')))`
+
+ ${0}
+
+snippet blockquote
+ {% blockquote %}
+ ${0:quote}
+ {% endblockquote %}
+
+snippet blockquote-author
+ {% blockquote ${1:author}, ${2:title} %}
+ ${0:quote}
+ {% endblockquote %}
+
+snippet blockquote-link
+ {% blockquote ${1:author} ${2:URL} ${3:link_text} %}
+ ${0:quote}
+ {% endblockquote %}
+
+snippet ```
+ \`\`\`
+ ${1:code}
+ \`\`\`
+
+# Language.
+snippet ```l
+ \`\`\`${1:language}
+ ${2:code}
+ \`\`\`
+
+snippet codeblock-short
+ {% codeblock %}
+ ${0:code_snippet}
+ {% endcodeblock %}
+
+snippet codeblock-full
+ {% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}
+ ${0:code_snippet}
+ {% endcodeblock %}
+
+snippet gist-full
+ {% gist ${1:gist_id} ${0:filename} %}
+
+snippet gist-short
+ {% gist ${0:gist_id} %}
+
+snippet img
+ {% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${0:alt_text} %}
+
+snippet youtube
+ {% youtube ${0:video_id} %}
+
+# The quote should appear only once in the text. It is inherently part of it.
+# See http://octopress.org/docs/plugins/pullquote/ for more info.
+
+snippet pullquote
+ {% pullquote %}
+ ${1:text} {" ${2:quote} "} ${0:text}
+ {% endpullquote %}
diff --git a/.config/micro/plug/snippets/snippets/perl.snippets b/.config/micro/plug/snippets/snippets/perl.snippets
new file mode 100644
index 0000000..2ed2932
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/perl.snippets
@@ -0,0 +1,363 @@
+# #!/usr/bin/perl
+snippet #!
+ #!/usr/bin/env perl
+
+# Hash Pointer
+snippet .
+ =>
+# Function
+snippet sub
+ sub ${1:function_name} {
+ ${0}
+ }
+# Conditional
+snippet if
+ if (${1}) {
+ ${0}
+ }
+# Conditional if..else
+snippet ife
+ if (${1}) {
+ ${2}
+ }
+ else {
+ ${0}
+ }
+# Conditional if..elsif..else
+snippet ifee
+ if (${1}) {
+ ${2}
+ }
+ elsif (${3}) {
+ ${4:# elsif...}
+ }
+ else {
+ ${0}
+ }
+snippet eif
+ elsif (${1}) {
+ ${0}
+ }
+# Conditional One-line
+snippet xif
+ ${1:expression} if ${2:condition};
+# Unless conditional
+snippet unless
+ unless (${1}) {
+ ${0}
+ }
+# Unless conditional One-line
+snippet xunless
+ ${1:expression} unless ${2:condition};
+# Try/Except
+snippet eval
+ local $@;
+ eval {
+ ${1:# do something risky...}
+ };
+ if (my $e = $@) {
+ ${0:# handle failure...}
+ }
+# While Loop
+snippet wh
+ while (${1}) {
+ ${0}
+ }
+# While Loop One-line
+snippet xwh
+ ${1:expression} while ${2:condition};
+# C-style For Loop
+snippet cfor
+ for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {
+ ${0}
+ }
+# For loop one-line
+snippet xfor
+ ${1:expression} for @${2:array};
+# Foreach Loop
+snippet for
+ foreach my $${1:x} (@${2:array}) {
+ ${0}
+ }
+# Foreach Loop One-line
+snippet fore
+ ${1:expression} foreach @${2:array};
+# Package
+snippet package
+ package ${1:`expand('%:p:s?.*lib/??:r:gs?/?::?')`};
+ use strict;
+ use warnings;
+
+ ${0}
+
+ 1;
+
+ __END__
+# Package syntax perl >= 5.14
+snippet packagev514
+ package ${1:`expand('%:p:s?.*lib/??:r:gs?/?::?')`} ${2:0.99};
+ use v5.14;
+ use warnings;
+
+ ${0}
+
+ 1;
+
+ __END__
+#moose
+snippet moose
+ use Moose;
+ use namespace::autoclean;
+ ${1:#}BEGIN {extends '${2:ParentClass}'};
+
+ ${0}
+# parent
+snippet parent
+ use parent qw(${0:Parent Class});
+# Read File
+snippet slurp
+ my $${1:var} = do { local $/; open my $file, '<', "${2:file}"; <$file> };
+ ${0}
+# strict warnings
+snippet strwar
+ use strict;
+ use warnings;
+# older versioning with perlcritic bypass
+snippet vers
+ ## no critic
+ our $VERSION = '${0:version}';
+ eval $VERSION;
+ ## use critic
+# new 'switch' like feature
+snippet switch
+ use feature 'switch';
+
+# Anonymous subroutine
+snippet asub
+ sub {
+ ${0}
+ }
+
+
+
+# Begin block
+snippet begin
+ BEGIN {
+ ${0}
+ }
+
+# call package function with some parameter
+snippet pkgmv
+ __PACKAGE__->${1:package_method}(${0:var})
+
+# call package function without a parameter
+snippet pkgm
+ __PACKAGE__->${0:package_method}()
+
+# call package "get_" function without a parameter
+snippet pkget
+ __PACKAGE__->get_${0:package_method}()
+
+# call package function with a parameter
+snippet pkgetv
+ __PACKAGE__->get_${1:package_method}(${0:var})
+
+# complex regex
+snippet qrx
+ qr/
+ ${0:regex}
+ /xms
+
+#simpler regex
+snippet qr/
+ qr/${0:regex}/x
+
+#given
+snippet given
+ given ($${1:var}) {
+ ${2:# cases}
+ ${0:# default}
+ }
+
+# switch-like case
+snippet when
+ when (${1:case}) {
+ ${0}
+ }
+
+# hash slice
+snippet hslice
+ @{ ${1:hash} }{ ${0:array} }
+
+
+# map
+snippet map
+ map { ${0: body } } ${1: @array } ;
+
+
+
+# Pod stub
+snippet ppod
+ =head1 NAME
+
+ ${1:ClassName} - ${2:ShortDesc}
+
+ =head1 SYNOPSIS
+
+ use $1;
+
+ ${3:# synopsis...}
+
+ =head1 DESCRIPTION
+
+ ${0:# longer description...}
+
+
+ =head1 INTERFACE
+
+
+ =head1 DEPENDENCIES
+
+
+ =head1 SEE ALSO
+
+
+# Heading for a subroutine stub
+snippet psub
+ =head2 ${1:MethodName}
+
+ ${0:Summary....}
+
+# Heading for inline subroutine pod
+snippet psubi
+ =head2 ${1:MethodName}
+
+ ${0:Summary...}
+
+
+ =cut
+# inline documented subroutine
+snippet subpod
+ =head2 $1
+
+ Summary of $1
+
+ =cut
+
+ sub ${1:subroutine_name} {
+ ${0}
+ }
+# Subroutine signature
+snippet parg
+ =over 2
+
+ =item
+ Arguments
+
+
+ =over 3
+
+ =item
+ C<${1:DataStructure}>
+
+ ${2:Sample}
+
+
+ =back
+
+
+ =item
+ Return
+
+ =over 3
+
+
+ =item
+ C<${0:...return data}>
+
+
+ =back
+
+
+ =back
+
+
+
+# Moose has
+snippet has
+ has ${1:attribute} => (
+ is => '${2:ro|rw}',
+ isa => '${3:Str|Int|HashRef|ArrayRef|etc}',
+ default => sub {
+ ${4:defaultvalue}
+ },
+ ${0:# other attributes}
+ );
+
+
+# override
+snippet override
+ override ${1:attribute} => sub {
+ ${2:# my $self = shift;};
+ ${0:# my ($self, $args) = @_;};
+ };
+
+
+# use test classes
+snippet tuse
+ use Test::More;
+ use Test::Deep; # (); # uncomment to stop prototype errors
+ use Test::Exception;
+
+# local test lib
+snippet tlib
+ use lib qw{ ./t/lib };
+
+#test methods
+snippet tmeths
+ $ENV{TEST_METHOD} = '${0:regex}';
+
+# runtestclass
+snippet trunner
+ use ${0:test_class};
+ $1->runtests();
+
+# Test::Class-style test
+snippet tsub
+ sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {
+ my $self = shift;
+ ${0}
+
+ }
+
+# Test::Routine-style test
+snippet trsub
+ test ${1:test_name} => { description => '${2:Description of test.}'} => sub {
+ my ($self) = @_;
+ ${0}
+ };
+
+#prep test method
+snippet tprep
+ sub prep${1:number}_${2:test_case} :Test(startup) {
+ my $self = shift;
+ ${0}
+ }
+
+# cause failures to print stack trace
+snippet debug_trace
+ use Carp; # 'verbose';
+ # cloak "die"
+ # warn "warning"
+ $SIG{'__DIE__'} = sub {
+ require Carp; Carp::confess
+ };
+
+snippet dump
+ use Data::Dump qw(dump);
+ warn dump ${1:variable}
+
+snippet subtest
+ subtest '${1: test_name}' => sub {
+ ${2}
+ };
diff --git a/.config/micro/plug/snippets/snippets/perl6.snippets b/.config/micro/plug/snippets/snippets/perl6.snippets
new file mode 100644
index 0000000..21ddf5b
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/perl6.snippets
@@ -0,0 +1,116 @@
+# shebang
+snippet #!
+ #!/usr/bin/env perl6
+
+# Hash Pointer
+snippet .
+ =>
+# Function
+snippet sub
+ sub ${1:function_name}(${2:Str $var}) {
+ ${3}
+ }
+snippet mul
+ multi ${1:function_name}(${2:Str $var}) {
+ ${3}
+ }
+# Conditional
+snippet if
+ if ${1} {
+ ${2}
+ }
+# Conditional if..else
+snippet ife
+ if ${1} {
+ ${2}
+ }
+ else {
+ ${3}
+ }
+snippet eif
+ elsif ${1) {
+ ${2}
+ }
+# Conditional One-line
+snippet xif
+ ${1:expression} if ${2:condition};
+# Unless conditional
+snippet unless
+ unless ${1} {
+ ${2}
+ }
+# Unless conditional One-line
+snippet xunless
+ ${1:expression} unless ${2:condition};
+# Ternary conditional
+snippet tc
+ ${1:condition} ?? ${2:value-if-true} !! ${3:value-if-false};
+# given - when (perl6 switch)
+snippet switch
+ given ${1:$var} {
+ when ${2:condition} {
+ ${3:# code block ...}
+ }
+ ${4}
+ default {
+ ${5}
+ }
+ }
+# 'loop' - C's for.
+snippet loop
+ loop (my ${1:$i} = 0; $$1 < ${2:count}; $$1++) {
+ ${3}
+ }
+# for loop
+snippet for
+ for ${1:@array} -> ${2:$variable} {
+ ${3}
+ }
+# While Loop
+snippet wh
+ while ${1} {
+ ${2}
+ }
+# Repeat while and repean until
+snippet rp
+ repeat {
+ ${1}
+ } ${2:while|until} ${3};
+# classes ..
+snippet cl
+ ${1:my} class ${2:ClassName} ${3:is|does Parent|Role}{
+ ${4}
+ }
+snippet has
+ has ${1:Type} ${2:$!identifier};
+snippet mth
+ method ${1:method_name}(${2:$attr}) {
+ ${3}
+ }
+snippet pmth
+ method ${1:!}${2:method_name}(${3:$attr}) {
+ ${4}
+ }
+snippet smth
+ submethod ${1:submethod_name}(${2:$attr}) {
+ ${3}
+ }
+# Tests
+snippet test
+ use v6;
+ use Test;
+ ${1:use lib 'lib';}
+
+ plan ${2:$num-tests};
+
+# IO
+snippet slurp
+ my ${1:$var} = "${2:filename}".IO.slurp;
+snippet rfile
+ for "${1:filename}".IO.lines -> $line {
+ ${2}
+ }
+snippet open
+ my $fh = open "${1:filename}", ${2::r|:w|:a};
+ ${3:# actions};
+ $fh.close;
diff --git a/.config/micro/plug/snippets/snippets/php.snippets b/.config/micro/plug/snippets/snippets/php.snippets
new file mode 100644
index 0000000..0644859
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/php.snippets
@@ -0,0 +1,663 @@
+snippet <?
+ <?php
+
+ ${0}
+snippet dst "declare(strict_types=1)"
+ declare(strict_types=${1:1});
+snippet ec
+ echo ${0};
+snippet <?e
+ <?php echo ${0} ?>
+# this one is for php5.4
+snippet <?=
+ <?=${0}?>
+snippet ?=
+ <?= ${0} ?>
+snippet ?
+ <?php ${0} ?>
+snippet ?f
+ <?php foreach ($${1:vars} as $${2:$var}): ?>
+ ${0}
+ <?php endforeach ?>
+snippet ?i
+ <?php if ($${1:var}): ?>
+ ${0}
+ <?php endif ?>
+snippet ns
+ namespace ${1:Foo\Bar\Baz};
+ ${0}
+snippet c
+ class ${1:`vim_snippets#Filename()`}
+ {
+ ${0}
+ }
+snippet i
+ interface ${1:`vim_snippets#Filename()`}
+ {
+ ${0}
+ }
+snippet t.
+ $this->
+snippet f
+ function ${1}(${3})
+ {
+ ${0}
+ }
+# method
+snippet m
+ ${1:protected} function ${2:foo}()
+ {
+ ${0}
+ }
+snippet sm "PHP Class Setter"
+ /**
+ * Sets the value of ${1:foo}
+ *
+ * @param ${2:string} $$1 ${3:description}
+ *
+ * @return ${4:`vim_snippets#Filename()`}
+ */
+ ${5:public} function set${6:$1}(${7:$2 }$$1)
+ {
+ $this->${8:$1} = $$1;
+
+ return $this;
+ }
+snippet gm "PHP Class Getter Setter"
+ /**
+ * Gets the value of ${1:foo}
+ *
+ * @return ${2:string}
+ */
+ ${3:public} function get${4:$1}()
+ {
+ return $this->${5:$1};
+ }
+#setter
+snippet $s
+ ${1:$foo}->set${2:Bar}(${0});
+#getter
+snippet $g
+ ${1:$foo}->get${0:Bar}();
+# Tertiary conditional
+snippet =?:
+ $${1:foo} = ${2:true} ? ${3:a} : ${0};
+snippet ?:
+ ${1:true} ? ${2:a} : ${0}
+snippet t "$retVal = (condition) ? a : b"
+ $${1:retVal} = (${2:condition}) ? ${3:a} : ${4:b};
+# Predefined variables
+snippet C
+ $_COOKIE['${1:variable}']
+snippet E
+ $_ENV['${1:variable}']
+snippet F
+ $_FILES['${1:variable}']
+snippet G
+ $_GET['${1:variable}']
+snippet P
+ $_POST['${1:variable}']
+snippet R
+ $_REQUEST['${1:variable}']
+snippet S
+ $_SERVER['${1:variable}']
+snippet SS
+ $_SESSION['${1:variable}']
+snippet get "get"
+ $_GET['${1}']
+snippet post "post"
+ $_POST['${1}']
+snippet session "session"
+ $_SESSION['${1}']
+# the following are old ones
+snippet inc
+ include '${1:file}';
+snippet inc1
+ include_once '${1:file}';
+snippet req
+ require '${1:file}';
+snippet req1
+ require_once '${1:file}';
+# Start Docblock
+snippet /*
+ /**
+ * ${0}
+ */
+# Class - post doc
+snippet doc_cp
+ /**
+ * ${1:undocumented class}
+ *
+ * @package ${2:default}
+ * @subpackage ${3:default}
+ * @author ${4:`g:snips_author`}
+ */
+# Class Variable - post doc
+snippet doc_vp
+ /**
+ * ${1:undocumented class variable}
+ *
+ * @var ${2:string}
+ */
+# Class Variable
+snippet doc_v
+ /**
+ * ${3:undocumented class variable}
+ *
+ * @var ${4:string}
+ */
+ ${1:var} $${2};
+# Class
+snippet doc_c
+ /**
+ * ${3:undocumented class}
+ *
+ * @package ${4:default}
+ * @subpackage ${5:default}
+ * @author ${6:`g:snips_author`}
+ */
+ ${1:}class ${2:}
+ {
+ ${0}
+ } // END $1class $2
+# Constant Definition - post doc
+snippet doc_dp
+ /**
+ * ${1:undocumented constant}
+ */
+# Constant Definition
+snippet doc_d
+ /**
+ * ${3:undocumented constant}
+ */
+ define(${1}, ${2});
+# Function - post doc
+snippet doc_fp
+ /**
+ * ${1:undocumented function}
+ *
+ * @return ${2:void}
+ * @author ${3:`g:snips_author`}
+ */
+# Function signature
+snippet doc_s
+ /**
+ * ${4:undocumented function}
+ *
+ * @return ${5:void}
+ * @author ${6:`g:snips_author`}
+ */
+ ${1}function ${2}(${3});
+# Function
+snippet doc_f
+ /**
+ * ${4:undocumented function}
+ *
+ * @return ${5:void}
+ * @author ${6:`g:snips_author`}
+ */
+ ${1}function ${2}(${3})
+ {${0}
+ }
+# Header
+snippet doc_h
+ /**
+ * ${1}
+ *
+ * @author ${2:`g:snips_author`}
+ * @version ${3:$Id$}
+ * @copyright ${4:$2}, `strftime('%d %B, %Y')`
+ * @package ${0:default}
+ */
+snippet doc_i "interface someClass {}"
+ /**
+ * $1
+ * @package ${2:default}
+ * @author ${3:`!v g:snips_author`}
+ **/
+ interface ${1:someClass}
+ {${4}
+ }
+snippet inheritdoc "@inheritdoc docblock"
+ /**
+ * {@inheritdoc}
+ */
+# Interface
+snippet interface
+ /**
+ * ${2:undocumented class}
+ *
+ * @package ${3:default}
+ * @author ${4:`g:snips_author`}
+ */
+ interface ${1:`vim_snippets#Filename()`}
+ {
+ ${0}
+ }
+# Trait
+snippet trait
+ /**
+ * ${2:undocumented class}
+ *
+ * @package ${3:default}
+ * @author ${4:`g:snips_author`}
+ */
+ trait ${1:`vim_snippets#Filename()`}
+ {
+ ${0}
+ }
+# class ...
+snippet class
+ /**
+ * ${1}
+ */
+ class ${2:`vim_snippets#Filename()`}
+ {
+ ${3}
+ /**
+ * ${4}
+ */
+ ${5:public} function ${6:__construct}(${7:argument})
+ {
+ ${0}
+ }
+ }
+snippet nc
+ namespace ${1:`substitute(substitute(expand("%:h"), '\v^\w+\/(\u)', '\1', ''), '\/', '\\\', 'g')`};
+
+ ${2:abstract }class ${3:`vim_snippets#Filename()`}
+ {
+ ${0}
+ }
+# define(...)
+snippet def "define('VARIABLE_NAME', 'definition')"
+ define('${1:VARIABLE_NAME}', ${2:'definition'});
+# defined(...)
+snippet def?
+ ${1}defined('${2}')
+snippet wh "while (condition) { ... }"
+ while (${1:/* condition */}) {
+ ${0}
+ }
+snippet do "do { ... } while (condition)"
+ do {
+ ${0}
+ } while (${1});
+snippet if "if (condition) { ... }"
+ if (${1}) {
+ ${0}
+ }
+snippet ifn "if (!condition) { ... }"
+ if (!${1}) {
+ ${2}
+ }
+snippet ifil "<?php if (condition): ?> ... <?php endif; ?>"
+ <?php if (${1}): ?>
+ ${0}
+ <?php endif; ?>
+snippet ife "if (cond) { ... } else { ... }"
+ if (${1}) {
+ ${2}
+ } else {
+ ${3}
+ }
+ ${0}
+snippet ifeil "<?php if (condition): ?> ... <?php else: ?> ... <?php endif; ?>"
+ <?php if (${1}): ?>
+ ${2}
+ <?php else: ?>
+ ${3}
+ <?php endif; ?>
+ ${0}
+snippet el "else { ... }"
+ else {
+ ${0}
+ }
+snippet eif "elseif(condition) { ... }"
+ elseif (${1}) {
+ ${0}
+ }
+snippet switch "switch($var) { case 'xyz': ... default: .... }"
+ switch ($${1:variable}) {
+ case '${2:value}':
+ ${3}
+ break;
+ ${0}
+ default:
+ ${4}
+ break;
+ }
+snippet case "case 'value': ... break"
+ case '${1:value}':
+ ${2}
+ break;
+snippet for "for ($i = 0; $i < $count; $i++) { ... }"
+ for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {
+ ${0}
+ }
+snippet foreach "foreach ($var as $value) { .. }"
+ foreach ($${1:variable} as $${2:value}) {
+ ${0}
+ }
+snippet foreachil "<?php foreach ($var as $value): ?> ... <?php endforeach; ?>"
+ <?php foreach ($${1:variable} as $${2:value}): ?>
+ ${0}
+ <?php endforeach; ?>
+snippet foreachk "foreach ($var as $key => $value) { .. }"
+ foreach ($${1:variable} as $${2:key} => $${3:value}) {
+ ${0}
+ }
+snippet foreachkil "<?php foreach ($var as $key => $value): ?> ... <?php endforeach; ?>"
+ <?php foreach ($${1:variable} as $${2:key} => $${3:value}): ?>
+ ${0:<!-- html... -->}
+ <?php endforeach; ?>
+snippet array "$... = array(...)"
+ $${1:arrayName} = array('${2}' => ${3});
+snippet try "try { ... } catch (Exception $e) { ... }"
+ try {
+ ${0}
+ } catch (${1:Exception} $e) {
+ }
+# lambda with closure
+snippet lambda
+ ${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) {
+ ${0}
+ };
+# pre_dump();
+snippet pd
+ echo '<pre>'; var_dump(${0}); echo '</pre>';
+# pre_dump(); die();
+snippet pdd
+ echo '<pre>'; var_dump(${1}); echo '</pre>'; die(${0:});
+snippet vd
+ var_dump(${0});
+snippet vdd
+ var_dump(${1}); die(${0:});
+snippet pr
+ print_r(${0});
+snippet prs
+ print_r(${0}, 1);
+snippet vdf
+ error_log(print_r($${1:foo}, true), 3, '${2:/tmp/debug.log}');
+snippet http_redirect
+ header ("HTTP/1.1 301 Moved Permanently");
+ header ("Location: ".URL);
+ exit();
+snippet log "error_log(var_export($var, true));"
+ error_log(var_export(${1}, true));
+snippet var "var_export($var)"
+ var_export(${1});
+snippet ve "Dumb debug helper in HTML"
+ echo '<pre>' . var_export(${1}, 1) . '</pre>';
+snippet pc "Dumb debug helper in cli"
+ var_export($1);$0
+# Getters & Setters
+snippet gs "PHP Class Getter Setter"
+ /**
+ * Gets the value of ${1:foo}
+ *
+ * @return ${2:string}
+ */
+ public function get${3:$1}()
+ {
+ return $this->${4:$1};
+ }
+
+ /**
+ * Sets the value of $1
+ *
+ * @param $2 $$1 ${5:description}
+ *
+ * @return ${6:`vim_snippets#Filename()`}
+ */
+ public function set$3(${7:$2 }$$1)
+ {
+ $this->$4 = $$1;
+ return $this;
+ }
+# anotation, get, and set, useful for doctrine
+snippet ags
+ /**
+ * ${1:description}
+ *
+ * @${0}
+ */
+ ${2:protected} $${3:foo};
+
+ public function get${4:$3}()
+ {
+ return $this->$3;
+ }
+
+ public function set$4(${5:$4 }$${6:$3})
+ {
+ $this->$3 = $$6;
+ return $this;
+ }
+snippet rett
+ return true;
+snippet retf
+ return false;
+snippet am
+ $${1:foo} = array_map(function($${2:v}) {
+ ${0}
+ return $$2;
+ }, $$1);
+snippet aw
+ array_walk($${1:foo}, function(&$${2:v}, $${3:k}) {
+ $$2 = ${0};
+ });
+# static var assign once
+snippet static_var
+ static $${1} = null;
+ if (is_null($$1)){
+ $$1 = ${2};
+ }
+snippet CSVWriter
+ <?php
+
+ class CSVWriter {
+ public function __construct($file_or_handle, $sep = "\t", $quot = '"'){
+ $args = func_get_args();
+ $mode = isset($opts['mode']) ? $opts['mode'] : 'w';
+
+ $this->f =
+ is_string($file_or_handle)
+ ? fopen($file_or_handle, $mode)
+ : $file_or_handle;
+
+ $this->fputcsv_args = array($this->f, null, $sep, $quot);
+
+ if (!$this->f) throw new Exception('bad file descriptor');
+ }
+
+ public function write($row){
+ $this->fputcsv_args[1] =& $row;
+ call_user_func_array('fputcsv', $this->fputcsv_args);
+ }
+
+ public function close(){
+ if (!is_null($this->f))
+ fclose($this->f);
+ $this->f = null;
+ }
+
+ public function __destruct(){
+ $this->close();
+ }
+
+ }
+snippet CSVIterator
+
+ // http://snipplr.com/view.php?codeview&id=1986 // modified
+ class CSVIterator implements Iterator
+ {
+ private $f;
+ private $curr;
+ private $rowCounter;
+
+ /* opts keys:
+ * row_size
+ * escape
+ * enclosure
+ * delimiter
+ */
+ public function __construct( $file_or_handle, $opts = array(4096, ',') )
+ {
+ $d = function($n) use(&$opts){ return isset($opts[$n]) ? $opts[$n] : false; };
+
+ $this->combine = $d('combine');
+ $this->headers = $d('headers');
+ $this->headerCheckFunction = $d('header_check_function');
+
+ $this->f =
+ is_string($file_or_handle)
+ ? fopen( $file_or_handle, 'r' )
+ : $file_or_handle;
+ if (!$this->f) throw new Exception('bad file descriptor');
+ $this->fgetcsv_args = array(
+ $this->f,
+ isset($opts['row_size']) ? $opts['row_size'] : 4096,
+ isset($opts['delimiter']) ? $opts['delimiter'] : ',',
+ isset($opts['enclosure']) ? $opts['enclosure'] : '"',
+ isset($opts['escape']) ? $opts['escape'] : '\\',
+ );
+ $this->start();
+ }
+
+ protected function readRow(){
+ $this->curr = call_user_func_array('fgetcsv', $this->fgetcsv_args );
+ $this->rowCounter++;
+ if ($this->rowCounter == 1){
+ $this->processHeader();
+ } elseif ($this->curr) {
+ $this->processRow();
+ }
+ }
+
+ public function processHeader(){
+ if ($this->headers || $this->combine){
+ $this->header = $this->curr;
+ if ($this->headerCheckFunction){
+ $f = $this->headerCheckFunction;
+ $f($this->header);
+ }
+ $this->readRow();
+ }
+ }
+
+ public function processRow(){
+ if ($this->combine)
+ $this->curr = array_combine($this->header, $this->curr);
+ }
+
+ public function start(){
+ $this->rowCounter = 0;
+ rewind( $this->f );
+ $this->readRow();
+ }
+
+ public function rewind()
+ {
+ $this->start();
+ }
+
+ public function current()
+ {
+ $curr = $this->curr;
+ $this->readRow();
+ return $curr;
+ }
+
+ public function key()
+ {
+ return $this->rowCounter;
+ }
+
+ public function next()
+ {
+ return $this->curr;
+ }
+
+ public function valid(){
+ if( !$this->next() )
+ {
+ fclose( $this->f );
+ return FALSE;
+ }
+ return TRUE;
+ }
+
+ } // end class
+# phpunit
+snippet ase "$this->assertEquals()"
+ $this->assertEquals(${1:expected}, ${2:actual});
+snippet asne "$this->assertNotEquals()"
+ $this->assertNotEquals(${1:expected}, ${2:actual});
+snippet asf "$this->assertFalse()"
+ $this->assertFalse(${1});
+snippet ast "$this->assertTrue()"
+ $this->assertTrue(${1});
+snippet asfex "$this->assertFileExists()"
+ $this->assertFileExists(${1:'path/to/file'});
+snippet asfnex "$this->assertFileNotExists()"
+ $this->assertFileNotExists(${1:'path/to/file'});
+snippet ascon "$this->assertContains()"
+ $this->assertContains(${1:$needle}, ${2:$haystack});
+snippet ashk "$this->assertArrayHasKey()"
+ $this->assertArrayHasKey(${1:$key}, ${2:$array});
+snippet asnhk "$this->assertArrayNotHasKey()"
+ this->assertArrayNotHasKey(${1:$key}, ${2:$array});
+snippet ascha "$this->assertClassHasAttribute()"
+ $this->assertClassHasAttribute(${1:$attributeName}, '${2:$className}');
+snippet asi "$this->assertInstanceOf(...)"
+ $this->assertInstanceOf(${1:expected}, ${2:actual});
+snippet test "public function testXYZ() { ... }"
+ public function test${1}()
+ {
+ ${0}
+ }
+snippet setup "protected function setUp() { ... }"
+ protected function setUp()
+ {
+ ${0}
+ }
+snippet teardown "protected function tearDown() { ... }"
+ protected function tearDown()
+ {
+ ${0}
+ }
+snippet exp "phpunit expects"
+ expects($this->${1:once}())
+ ->method('${2}')
+ ->with($this->equalTo(${3})${4})
+ ->will($this->returnValue(${5}));
+snippet testcmt "phpunit comment with group"
+ /**
+ * @group ${1}
+ */
+snippet fail "$this->fail()"
+ $this->fail(${1});
+snippet marki "$this->markTestIncomplete()"
+ $this->markTestIncomplete(${1});
+snippet marks "$this->markTestSkipped()"
+ $this->markTestSkipped(${1});
+# end of phpunit snippets
+snippet te "throw new Exception()"
+ throw new ${1:Exception}("${2:Error Processing Request}");
+snippet fpc "file_put_contents" b
+ file_put_contents(${1:file}, ${2:content}${3:, FILE_APPEND});$0
+snippet sr "str_replace"
+ str_replace(${1:search}, ${2:replace}, ${3:subject})$0
+snippet ia "in_array"
+ in_array(${1:needle}, ${2:haystack})$0
+snippet is "isset"
+ isset(${1:var})$0
+snippet isa "isset array"
+ isset($${1:array}[${2:key}])$0
+snippet in "is_null"
+ is_null($${1:var})$0
+snippet fe "file_exists"
+ file_exists(${1:file})$0
+snippet id "is_dir"
+ is_dir(${1:path})$0
diff --git a/.config/micro/plug/snippets/snippets/po.snippets b/.config/micro/plug/snippets/snippets/po.snippets
new file mode 100644
index 0000000..84916fa
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/po.snippets
@@ -0,0 +1,5 @@
+snippet msg
+ msgid "${1}"
+ msgstr "${2}"
+
+ ${0}
diff --git a/.config/micro/plug/snippets/snippets/puppet.snippets b/.config/micro/plug/snippets/snippets/puppet.snippets
new file mode 100644
index 0000000..9e9ceeb
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/puppet.snippets
@@ -0,0 +1,269 @@
+# Snippets for use with VIM and http://www.vim.org/scripts/script.php?script_id=2540
+#
+# Please contact R.I.Pienaar <rip@devco.net> for additions and feedback,
+# see it in action @ http://www.devco.net/archives/2009/09/22/vim_and_puppet.php
+
+# Header to match http://docs.puppetlabs.com/guides/style_guide.html#puppet-doc
+snippet classheader
+ # == Class: ${1:`vim_snippets#Filename(expand('%:p:s?.*modules/??:h:h'), 'name')`}
+ #
+ # ${2:Full description of class $1 here}
+ #
+ # === Parameters
+ #
+ # Document parameters here.
+ #
+ # [*parameter1*]
+ # Explanation of what this parameter affects and what it defaults to.
+ # e.g. "Specify one or more upstream ntp servers as an array."
+ #
+ # === Variables
+ #
+ # Here you should define a list of variables that this module would require.
+ #
+ # [*variable1*]
+ # Explanation of how this variable affects the funtion of this class and
+ # if it has a default. e.g. "The parameter enc_ntp_servers must be set by the
+ # External Node Classifier as a comma separated list of hostnames."
+ #
+ # === Examples
+ #
+ # class { '$1':
+ # parameter1 => [ 'just', 'an', 'example', ]
+ # }
+ #
+ # === Authors
+ #
+ # `g:snips_author` <`g:snips_email`>
+ #
+ # === Copyright
+ #
+ # Copyright `strftime("%Y")` `g:snips_author`
+ #
+ class $1 (${3}){
+ ${4}
+ }
+
+snippet defheader
+ # == Define: ${1:`vim_snippets#Filename(expand('%:p:s?.*modules/??:r:s?/manifests/?::?'), 'name')`}
+ #
+ # ${2:Full description of defined resource type $1 here}
+ #
+ # === Parameters
+ #
+ # Document parameters here
+ #
+ # [*namevar*]
+ # If there is a parameter that defaults to the value of the title string
+ # when not explicitly set, you must always say so. This parameter can be
+ # referred to as a "namevar," since it's functionally equivalent to the
+ # namevar of a core resource type.
+ #
+ # [*basedir*]
+ # Description of this variable. For example, "This parameter sets the
+ # base directory for this resource type. It should not contain a trailing
+ # slash."
+ #
+ # === Examples
+ #
+ # Provide some examples on how to use this type:
+ #
+ # $1 { 'namevar':
+ # basedir => '/tmp/src',
+ # }
+ #
+ # === Authors
+ #
+ # `g:snips_author` <`g:snips_email`>
+ #
+ # === Copyright
+ #
+ # Copyright `strftime("%Y")` `g:snips_author`
+ #
+ define $1(${3}) {
+ ${4}
+ }
+
+# Language Constructs
+snippet class
+ class ${1:`vim_snippets#Filename('', 'name')`} {
+ ${0}
+ }
+snippet node
+ node "${1:`vim_snippets#Filename('', 'fqdn')`}" {
+ ${0}
+ }
+snippet case
+ case $${1:variable} {
+ default: { ${0} }
+ }
+snippet ife
+ if $${1:variable} {
+ ${2}
+ } else {
+ ${0}
+ }
+snippet if
+ if $${1:variable} {
+ ${0}
+ }
+snippet ifd
+ if defined(${1:Resource}["${2:name}"]) {
+ ${0}
+ }
+snippet ifnd
+ if !defined(${1:Resource}["${2:name}"]) {
+ ${0}
+ }
+snippet el
+ else {
+ ${0}
+ }
+snippet ?
+ ? {
+ "${1}" => ${0}
+ }
+#
+# blocks etc and general syntax sugar
+snippet [
+ [ ${1} ]
+snippet >
+ ${1} => ${0}
+snippet p:
+ "puppet://puppet/${1:module name}/${0:file name}"
+#
+# Functions
+snippet alert
+ alert("${1:message}")
+snippet crit
+ crit("${1:message}")
+snippet debug
+ debug("${1:message}")
+snippet defined
+ defined(${1:Resource}["${2:name}"])
+snippet emerg
+ emerg("${1:message}")
+snippet extlookup Simple extlookup
+ extlookup("${1:variable}")
+snippet extlookup Extlookup with defaults
+ extlookup("${1:variable}", "${2:default}")
+snippet extlookup Extlookup with defaults and custom data file
+ extlookup("${1:variable}", "${2:default}", "${3:data source}")
+snippet fail
+ fail("${1:message}")
+snippet info
+ info("${1:message}")
+snippet inline_template
+ inline_template("<%= ${1} %>")
+snippet notice
+ notice("${1:message}")
+snippet realize
+ realize(${1:Resource}[${2:name}])
+snippet regsubst
+ regsubst(${1:hay stack}, ${2:needle}, "${3:replacement}")
+snippet inc
+ include ${1:classname}
+snippet split
+ split(${1:hay stack}, "${2:patten}")
+snippet versioncmp
+ versioncmp("${1:version}", "${2:version}")
+snippet warning
+ warning("${1:message}")
+#
+# Types
+snippet cron
+ cron { "${1:name}":
+ command => "${2}",
+ user => "${3:root}",
+ ${4} => ${0},
+ }
+
+snippet exec
+ exec { "${1:name}":
+ command => "${2:$1}",
+ user => "${3:root}",
+ ${4} => ${0},
+ }
+
+snippet user
+ user { "${1:user}":
+ ensure => present,
+ comment => "${2:$1}",
+ managehome => true,
+ home => "${0:/home/$1}",
+ }
+
+snippet group
+ group { "${1:group}":
+ ensure => ${0:present},
+ }
+
+snippet host
+ host { "${1:hostname}":
+ ip => ${0:127.0.0.1},
+ }
+
+snippet mailalias
+ mailalias { "${1:localpart}":
+ recipient => "${0:recipient}",
+ }
+
+snippet mount
+ mount { "${1:destination path}":
+ ensure => ${2:mounted},
+ device => "${0:device name or path}",
+ }
+
+snippet package
+ package { "${1:package name}":
+ ensure => ${0:present},
+ }
+
+snippet yumrepo
+ yumrepo { "${1:repo name}":
+ descr => "${2:$1}",
+ enabled => ${0:1},
+ }
+
+snippet define
+ define ${1} (${2}) {
+ ${0}
+ }
+
+snippet service
+ service { "${1:service}" :
+ ensure => running,
+ enable => true,
+ require => [ Package["${2:package}"], File["${3:file}"], ],
+ subscribe => [ File["${4:configfile1}"], File["${5:configfile2}"], Package["${6:package}"], ],
+ }
+
+snippet file
+ file { "${1:filename}" :
+ ensure => ${2:present},
+ owner => "${3:root}",
+ group => "${4:root}",
+ mode => "${5:0644}",
+ source => "puppet:///modules/${6:module}/${7:source}",
+ content => template("${8:module}/${9:template}"),
+ alias => "${10:alias}",
+ require => [ Package["${11:package}"], File["${12:file}"], ],
+ }
+
+snippet archive
+ archive { "${1:filename}" :
+ ensure => ${2:present},
+ url => "http://${3:url}",
+ extension => "${4:tgz}",
+ target => "${5:target}",
+ checksum => ${6:false},
+ src_target => "${7:/tmp}",
+ }
+
+snippet firewall
+ firewall { "${1:comment}" :
+ proto => ${2:tcp},
+ action => ${3:accept},
+ port => ${4},
+ }
+
diff --git a/.config/micro/plug/snippets/snippets/python.snippets b/.config/micro/plug/snippets/snippets/python.snippets
new file mode 100644
index 0000000..0f68acb
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/python.snippets
@@ -0,0 +1,242 @@
+snippet #!
+ #!/usr/bin/env python
+ # -*- coding: utf-8 -*-
+snippet #!3
+ #!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+snippet imp
+ import ${0:module}
+snippet uni
+ def __unicode__(self):
+ ${0:representation}
+snippet from
+ from ${1:package} import ${0:module}
+# Module Docstring
+snippet docs
+ """
+ File: ${1:`vim_snippets#Filename('$1.py', 'foo.py')`}
+ Author: `g:snips_author`
+ Email: `g:snips_email`
+ Github: `g:snips_github`
+ Description: ${0}
+ """
+
+snippet wh
+ while ${1:condition}:
+ ${0}
+# dowh - does the same as do...while in other languages
+snippet dowh
+ while True:
+ ${1}
+ if ${0:condition}:
+ break
+snippet with
+ with ${1:expr} as ${2:var}:
+ ${0}
+# New Class
+snippet cl
+ class ${1:ClassName}(${2:object}):
+ """${3:docstring for $1}"""
+ def __init__(self, ${4:arg}):
+ ${5:super($1, self).__init__()}
+ self.$4 = $4
+ ${0}
+# New Function
+snippet def
+ def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):
+ """${3:docstring for $1}"""
+ ${0}
+snippet deff
+ def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):
+ ${0}
+# New Method
+snippet defm
+ def ${1:mname}(self, ${2:arg}):
+ ${0}
+# New Property
+snippet property
+ def ${1:foo}():
+ doc = "${2:The $1 property.}"
+ def fget(self):
+ ${3:return self._$1}
+ def fset(self, value):
+ ${4:self._$1 = value}
+ def fdel(self):
+ ${0:del self._$1}
+ return locals()
+ $1 = property(**$1())
+# Ifs
+snippet if
+ if ${1:condition}:
+ ${0}
+snippet el
+ else:
+ ${0}
+snippet ei
+ elif ${1:condition}:
+ ${0}
+# For
+snippet for
+ for ${1:item} in ${2:items}:
+ ${0}
+# Encodes
+snippet cutf8
+ # -*- coding: utf-8 -*-
+snippet clatin1
+ # -*- coding: latin-1 -*-
+snippet cascii
+ # -*- coding: ascii -*-
+# Lambda
+snippet ld
+ ${1:var} = lambda ${2:vars} : ${0:action}
+snippet .
+ self.
+snippet try Try/Except
+ try:
+ ${1}
+ except ${2:Exception}, ${3:e}:
+ ${0:raise $3}
+snippet try Try/Except/Else
+ try:
+ ${1}
+ except ${2:Exception}, ${3:e}:
+ ${4:raise $3}
+ else:
+ ${0}
+snippet try Try/Except/Finally
+ try:
+ ${1}
+ except ${2:Exception}, ${3:e}:
+ ${4:raise $3}
+ finally:
+ ${0}
+snippet try Try/Except/Else/Finally
+ try:
+ ${1}
+ except ${2:Exception}, ${3:e}:
+ ${4:raise $3}
+ else:
+ ${5}
+ finally:
+ ${0}
+# if __name__ == '__main__':
+snippet ifmain
+ if __name__ == '__main__':
+ ${0:main()}
+# __magic__
+snippet _
+ __${1:init}__
+# python debugger (pdb)
+snippet pdb
+ import pdb
+ pdb.set_trace()
+# bpython debugger (bpdb)
+snippet bpdb
+ import bpdb
+ bpdb.set_trace()
+# ipython debugger (ipdb)
+snippet ipdb
+ import ipdb
+ ipdb.set_trace()
+# embed ipython itself
+snippet iem
+ import IPython
+ IPython.embed()
+# ipython debugger (pdbbb)
+snippet pdbbb
+ import pdbpp
+ pdbpp.set_trace()
+# remote python debugger (rpdb)
+snippet rpdb
+ import rpdb
+ rpdb.set_trace()
+# ptpython
+snippet ptpython
+ from ptpython.repl import embed
+ embed(globals(), locals(), vi_mode=${1:False}, history_filename=${2:None})
+# python console debugger (pudb)
+snippet pudb
+ import pudb
+ pudb.set_trace()
+# pdb in nosetests
+snippet nosetrace
+ from nose.tools import set_trace
+ set_trace()
+snippet pprint
+ import pprint
+ pprint.pprint(${1})
+snippet "
+ """${0:doc}
+ """
+# assertions
+snippet a=
+ self.assertEqual(${0}, ${1})
+# test function/method
+snippet test
+ def test_${1:description}(${2:`indent('.') ? 'self' : ''`}):
+ ${0}
+# test case
+snippet testcase
+ class ${1:ExampleCase}(unittest.TestCase):
+
+ def test_${2:description}(self):
+ ${0}
+snippet fut
+ from __future__ import ${0}
+#getopt
+snippet getopt
+ try:
+ # Short option syntax: "hv:"
+ # Long option syntax: "help" or "verbose="
+ opts, args = getopt.getopt(sys.argv[1:], "${1:short_options}", [${2:long_options}])
+
+ except getopt.GetoptError, err:
+ # Print debug info
+ print str(err)
+ ${3:error_action}
+
+ for option, argument in opts:
+ if option in ("-h", "--help"):
+ ${0}
+ elif option in ("-v", "--verbose"):
+ verbose = argument
+# logging
+# glog = get log
+snippet glog
+ import logging
+ logger = logging.getLogger(${0:__name__})
+snippet le
+ logger.error(${0:msg})
+# conflict with lambda=ld, therefor we change into Logger.debuG
+snippet lg
+ logger.debug(${0:msg})
+snippet lw
+ logger.warning(${0:msg})
+snippet lc
+ logger.critical(${0:msg})
+snippet li
+ logger.info(${0:msg})
+snippet epydoc
+ """${1:Description}
+
+ @param ${2:param}: ${3: Description}
+ @type $2: ${4: Type}
+
+ @return: ${5: Description}
+ @rtype : ${6: Type}
+
+ @raise e: ${0: Description}
+ """
+snippet dol
+ def ${1:__init__}(self, *args, **kwargs):
+ super(${0:ClassName}, self).$1(*args, **kwargs)
+snippet kwg
+ self.${1:var_name} = kwargs.get('$1', ${2:None})
+snippet lkwg
+ ${1:var_name} = kwargs.get('$1', ${2:None})
+snippet args
+ *args${1:,}${0}
+snippet kwargs
+ **kwargs${1:,}${0}
+snippet akw
+ *args, **kwargs${1:,}${0}
diff --git a/.config/micro/plug/snippets/snippets/r.snippets b/.config/micro/plug/snippets/snippets/r.snippets
new file mode 100644
index 0000000..7bdeeec
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/r.snippets
@@ -0,0 +1,131 @@
+snippet #!
+ #!/usr/bin/env Rscript
+
+# includes
+snippet lib
+ library(${0:package})
+snippet req
+ require(${0:package})
+snippet source
+ source('${0:file}')
+
+# conditionals
+snippet if
+ if (${1:condition}) {
+ ${0}
+ }
+snippet el
+ else {
+ ${0}
+ }
+snippet ei
+ else if (${1:condition}) {
+ ${0}
+ }
+
+# loops
+snippet wh
+ while(${1}) {
+ ${2}
+ }
+snippet for
+ for (${1:item} in ${2:list}) {
+ ${3}
+ }
+
+# functions
+snippet fun
+ ${1:name} <- function (${2:variables}) {
+ ${0}
+ }
+snippet ret
+ return(${0})
+
+# dataframes, lists, etc
+snippet df
+ ${1:name}[${2:rows}, ${0:cols}]
+snippet c
+ c(${0:items})
+snippet li
+ list(${0:items})
+snippet mat
+ matrix(${1:data}, nrow = ${2:rows}, ncol = ${0:cols})
+
+# apply functions
+snippet apply
+ apply(${1:array}, ${2:margin}, ${0:function})
+snippet lapply
+ lapply(${1:list}, ${0:function})
+snippet sapply
+ lapply(${1:list}, ${0:function})
+snippet vapply
+ vapply(${1:list}, ${2:function}, ${0:type})
+snippet mapply
+ mapply(${1:function}, ${0:...})
+snippet tapply
+ tapply(${1:vector}, ${2:index}, ${0:function})
+snippet rapply
+ rapply(${1:list}, ${0:function})
+
+# plyr functions
+snippet dd
+ ddply(${1:frame}, ${2:variables}, ${0:function})
+snippet dl
+ dlply(${1:frame}, ${2:variables}, ${0:function})
+snippet da
+ daply(${1:frame}, ${2:variables}, ${0:function})
+snippet d_
+ d_ply(${1:frame}, ${2:variables}, ${0:function})
+
+snippet ad
+ adply(${1:array}, ${2:margin}, ${0:function})
+snippet al
+ alply(${1:array}, ${2:margin}, ${0:function})
+snippet aa
+ aaply(${1:array}, ${2:margin}, ${0:function})
+snippet a_
+ a_ply(${1:array}, ${2:margin}, ${0:function})
+
+snippet ld
+ ldply(${1:list}, ${0:function})
+snippet ll
+ llply(${1:list}, ${0:function})
+snippet la
+ laply(${1:list}, ${0:function})
+snippet l_
+ l_ply(${1:list}, ${0:function})
+
+snippet md
+ mdply(${1:matrix}, ${0:function})
+snippet ml
+ mlply(${1:matrix}, ${0:function})
+snippet ma
+ maply(${1:matrix}, ${0:function})
+snippet m_
+ m_ply(${1:matrix}, ${0:function})
+
+# plot functions
+snippet pl
+ plot(${1:x}, ${0:y})
+snippet ggp
+ ggplot(${1:data}, aes(${0:aesthetics}))
+snippet img
+ ${1:(jpeg,bmp,png,tiff)}(filename = '${2:filename}', width = ${3}, height = ${4}, unit = '${5}')
+ ${0:plot}
+ dev.off()
+
+# statistical test functions
+snippet fis
+ fisher.test(${1:x}, ${0:y})
+snippet chi
+ chisq.test(${1:x}, ${0:y})
+snippet tt
+ t.test(${1:x}, ${0:y})
+snippet wil
+ wilcox.test(${1:x}, ${0:y})
+snippet cor
+ cor.test(${1:x}, ${0:y})
+snippet fte
+ var.test(${1:x}, ${0:y})
+snippet kvt
+ kv.test(${1:x}, ${0:y})
diff --git a/.config/micro/plug/snippets/snippets/rst.snippets b/.config/micro/plug/snippets/snippets/rst.snippets
new file mode 100644
index 0000000..b185245
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/rst.snippets
@@ -0,0 +1,98 @@
+# rst
+
+snippet :
+ :${1:field name}: ${0:field body}
+snippet *
+ *${1:Emphasis}* ${0}
+snippet **
+ **${1:Strong emphasis}** ${0}
+snippet _
+ \`${1:hyperlink-name}\`_
+ .. _\`$1\`: ${0:link-block}
+snippet =
+ ${1:Title}
+ =====${2:=}
+ ${0}
+snippet -
+ ${1:Title}
+ -----${2:-}
+ ${0}
+#some directive
+snippet img:
+ .. |${0:alias}| image:: ${1:img}
+snippet fig:
+ .. figure:: ${1:img}
+ :alt: ${0:alter text}
+
+ $2
+snippet cont:
+ .. contents::
+ ${0:content}
+snippet code:
+ .. code:: ${1:type}
+
+ ${0:write some code}
+snippet tip:
+ .. tip::
+ ${0:my tips}
+snippet not:
+ .. note::
+ ${0:my notes}
+snippet war:
+ .. warning::
+ ${0:attention!}
+snippet imp:
+ .. important::
+ ${0:this is importatnt}
+snippet att:
+ .. attention::
+ ${0:hey!}
+snippet dan:
+ .. danger::
+ ${0:ah!}
+snippet err:
+ .. error::
+ ${0:Error occur}
+snippet cau:
+ .. caution::
+ ${0:Watch out!}
+#Sphinx only
+snippet sid:
+ .. sidebar:: ${1:Title}
+
+ ${0}
+snippet tod:
+ .. todo::
+ ${0}
+snippet lis:
+ .. list-table:: ${0:Title}
+ :header-rows: 1
+ :stub-columns: 1
+
+ * - x1,y1
+ - x2,y1
+ - x3,y1
+ * - x1,y2
+ - x2,y2
+ - x3,y2
+ * - x1,y3
+ - x2,y3
+ - x3,y3
+
+snippet toc:
+ .. toctree::
+ :maxdepth: 2
+
+ ${0}
+snippet dow:
+ :download:`${0:text} <${1:path}>`
+snippet ref:
+ :ref:`${0:text} <${1:path}>`
+snippet doc:
+ :doc:`${0:text} <${1:path}>`
+# CJK optimize, CJK has no space between charaters
+snippet *c
+ \ *${1:Emphasis}*\ ${0}
+snippet **c
+ \ **${1:Strong emphasis}**\ ${0}
+
diff --git a/.config/micro/plug/snippets/snippets/ruby.snippets b/.config/micro/plug/snippets/snippets/ruby.snippets
new file mode 100644
index 0000000..772f464
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/ruby.snippets
@@ -0,0 +1,731 @@
+snippet enc
+ # encoding: utf-8
+snippet frozen
+ # frozen_string_literal: true
+snippet #!
+ #!/usr/bin/env ruby
+# New Block
+snippet =b
+ =begin rdoc
+ ${0}
+ =end
+snippet prot
+ protected
+
+ ${0}
+snippet priv
+ private
+
+ ${0}
+snippet y
+ :yields: ${0:arguments}
+snippet rb
+ #!/usr/bin/env ruby -wKU
+snippet beg
+ begin
+ ${0}
+ rescue ${1:Exception} => ${2:e}
+ end
+snippet req require
+ require '${1}'
+snippet reqr
+ require_relative '${1}'
+snippet #
+ # =>
+snippet case
+ case ${1:object}
+ when ${2:condition}
+ ${0}
+ end
+snippet when
+ when ${1:condition}
+ ${0}
+snippet def
+ def ${1:method_name}
+ ${0}
+ end
+snippet deft
+ def test_${1:case_name}
+ ${0}
+ end
+snippet descendants
+ class Class
+ def descendants
+ ObjectSpace.each_object(::Class).select { |klass| klass < self }
+ end
+ end
+snippet if
+ if ${1:condition}
+ ${0}
+ end
+snippet ife
+ if ${1:condition}
+ ${2}
+ else
+ ${0}
+ end
+snippet eif
+ elsif ${1:condition}
+ ${0}
+snippet ifee
+ if ${1:condition}
+ $2
+ elsif ${3:condition}
+ $4
+ else
+ $0
+ end
+snippet unless
+ unless ${1:condition}
+ ${0}
+ end
+snippet unlesse
+ unless ${1:condition}
+ $2
+ else
+ $0
+ end
+snippet unlesee
+ unless ${1:condition}
+ $2
+ elsif ${3:condition}
+ $4
+ else
+ $0
+ end
+snippet wh
+ while ${1:condition}
+ ${0}
+ end
+snippet for
+ for ${1:e} in ${2:c}
+ ${0}
+ end
+snippet until
+ until ${1:condition}
+ ${0}
+ end
+snippet cla class .. end
+ class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
+ ${0}
+ end
+snippet clai class .. initialize .. end
+ class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
+ def initialize(${2:args})
+ ${0}
+ end
+ end
+snippet cla< class .. < ParentClass .. initialize .. end
+ class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} < ${2:ParentClass}
+ def initialize(${3:args})
+ ${0}
+ end
+ end
+snippet blankslate class BlankSlate .. initialize .. end
+ class ${0:BlankSlate}
+ instance_methods.each { |meth| undef_method(meth) unless meth =~ /\A__/ }
+ end
+snippet claself class << self .. end
+ class << ${1:self}
+ ${0}
+ end
+# class .. < DelegateClass .. initialize .. end
+snippet cla-
+ class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} < DelegateClass(${2:ParentClass})
+ def initialize(${3:args})
+ super(${4:del_obj})
+
+ ${0}
+ end
+ end
+snippet mod module .. end
+ module ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
+ ${0}
+ end
+snippet mod module .. ClassMethods .. end
+ module ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
+ module ClassMethods
+ ${0}
+ end
+
+ module InstanceMethods
+
+ end
+
+ def self.included(receiver)
+ receiver.extend ClassMethods
+ receiver.send :include, InstanceMethods
+ end
+ end
+# attr_reader
+snippet r
+ attr_reader :${0:attr_names}
+# attr_writer
+snippet w
+ attr_writer :${0:attr_names}
+# attr_accessor
+snippet rw
+ attr_accessor :${0:attr_names}
+snippet atp
+ attr_protected :${0:attr_names}
+snippet ata
+ attr_accessible :${0:attr_names}
+snippet ana
+ accepts_nested_attributes_for :${0:association}
+# ivc == instance variable cache
+snippet ivc
+ @${1:variable_name} ||= ${0:cached_value}
+# include Enumerable
+snippet Enum
+ include Enumerable
+
+ def each(&block)
+ ${0}
+ end
+# include Comparable
+snippet Comp
+ include Comparable
+
+ def <=>(other)
+ ${0}
+ end
+# extend Forwardable
+snippet Forw-
+ extend Forwardable
+# def self
+snippet defs
+ def self.${1:class_method_name}
+ ${0}
+ end
+# def initialize
+snippet definit
+ def initialize(${1:args})
+ ${0}
+ end
+# def method_missing
+snippet defmm
+ def method_missing(meth, *args, &blk)
+ ${0}
+ end
+snippet defd
+ def_delegator :${1:@del_obj}, :${2:del_meth}, :${0:new_name}
+snippet defds
+ def_delegators :${1:@del_obj}, :${0:del_methods}
+snippet am
+ alias_method :${1:new_name}, :${0:old_name}
+snippet app
+ if __FILE__ == $PROGRAM_NAME
+ ${0}
+ end
+# usage_if()
+snippet usai
+ if ARGV.${1}
+ abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${0}
+ end
+# usage_unless()
+snippet usau
+ unless ARGV.${1}
+ abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${0}
+ end
+snippet array
+ Array.new(${1:10}) { |${2:i}| ${0} }
+snippet hash
+ Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${0} }
+snippet file File.foreach() { |line| .. }
+ File.foreach(${1:'path/to/file'}) { |${2:line}| ${0} }
+snippet file File.read()
+ File.read(${1:'path/to/file'})
+snippet Dir Dir.global() { |file| .. }
+ Dir.glob(${1:'dir/glob/*'}) { |${2:file}| ${0} }
+snippet Dir Dir[".."]
+ Dir[${1:'glob/**/*.rb'}]
+snippet dir
+ Filename.dirname(__FILE__)
+snippet deli
+ delete_if { |${1:e}| ${0} }
+snippet fil
+ fill(${1:range}) { |${2:i}| ${0} }
+# flatten_once()
+snippet flao
+ reduce(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2) }
+snippet zip
+ zip(${1:enums}) { |${2:row}| ${0} }
+# downto(0) { |n| .. }
+snippet dow
+ downto(${1:0}) { |${2:n}| ${0} }
+snippet ste
+ step(${1:2}) { |${2:n}| ${0} }
+snippet tim
+ times { |${1:n}| ${0} }
+snippet upt
+ upto(${1:1.0/0.0}) { |${2:n}| ${0} }
+snippet loo
+ loop { ${0} }
+snippet ea
+ each { |${1:e}| ${0} }
+snippet ead
+ each do |${1:e}|
+ ${0}
+ end
+snippet eab
+ each_byte { |${1:byte}| ${0} }
+snippet eac- each_char { |chr| .. }
+ each_char { |${1:chr}| ${0} }
+snippet eac- each_cons(..) { |group| .. }
+ each_cons(${1:2}) { |${2:group}| ${0} }
+snippet eai
+ each_index { |${1:i}| ${0} }
+snippet eaid
+ each_index do |${1:i}|
+ ${0}
+ end
+snippet eak
+ each_key { |${1:key}| ${0} }
+snippet eakd
+ each_key do |${1:key}|
+ ${0}
+ end
+snippet eal
+ each_line { |${1:line}| ${0} }
+snippet eald
+ each_line do |${1:line}|
+ ${0}
+ end
+snippet eap
+ each_pair { |${1:name}, ${2:val}| ${0} }
+snippet eapd
+ each_pair do |${1:name}, ${2:val}|
+ ${0}
+ end
+snippet eas-
+ each_slice(${1:2}) { |${2:group}| ${0} }
+snippet easd-
+ each_slice(${1:2}) do |${2:group}|
+ ${0}
+ end
+snippet eav
+ each_value { |${1:val}| ${0} }
+snippet eavd
+ each_value do |${1:val}|
+ ${0}
+ end
+snippet eawi
+ each_with_index { |${1:e}, ${2:i}| ${0} }
+snippet eawid
+ each_with_index do |${1:e}, ${2:i}|
+ ${0}
+ end
+snippet eawo
+ each_with_object(${1:init}) { |${2:e}, ${3:var}| ${0} }
+snippet eawod
+ each_with_object(${1:init}) do |${2:e}, ${3:var}|
+ ${0}
+ end
+snippet reve
+ reverse_each { |${1:e}| ${0} }
+snippet reved
+ reverse_each do |${1:e}|
+ ${0}
+ end
+snippet inj
+ inject(${1:init}) { |${2:mem}, ${3:var}| ${0} }
+snippet injd
+ inject(${1:init}) do |${2:mem}, ${3:var}|
+ ${0}
+ end
+snippet red
+ reduce(${1:init}) { |${2:mem}, ${3:var}| ${0} }
+snippet redd
+ reduce(${1:init}) do |${2:mem}, ${3:var}|
+ ${0}
+ end
+snippet map
+ map { |${1:e}| ${0} }
+snippet mapd
+ map do |${1:e}|
+ ${0}
+ end
+snippet mapwi-
+ enum_with_index.map { |${1:e}, ${2:i}| ${0} }
+snippet sor
+ sort { |a, b| ${0} }
+snippet sorb
+ sort_by { |${1:e}| ${0} }
+snippet ran
+ sort_by { rand }
+snippet all
+ all? { |${1:e}| ${0} }
+snippet any
+ any? { |${1:e}| ${0} }
+snippet cl
+ classify { |${1:e}| ${0} }
+snippet col
+ collect { |${1:e}| ${0} }
+snippet cold
+ collect do |${1:e}|
+ ${0}
+ end
+snippet det
+ detect { |${1:e}| ${0} }
+snippet detd
+ detect do |${1:e}|
+ ${0}
+ end
+snippet fet
+ fetch(${1:name}) { |${2:key}| ${0} }
+snippet fin
+ find { |${1:e}| ${0} }
+snippet find
+ find do |${1:e}|
+ ${0}
+ end
+snippet fina
+ find_all { |${1:e}| ${0} }
+snippet finad
+ find_all do |${1:e}|
+ ${0}
+ end
+snippet gre
+ grep(${1:/pattern/}) { |${2:match}| ${0} }
+snippet sub
+ ${1:g}sub(${2:/pattern/}) { |${3:match}| ${0} }
+snippet sca
+ scan(${1:/pattern/}) { |${2:match}| ${0} }
+snippet scad
+ scan(${1:/pattern/}) do |${2:match}|
+ ${0}
+ end
+snippet max
+ max { |a, b| ${0} }
+snippet min
+ min { |a, b| ${0} }
+snippet par
+ partition { |${1:e}| ${0} }
+snippet pard
+ partition do |${1:e}|
+ ${0}
+ end
+snippet rej
+ reject { |${1:e}| ${0} }
+snippet rejd
+ reject do |${1:e}|
+ ${0}
+ end
+snippet sel
+ select { |${1:e}| ${0} }
+snippet seld
+ select do |${1:e}|
+ ${0}
+ end
+snippet lam
+ lambda { |${1:args}| ${0} }
+snippet ->
+ -> { ${0} }
+snippet ->a
+ ->(${1:args}) { ${0} }
+# I'm pretty sure that ruby users expect do to expand to do .. end
+snippet do
+ do
+ ${0}
+ end
+# this is for one or more variables. typing a ", " is that cheap that it may
+# not be worth adding another snippet. should 0/1 placeholders change order?
+# its a good idea to think about the var name, so use it first
+snippet dov
+ do |${1:v}|
+ ${2}
+ end
+snippet :
+ ${1:key}: ${2:'value'}
+snippet ope
+ open('${1:path/or/url/or/pipe}', '${2:w}') { |${3:io}| ${0} }
+# path_from_here()
+snippet fpath
+ File.join(File.dirname(__FILE__), *['${1:rel path here}'])
+# unix_filter {}
+snippet unif
+ ARGF.each_line${1} do |${2:line}|
+ ${0}
+ end
+# option_parse {}
+snippet optp
+ require 'optparse'
+
+ options = { ${0:default: 'args'} }
+
+ ARGV.options do |opts|
+ opts.banner = "Usage: #{File.basename($PROGRAM_NAME)}"
+ end
+snippet opt
+ opts.on('-${1:o}', '--${2:long-option-name}', ${3:String}, '${4:Option description.}') do |${5:opt}|
+ ${0}
+ end
+snippet tc
+ require 'test/unit'
+
+ require '${1:library_file_name}'
+
+ class Test${2:$1} < Test::Unit::TestCase
+ def test_${3:case_name}
+ ${0}
+ end
+ end
+snippet ts
+ require 'test/unit'
+
+ require 'tc_${1:test_case_file}'
+ require 'tc_${2:test_case_file}'
+snippet as
+ assert ${1:test}, '${2:Failure message.}'
+snippet ase
+ assert_equal ${1:expected}, ${2:actual}
+snippet asne
+ assert_not_equal ${1:unexpected}, ${2:actual}
+snippet asid
+ assert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2**-20}
+snippet asi
+ assert_includes ${1:collection}, ${2:object}
+snippet asio
+ assert_instance_of ${1:ExpectedClass}, ${2:actual_instance}
+snippet asko
+ assert_kind_of ${1:ExpectedKind}, ${2:actual_instance}
+snippet asn
+ assert_nil ${1:instance}
+snippet asnn
+ assert_not_nil ${1:instance}
+snippet asm
+ assert_match(/${1:expected_pattern}/, ${2:actual_string})
+snippet asnm
+ assert_no_match(/${1:unexpected_pattern}/, ${2:actual_string})
+snippet aso
+ assert_operator ${1:left}, :${2:operator}, ${3:right}
+snippet asr
+ assert_raise ${1:Exception} { ${0} }
+snippet asrd
+ assert_raise ${1:Exception} do
+ ${0}
+ end
+snippet asnr
+ assert_nothing_raised ${1:Exception} { ${0} }
+snippet asnrd
+ assert_nothing_raised ${1:Exception} do
+ ${0}
+ end
+snippet asrt
+ assert_respond_to ${1:object}, :${2:method}
+snippet ass assert_same(..)
+ assert_same ${1:expected}, ${2:actual}
+snippet ass assert_send(..)
+ assert_send [${1:object}, :${2:message}, ${3:args}]
+snippet asns
+ assert_not_same ${1:unexpected}, ${2:actual}
+snippet ast
+ assert_throws :${1:expected}, -> { ${0} }
+snippet astd
+ assert_throws :${1:expected} do
+ ${0}
+ end
+snippet asnt
+ assert_nothing_thrown { ${0} }
+snippet asntd
+ assert_nothing_thrown do
+ ${0}
+ end
+snippet fl
+ flunk '${1:Failure message.}'
+# Benchmark.bmbm do .. end
+snippet bm-
+ TESTS = ${1:10_000}
+ Benchmark.bmbm do |results|
+ ${0}
+ end
+snippet rep
+ results.report('${1:name}:') { TESTS.times { ${0} } }
+# Marshal.dump(.., file)
+snippet Md
+ File.open('${1:path/to/file.dump}', 'wb') { |${2:file}| Marshal.dump(${3:obj}, $2) }
+# Mashal.load(obj)
+snippet Ml
+ File.open('${1:path/to/file.dump}', 'rb') { |${2:file}| Marshal.load($2) }
+# deep_copy(..)
+snippet deec
+ Marshal.load(Marshal.dump(${1:obj_to_copy}))
+snippet Pn-
+ PStore.new('${1:file_name.pstore}')
+snippet tra
+ transaction(${1:true}) { ${0} }
+# xmlread(..)
+snippet xml-
+ REXML::Document.new(File.read('${1:path/to/file}'))
+# xpath(..) { .. }
+snippet xpa
+ elements.each('${1://Xpath}') do |${2:node}|
+ ${0}
+ end
+# class_from_name()
+snippet clafn
+ split('::').inject(Object) { |par, const| par.const_get(const) }
+# singleton_class()
+snippet sinc
+ class << self; self end
+snippet nam
+ namespace :${1:`vim_snippets#Filename()`} do
+ ${0}
+ end
+snippet tas
+ desc '${1:Task description}'
+ task ${2:task_name: [:dependent, :tasks]} do
+ ${0}
+ end
+# block
+snippet b
+ { |${1:var}| ${0} }
+snippet begin
+ begin
+ fail 'A test exception.'
+ rescue Exception => e
+ puts e.message
+ puts e.backtrace.inspect
+ else
+ # other exception
+ ensure
+ # always executed
+ end
+
+#debugging
+snippet debug
+ require 'byebug'; byebug
+snippet debug19
+ require 'debugger'; debugger
+snippet debug18
+ require 'ruby-debug'; debugger
+snippet pry
+ require 'pry'; binding.pry
+snippet strf
+ strftime('${1:%Y-%m-%d %H:%M:%S %z}')${0}
+#
+# Minitest snippets
+#
+snippet mb
+ must_be ${0}
+snippet wb
+ wont_be ${0}
+snippet mbe
+ must_be_empty
+snippet wbe
+ wont_be_empty
+snippet mbio
+ must_be_instance_of ${0:Class}
+snippet wbio
+ wont_be_instance_of ${0:Class}
+snippet mbko
+ must_be_kind_of ${0:Class}
+snippet wbko
+ wont_be_kind_of ${0:Class}
+snippet mbn
+ must_be_nil
+snippet wbn
+ wont_be_nil
+snippet mbsa
+ must_be_same_as ${0:other}
+snippet wbsa
+ wont_be_same_as ${0:other}
+snippet mbsi
+ -> { ${0} }.must_be_silent
+snippet mbwd
+ must_be_within_delta ${1:0.1}, ${2:0.1}
+snippet wbwd
+ wont_be_within_delta ${1:0.1}, ${2:0.1}
+snippet mbwe
+ must_be_within_epsilon ${1:0.1}, ${2:0.1}
+snippet wbwe
+ wont_be_within_epsilon ${1:0.1}, ${2:0.1}
+snippet me
+ must_equal ${0:other}
+snippet we
+ wont_equal ${0:other}
+snippet mi
+ must_include ${0:what}
+snippet wi
+ wont_include ${0:what}
+snippet mm
+ must_match /${0:regex}/
+snippet wm
+ wont_match /${0:regex}/
+snippet mout
+ -> { ${1} }.must_output '${0}'
+snippet mra
+ -> { ${1} }.must_raise ${0:Exception}
+snippet mrt
+ must_respond_to :${0:method}
+snippet wrt
+ wont_respond_to :${0:method}
+snippet msend
+ must_send [ ${1:what}, :${2:method}, ${3:args} ]
+snippet mthrow
+ -> { throw :${1:error} }.must_throw :${2:error}
+##########################
+# Rspec snippets #
+##########################
+snippet desc
+ describe ${1:`substitute(substitute(vim_snippets#Filename(), '_spec$', '', ''), '\(_\|^\)\(.\)', '\u\2', 'g')`} do
+ ${0}
+ end
+snippet descm
+ describe '${1:#method}' do
+ ${0:pending 'Not implemented'}
+ end
+snippet cont
+ context '${1:message}' do
+ ${0}
+ end
+snippet bef
+ before :${1:each} do
+ ${0}
+ end
+snippet aft
+ after :${1:each} do
+ ${0}
+ end
+snippet let
+ let(:${1:object}) { ${0} }
+snippet let!
+ let!(:${1:object}) { ${0} }
+snippet subj
+ subject { ${0} }
+snippet s.
+ subject.${0:method}
+snippet spec
+ specify { subject.${0} }
+snippet exp
+ expect(${1:object}).to ${0}
+snippet expb
+ expect { ${1:object} }.to ${0}
+snippet experr
+ expect { ${1:object} }.to raise_error ${2:StandardError}, /${0:message_regex}/
+snippet shared
+ shared_examples ${0:'shared examples name'}
+snippet ibl
+ it_behaves_like ${0:'shared examples name'}
+snippet it
+ it '${1:spec_name}' do
+ ${0}
+ end
+snippet its
+ its(:${1:method}) { should ${0} }
+snippet is
+ it { should ${0} }
+snippet isn
+ it { should_not ${0} }
+snippet iexp
+ it { expect(${1:object}).${1} ${0} }
+snippet iexpb
+ it { expect { ${1:object} }.${1} ${0} }
+snippet iiexp
+ it { is_expected.to ${0} }
+snippet iiexpn
+ it { is_expected.not_to ${0} }
+snippet agg
+ aggregate_failures '${1:message}' do
+ ${0}
+ end
diff --git a/.config/micro/plug/snippets/snippets/rust.snippets b/.config/micro/plug/snippets/snippets/rust.snippets
new file mode 100644
index 0000000..11f6859
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/rust.snippets
@@ -0,0 +1,190 @@
+#################
+# Rust Snippets #
+#################
+
+# Functions
+snippet fn "Function definition"
+ fn ${1:function_name}(${2})${3} {
+ ${0}
+ }
+snippet pfn "Function definition"
+ pub fn ${1:function_name}(${2})${3} {
+ ${0}
+ }
+snippet test "Unit test function"
+ #[test]
+ fn ${1:test_function_name}() {
+ ${0}
+ }
+snippet bench "Bench function" b
+ #[bench]
+ fn ${1:bench_function_name}(b: &mut test::Bencher) {
+ b.iter(|| {
+ ${0}
+ })
+ }
+snippet new "Constructor function"
+ pub fn new(${2}) -> ${1:Name} {
+ $1 { ${3} }
+ }
+snippet main "Main function"
+ pub fn main() {
+ ${0}
+ }
+snippet let "let variable declaration with type inference"
+ let ${1} = ${2};
+snippet lett "let variable declaration with explicit type annotation"
+ let ${1}: ${2} = ${3};
+snippet letm "let mut variable declaration with type inference"
+ let mut ${1} = ${2};
+snippet lettm "let mut variable declaration with explicit type annotation"
+ let mut ${1}: ${2} = ${3};
+snippet pln "println!"
+ println!("${1}");
+snippet pln, "println! with format param"
+ println!("${1}", ${2});
+# Modules
+snippet ec "extern crate"
+ extern crate ${1:sync};
+snippet ecl "extern crate log"
+ #[macro_use]
+ extern crate log;
+snippet mod
+ mod ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} {
+ ${0}
+ } /* $1 */
+snippet testmod "Test module" b
+ #[cfg(test)]
+ mod tests {
+ use super::${1:*};
+
+ test${0}
+ }
+# Attributes
+snippet allow "allow lint attribute" b
+ #[allow(${1:unused_variable})]
+snippet cfg "cfg attribute" b
+ #[cfg(${1:target_os = "linux"})]
+snippet feat "feature attribute" b
+ #![feature(${1:plugin})]
+snippet der "#[derive(..)]" b
+ #[derive(${1:Debug})]
+snippet attr "#[..]" b
+ #[${1:inline}]
+snippet crate "Define create meta attributes"
+ // Crate name
+ #![crate_name = "${1:crate_name}"]
+ // Additional metadata attributes
+ #![desc = "${2:Descrption.}"]
+ #![license = "${3:BSD}"]
+ #![comment = "${4:Comment.}"]
+ // Specify the output type
+ #![crate_type = "${5:lib}"]
+# Common types
+snippet opt "Option<T>"
+ Option<${1:i32}>
+snippet res "Result<T, E>"
+ Result<${1:~str}, ${2:()}>
+# Control structures
+snippet if
+ if ${1} {
+ ${0}
+ }
+snippet ife "if / else"
+ if ${1} {
+ ${2}
+ } else {
+ ${0}
+ }
+snippet ifl "if let expression"
+ if let ${1} = ${2} {
+ ${0}
+ }
+snippet el "else"
+ else {
+ ${0}
+ }
+snippet eli "else if"
+ else if ${1} {
+ ${0}
+ }
+snippet mat "match pattern"
+ match ${1} {
+ ${2} => ${3}
+ }
+snippet case "Case clause of pattern match"
+ ${1:_} => ${2:expression}
+snippet loop "loop {}" b
+ loop {
+ ${0}
+ }
+snippet wh "while loop"
+ while ${1:condition} {
+ ${0}
+ }
+snippet for "for ... in ... loop"
+ for ${1:i} in ${2} {
+ ${0}
+ }
+# TODO commenting
+snippet todo "TODO comment"
+ // [TODO]: ${0:Description}
+snippet fixme "FIXME comment"
+ // FIXME: $0
+# Struct
+snippet st "Struct definition"
+ struct ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} {
+ ${0}
+ }
+snippet impl "Struct/Trait implementation"
+ impl ${1:Type/Trait}${2: for ${3:Type}} {
+ ${0}
+ }
+snippet stn "Struct with new constructor"
+ pub struct ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} {
+ ${0}
+ }
+
+ impl $1 {
+ pub fn new(${2}) -> $1 {
+ $1 { ${3} }
+ }
+ }
+snippet type "Type alias"
+ type ${1:NewName} = $2;
+snippet enum "enum definition"
+ enum ${1:Name} {
+ ${2},
+ }
+# Traits
+snippet trait "Trait definition"
+ trait ${1:Name} {
+ ${0}
+ }
+snippet drop "Drop trait implementation (destructor)"
+ impl Drop for ${1:Name} {
+ fn drop(&mut self) {
+ ${0}
+ }
+ }
+# Statics
+snippet ss "static string declaration"
+ static ${1}: &'static str = "${0}";
+snippet stat "static item declaration"
+ static ${1}: ${2:usize} = ${0};
+# Concurrency
+snippet scoped "spawn a scoped thread"
+ thread::scoped(${1:move }|| {
+ ${0}
+ });
+snippet spawn "spawn a thread"
+ thread::spawn(${1:move }|| {
+ ${0}
+ });
+snippet chan "Declare (Sender, Receiver) pair of asynchronous channel()"
+ let (${1:tx}, ${2:rx}): (Sender<${3:i32}>, Receiver<${4:i32}>) = channel();
+# Testing
+snippet as "assert!"
+ assert!(${1:predicate})
+snippet ase "assert_eq!"
+ assert_eq!(${1:expected}, ${2:actual})
diff --git a/.config/micro/plug/snippets/snippets/scala.snippets b/.config/micro/plug/snippets/snippets/scala.snippets
new file mode 100644
index 0000000..003081e
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/scala.snippets
@@ -0,0 +1,360 @@
+################################################################
+# © Copyright 2011 Konstantin Gorodinskiy. All Rights Reserved.#
+# Do What The Fuck You Want To Public License, Version 2. #
+# See http://sam.zoy.org/wtfpl/COPYING for more details. #
+################################################################
+# Scala lang
+#if
+snippet if
+ if (${1})
+ ${0}
+#if not
+snippet ifn
+ if (!${1})
+ ${0}
+#if-else
+snippet ife
+ if (${1})
+ ${2}
+ else
+ ${0}
+#if-else-if
+snippet ifelif
+ if (${1})
+ ${2}
+ else if (${3})
+ ${0}
+snippet eif
+ else if (${3})
+ ${0}
+#while loop
+snippet wh
+ while (${1:obj}) {
+ ${0}
+ }
+#for loop(classic)
+snippet for
+ for (${1:item} <- ${2:obj}) {
+ ${0}
+ }
+#for loop(indexed)
+snippet fori
+ for (${1:i} <- ${2:0} to ${3:obj}.length) {
+ ${0}
+ }
+#for comprehension
+snippet fory
+ for {
+ ${1:item} <- ${2:obj}
+ } yield ${0}
+#exceptions
+snippet try
+ try {
+ ${1}
+ } catch {
+ case e: FileNotFoundException => ${2}
+ case e: IOException => ${3}
+ } finally {
+ ${0}
+ }
+#match
+snippet match
+ ${1: obj} match {
+ case ${2:e} => ${3}
+ case _ => ${0}
+ }
+#case
+snippet case
+ case ${1:value} => ${0}
+############################
+# methods and arguments
+#
+#arg
+snippet arg
+ ${1:a}: ${2:T}${0:, arg}
+#args
+snippet args
+ ${1:args}: ${0:T}*
+#def
+snippet def
+ def ${1:name}(${2:arg}) = ${0:}
+#private def
+snippet prdef
+ private def ${1:name}(${2:arg}) = ${0:}
+#override def
+snippet ovdef
+ override def ${1:name}(${2:arg}) = ${0:}
+#first class function(see scalabook p 188)
+snippet fcf
+ (${1:a}: ${2:T}) => $1 ${0}
+snippet =>
+ ${1:name} => ${0}
+#recursion
+snippet rec
+ def ${1:name}(${0:arg}) =
+ if($2) $2
+ else $1($2)
+#curried method
+snippet crdef
+ def ${1:name}(${2:arg})(${3:arg}) = ${0:}
+#main method
+#check validity of T
+snippet main
+ def main(args: Array[String]):${1:T} = ${0:}
+############################
+# basic types(general purpose)
+# you might want to use basic types snippets
+
+#1
+snippet T Double
+ dbl
+#2
+snippet T Int
+ int
+#3
+snippet T Long
+ lng
+#4
+snippet T Char
+ chr
+#5
+snippet T String
+ str
+#6
+snippet T Array
+ arr
+#7
+snippet T Buffer
+ buf
+#8
+snippet T List
+ list
+#9
+snippet T Tuple
+ tpl
+#10
+snippet T Set
+ set
+#11
+snippet T Map
+ map
+#12
+snippet T HashSet
+ hset
+#13
+snippet T HashMap
+ hmap
+#14
+snippet T Boolean
+ bool
+#end
+
+#named snippets for types
+snippet bool
+ Boolean
+snippet anyr
+ AnyRef
+snippet dbl
+ Double
+snippet int
+ Int
+snippet str
+ String
+snippet chr
+ Char
+snippet lng
+ Long
+snippet arr
+ Array${1:[T]}${0:()}
+snippet buf
+ Buffer${1:[T]}${0:()}
+snippet list
+ List${1:[T]}${0:()}
+snippet tpl
+ Tuple${1:2}[${2:T},${0:T}]
+snippet set
+ Set${1:[T]}${0:()}
+snippet hset
+ HashSet${1:[T]}${0:()}
+snippet mhset
+ mutable.HashSet${1:[T]}${0:()}
+#for maps
+snippet keyval
+ ${1:key}->${2:val}${0:, keyval}
+snippet map
+ Map[${1:T},${2:T}]${0:(keyval)}
+snippet hmap
+ HashMap[${1:T},${2:T}]${0:(keyval)}
+snippet mmap
+ mutable.Map[${1:T},${2:T}]${0:(keyval)}
+snippet mhmap
+ mutable.HashMap[${1:T},${2:T}]${0:(keyval)}
+#TODO add TreeMap and TreeSet
+#asInstanceOf[]
+snippet as
+ ${1:name}.asInstanceOf[${2:T}]
+#isInstanceOf[]
+snippet is
+ ${1:name}.isInstanceOf[${2:T}]
+
+#collections methods
+
+#scope() with one arg
+snippet (a
+ (${1:a} => ${0})
+#scope() with two args
+snippet {(
+ {(${1:a},${2:b}) =>
+ ${0}
+ }
+#filter
+snippet filter
+ ${0:name}.filter (a
+#map function
+snippet mapf
+ ${0:name}.map (a
+#flatmap
+snippet flatmap
+ ${1:name}.flatMap${0:[T]}(a
+#fold left
+snippet fldl
+ ${1:name}.foldLeft(${0:first}) {(
+#fold right
+snippet fldr
+ ${1:name}.foldRight(${0:first}) {(
+#fold left operator(if u wanna reduce readability of ur code)
+#use wildcard symbols
+snippet /:
+ (${1:first}/:${2:name})(${0})
+#fold right operator
+snippet :\
+ (${1:first}:\${2:name})(${0})
+#reduce left
+snippet redl
+ ${1:name}.reduceLeft[${0:T}] {(
+#reduce right
+snippet redr
+ ${1:name}.reduceRight[${0:T}] {(
+#zipWithIndex(safe way).
+#see http://daily-scala.blogspot.com/2010/05/zipwithindex.html
+snippet zipwi
+ ${0:name}.view.zipWithIndex
+#split
+snippet spl
+ ${1:name}.split("${0:,}")
+#end
+snippet val
+ val ${1:name}${2:: T} = ${0:value}
+snippet var
+ var ${1:name}${2:: T} = ${0:value}
+############################
+# classes
+#
+#extends
+snippet extends
+ extends ${0:what}
+#with
+snippet with
+ with ${1:what}${0: with}
+#auxiliary constructor(a. this)
+snippet athis
+ def this(arg) = this(arg)
+#abstract class
+snippet abstract
+ abstract class ${1:name}${2:(arg)}${3: extends }${4: with} {
+ ${5:override def toString = "$1"}
+ ${0}
+ }
+#class
+snippet class
+ class ${1:name}${2:(arg)}${3: extends }${4: with} {
+ ${5:override def toString = "$1"}
+ ${0}
+ }
+#object
+snippet object
+ object ${1:name}${2:(arg)}${3: extends }${4: with} ${0:}
+#trait
+snippet trait
+ trait ${1:name}${2: extends }${3: with} {
+ ${0:}
+ }
+#class with trait Ordered(page 265)
+snippet ordered
+ class ${1:name}${2:(arg)} extends Ordered[$1] ${3: with} {
+ ${4:override def toString = "$1"}
+ def compare(that: $1) = ${5:this - that}
+ ${0}
+ }
+#case class
+snippet casecl
+ case class ${1:name}${2:(arg)}${3: extends }${4: with} ${0:}
+############################
+# testing
+#
+#scalatest imports
+snippet scalatest
+ ${1:import org.scalatest.Suite}
+ ${0:import org.scalatest.FunSuite}
+#assert
+snippet assert
+ assert(${1:a} === ${0:b})
+#ensuring(p 296)
+snippet ensuring
+ ifel ensuring(${1:a}==${0:b})
+#expect
+snippet expect
+ expect(${1:what}) {
+ ${0}
+ }
+#intercept
+snippet intercept
+ intercept[${1:IllegalArgumentException}] {
+ ${0}
+ }
+#test
+snippet test
+ test("${1:description}") {
+ ${0}
+ }
+#suite
+snippet suite
+ class ${0:name} extends Suite {
+ def test() {
+ }
+#funsuite
+snippet fsuite
+ class ${1:name} extends FunSuite {
+ test("${0:description}") {
+ }
+############################
+# SBT
+#
+snippet webproject
+ import sbt._
+
+ class ${1:Name}(info: ProjectInfo) extends DefaultWebProject(info) {
+ val liftVersion = "${0:2.3}"
+
+ override def libraryDependencies = Set(
+
+ ) ++ super.libraryDependencies
+
+ val snapshots = ScalaToolsSnapshots
+ }
+#depencies
+snippet liftjar
+ "net.liftweb" %% "${0:lib}" % liftVersion % "compile->default",
+snippet jettyjar
+ "org.mortbay.jetty" % "jetty" % "${0:version}" % "test->default",
+############################
+# Lift
+#
+#lift imports
+snippet liftimports
+ import _root_.net.liftweb.http._
+ import S._
+ import _root_.net.liftweb.util._
+ import Helpers._
+ import _root_.scala.xml._
+#TODO LIFT,SBT,WEB.XML,HTML snippets
diff --git a/.config/micro/plug/snippets/snippets/shell.snippets b/.config/micro/plug/snippets/snippets/shell.snippets
new file mode 100644
index 0000000..e470a2a
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/shell.snippets
@@ -0,0 +1,99 @@
+# Shebang. Executing bash via /usr/bin/env makes scripts more portable.
+snippet #!
+ #!/usr/bin/env sh
+
+snippet bash
+ #!/usr/bin/env bash
+
+snippet sbash
+ #!/usr/bin/env bash
+ set -euo pipefail
+ IFS=$'\n\t'
+
+snippet if
+ if [[ ${1:condition} ]]; then
+ ${0:#statements}
+ fi
+snippet elif
+ elif [[ ${1:condition} ]]; then
+ ${0:#statements}
+snippet for
+ for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do
+ ${0:#statements}
+ done
+snippet fori
+ for ${1:needle} in ${2:haystack} ; do
+ ${0:#statements}
+ done
+snippet wh
+ while [[ ${1:condition} ]]; do
+ ${0:#statements}
+ done
+snippet until
+ until [[ ${1:condition} ]]; do
+ ${0:#statements}
+ done
+snippet case
+ case ${1:word} in
+ ${2:pattern})
+ ${0};;
+ esac
+snippet go
+ while getopts '${1:o}' ${2:opts}
+ do
+ case $$2 in
+ ${3:o0})
+ ${0:#staments};;
+ esac
+ done
+# Set SCRIPT_DIR variable to directory script is located.
+snippet sdir
+ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+# getopt
+snippet getopt
+ __ScriptVersion="${1:version}"
+
+ #=== FUNCTION ================================================================
+ # NAME: usage
+ # DESCRIPTION: Display usage information.
+ #===============================================================================
+ function usage ()
+ {
+ echo "Usage : $${0:0} [options] [--]
+
+ Options:
+ -h|help Display this message
+ -v|version Display script version"
+
+ } # ---------- end of function usage ----------
+
+ #-----------------------------------------------------------------------
+ # Handle command line arguments
+ #-----------------------------------------------------------------------
+
+ while getopts ":hv" opt
+ do
+ case $opt in
+
+ h|help ) usage; exit 0 ;;
+
+ v|version ) echo "$${0:0} -- Version $__ScriptVersion"; exit 0 ;;
+
+ * ) echo -e "\n Option does not exist : $OPTARG\n"
+ usage; exit 1 ;;
+
+ esac # --- end of case ---
+ done
+ shift $(($OPTIND-1))
+snippet root
+ if [ \$(id -u) -ne 0 ]; then exec sudo \$0; fi
+
+snippet fun-sh
+ ${1:function_name}() {
+ ${0:#function_body}
+ }
+
+snippet fun
+ function ${1:function_name}() {
+ ${0:#function_body}
+ }
diff --git a/.config/micro/plug/snippets/snippets/sql.snippets b/.config/micro/plug/snippets/snippets/sql.snippets
new file mode 100644
index 0000000..556fae0
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/sql.snippets
@@ -0,0 +1,26 @@
+snippet tbl
+ create table ${1:table} (
+ ${0:columns}
+ );
+snippet col
+ ${1:name} ${2:type} ${3:default ''} ${0:not null}
+snippet ccol
+ ${1:name} varchar2(${2:size}) ${3:default ''} ${0:not null}
+snippet ncol
+ ${1:name} number ${3:default 0} ${0:not null}
+snippet dcol
+ ${1:name} date ${3:default sysdate} ${0:not null}
+snippet ind
+ create index ${0:$1_$2} on ${1:table}(${2:column});
+snippet uind
+ create unique index ${1:name} on ${2:table}(${0:column});
+snippet tblcom
+ comment on table ${1:table} is '${0:comment}';
+snippet colcom
+ comment on column ${1:table}.${2:column} is '${0:comment}';
+snippet addcol
+ alter table ${1:table} add (${2:column} ${0:type});
+snippet seq
+ create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${0:1};
+snippet s*
+ select * from ${0:table}
diff --git a/.config/micro/plug/snippets/snippets/tcl.snippets b/.config/micro/plug/snippets/snippets/tcl.snippets
new file mode 100644
index 0000000..9da703c
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/tcl.snippets
@@ -0,0 +1,96 @@
+# #!/usr/bin/env tclsh
+snippet #!
+ #!/usr/bin/env tclsh
+
+# Process
+snippet pro
+ proc ${1:function_name} {${2:args}} {
+ ${0}
+ }
+#xif
+snippet xif
+ ${1:expr}? ${2:true} : ${0:false}
+# Conditional
+snippet if
+ if {${1}} {
+ ${0}
+ }
+# Conditional if..else
+snippet ife
+ if {${1}} {
+ ${2}
+ } else {
+ ${0:# else...}
+ }
+snippet eif
+ elseif {${1}} {
+ ${0}
+ }
+# Conditional if..elsif..else
+snippet ifee
+ if {${1}} {
+ ${2}
+ } elseif {${3}} {
+ ${4:# elsif...}
+ } else {
+ ${0:# else...}
+ }
+# If catch then
+snippet ifc
+ if { [catch {${1:#do something...}} ${2:err}] } {
+ ${0:# handle failure...}
+ }
+# Catch
+snippet catch
+ catch {${1}} ${2:err} ${0:options}
+# While Loop
+snippet wh
+ while {${1}} {
+ ${0}
+ }
+# For Loop
+snippet for
+ for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {
+ ${0}
+ }
+# Foreach Loop
+snippet fore
+ foreach ${1:x} {${2:#list}} {
+ ${0}
+ }
+# after ms script...
+snippet af
+ after ${1:ms} ${0:#do something}
+# after cancel id
+snippet afc
+ after cancel ${0:id or script}
+# after idle
+snippet afi
+ after idle ${0:script}
+# after info id
+snippet afin
+ after info ${0:id}
+# Expr
+snippet exp
+ expr {${0:#expression here}}
+# Switch
+snippet sw
+ switch ${1:var} {
+ ${3:pattern 1} {
+ ${0:#do something}
+ }
+ default {
+ ${2:#do something}
+ }
+ }
+# Case
+snippet ca
+ ${1:pattern} {
+ ${2:#do something}
+ }
+# Namespace eval
+snippet ns
+ namespace eval ${1:path} {${0:#script...}}
+# Namespace current
+snippet nsc
+ namespace current
diff --git a/.config/micro/plug/snippets/snippets/tex.snippets b/.config/micro/plug/snippets/snippets/tex.snippets
new file mode 100644
index 0000000..68ac5d0
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/tex.snippets
@@ -0,0 +1,317 @@
+#PREAMBLE
+#newcommand
+snippet nc \newcommand
+ \newcommand{\\${1:cmd}}[${2:opt}]{${3:realcmd}} ${0}
+#usepackage
+snippet up \usepackage
+ \usepackage[${1:options}]{${2:package}} ${0}
+#newunicodechar
+snippet nuc \newunicodechar
+ \newunicodechar{${1}}{${2:\ensuremath}${3:tex-substitute}}} ${0}
+#DeclareMathOperator
+snippet dmo \DeclareMathOperator
+ \DeclareMathOperator{${1}}{${2}} ${0}
+
+#DOCUMENT
+# \begin{}...\end{}
+snippet begin \begin{} ... \end{} block
+ \begin{${1:env}}
+ ${0:${VISUAL}}
+ \end{$1}
+# Tabular
+snippet tab tabular (or arbitrary) environment
+ \begin{${1:tabular}}{${2:c}}
+ ${0:${VISUAL}}
+ \end{$1}
+snippet thm thm (or arbitrary) environment with optional argument
+ \begin[${1:author}]{${2:thm}}
+ ${0:${VISUAL}}
+ \end{$2}
+snippet center center environment
+ \begin{center}
+ ${0:${VISUAL}}
+ \end{center}
+# Align(ed)
+snippet ali align(ed) environment
+ \begin{align${1:ed}}
+ \label{eq:${2}}
+ ${0:${VISUAL}}
+ \end{align$1}
+# Gather(ed)
+snippet gat gather(ed) environment
+ \begin{gather${1:ed}}
+ ${0:${VISUAL}}
+ \end{gather$1}
+# Equation
+snippet eq equation environment
+ \begin{equation}
+ ${0:${VISUAL}}
+ \end{equation}
+# Equation
+snippet eql Labeled equation environment
+ \begin{equation}
+ \label{eq:${2}}
+ ${0:${VISUAL}}
+ \end{equation}
+# Equation
+snippet eq* unnumbered equation environment
+ \begin{equation*}
+ ${0:${VISUAL}}
+ \end{equation*}
+# Unnumbered Equation
+snippet \ unnumbered equation: \[ ... \]
+ \[
+ ${0:${VISUAL}}
+ \]
+# Equation array
+snippet eqnarray eqnarray environment
+ \begin{eqnarray}
+ ${0:${VISUAL}}
+ \end{eqnarray}
+# Label
+snippet lab \label
+ \label{${1:eq:}${2:fig:}${3:tab:}${0}}
+# Enumerate
+snippet enum enumerate environment
+ \begin{enumerate}
+ \item ${0}
+ \end{enumerate}
+snippet enuma enumerate environment
+ \begin{enumerate}[(a)]
+ \item ${0}
+ \end{enumerate}
+snippet enumi enumerate environment
+ \begin{enumerate}[(i)]
+ \item ${0}
+ \end{enumerate}
+# Itemize
+snippet itemize itemize environment
+ \begin{itemize}
+ \item ${0}
+ \end{itemize}
+snippet item \item
+ \item ${1:${VISUAL}}
+# Description
+snippet desc description environment
+ \begin{description}
+ \item[${1}] ${0}
+ \end{description}
+# Endless new item
+snippet ]i \item (recursive)
+ \item ${1}
+ ${0:]i}
+# Matrix
+snippet mat smart matrix environment
+ \begin{${1:p/b/v/V/B/small}matrix}
+ ${0:${VISUAL}}
+ \end{$1matrix}
+# Cases
+snippet cas cases environment
+ \begin{cases}
+ ${1:equation}, &\text{ if }${2:case}\\
+ ${0:${VISUAL}}
+ \end{cases}
+# Split
+snippet spl split environment
+ \begin{split}
+ ${0:${VISUAL}}
+ \end{split}
+# Part
+snippet part document \part
+ \part{${1:part name}} % (fold)
+ \label{prt:${2:$1}}
+ ${0}
+ % part $2 (end)
+# Chapter
+snippet cha \chapter
+ \chapter{${1:chapter name}}
+ \label{cha:${2:$1}}
+ ${0}
+# Section
+snippet sec \section
+ \section{${1:section name}}
+ \label{sec:${2:$1}}
+ ${0}
+# Section without number
+snippet sec* \section*
+ \section*{${1:section name}}
+ \label{sec:${2:$1}}
+ ${0}
+# Sub Section
+snippet sub \subsection
+ \subsection{${1:subsection name}}
+ \label{sub:${2:$1}}
+ ${0}
+# Sub Section without number
+snippet sub* \subsection*
+ \subsection*{${1:subsection name}}
+ \label{sub:${2:$1}}
+ ${0}
+# Sub Sub Section
+snippet subs \subsubsection
+ \subsubsection{${1:subsubsection name}}
+ \label{ssub:${2:$1}}
+ ${0}
+# Sub Sub Section without number
+snippet subs* \subsubsection*
+ \subsubsection*{${1:subsubsection name}}
+ \label{ssub:${2:$1}}
+ ${0}
+# Paragraph
+snippet par \paragraph
+ \paragraph{${1:paragraph name}}
+ \label{par:${2:$1}}
+ ${0}
+# Sub Paragraph
+snippet subp \subparagraph
+ \subparagraph{${1:subparagraph name}}
+ \label{subp:${2:$1}}
+ ${0}
+snippet ni \noindent
+ \noindent
+ ${0}
+#References
+snippet itd description \item
+ \item[${1:description}] ${0:item}
+snippet figure reference to a figure
+ ${1:Figure}~\ref{${2:fig:}}
+snippet table reference to a table
+ ${1:Table}~\ref{${2:tab:}}
+snippet listing reference to a listing
+ ${1:Listing}~\ref{${2:list}}
+snippet section reference to a section
+ ${1:Section}~\ref{sec:${2}} ${0}
+snippet page reference to a page
+ ${1:page}~\pageref{${2}} ${0}
+snippet index \index
+ \index{${1:index}} ${0}
+#Citations
+snippet citen \citen
+ \citen{${1}} ${0}
+# natbib citations
+snippet citep \citep
+ \citep{${1}} ${0}
+snippet citet \citet
+ \citet{${1}} ${0}
+snippet cite \cite[]{}
+ \cite[${1}]{${2}} ${0}
+snippet citea \citeauthor
+ \citeauthor{${1}} ${0}
+snippet citey \citeyear
+ \citeyear{${1}} ${0}
+snippet fcite \footcite[]{}
+ \footcite[${1}]{${2}}${0}
+#Formating text: italic, bold, underline, small capital, emphase ..
+snippet it italic text
+ \textit{${0:${VISUAL:text}}}
+snippet bf bold face text
+ \textbf{${0:${VISUAL:text}}}
+snippet under underline text
+ \underline{${0:${VISUAL:text}}}
+snippet emp emphasize text
+ \emph{${0:${VISUAL:text}}}
+snippet sc small caps text
+ \textsc{${0:${VISUAL:text}}}
+#Choosing font
+snippet sf sans serife text
+ \textsf{${0:${VISUAL:text}}}
+snippet rm roman font text
+ \textrm{${0:${VISUAL:text}}}
+snippet tt typewriter (monospace) text
+ \texttt{${0:${VISUAL:text}}}
+#Math font
+snippet mf mathfrak
+ \mathfrak{${0:${VISUAL:text}}}
+snippet mc mathcal
+ \mathcal{${0:${VISUAL:text}}}
+snippet ms mathscr
+ \mathscr{${0:${VISUAL:text}}}
+#misc
+snippet ft \footnote
+ \footnote{${0:${VISUAL:text}}}
+snippet fig figure environment (includegraphics)
+ \begin{figure}
+ \begin{center}
+ \includegraphics[scale=${1}]{Figures/${2}}
+ \end{center}
+ \caption{${3}}
+ \label{fig:${4}}
+ \end{figure}
+ ${0}
+snippet tikz figure environment (tikzpicture)
+ \begin{figure}
+ \begin{center}
+ \begin{tikzpicture}[scale=${1:1}]
+ ${2}
+ \end{tikzpicture}
+ \end{center}
+ \caption{${3}}
+ \label{fig:${4}}
+ \end{figure}
+ ${0}
+#math
+snippet stackrel \stackrel{}{}
+ \stackrel{${1:above}}{${2:below}} ${0}
+snippet frac \frac{}{}
+ \frac{${1:num}}{${2:denom}} ${0}
+snippet sum \sum^{}_{}
+ \sum^{${1:n}}_{${2:i=1}} ${0}
+snippet lim \lim_{}
+ \lim_{${1:n \to \infty}} ${0}
+snippet frame frame environment
+ \begin{frame}[${1:t}]{${2:title}}
+ ${0:${VISUAL}}
+ \end{frame}
+snippet block block environment
+ \begin{block}{${1:title}}
+ ${0:${VISUAL}}
+ \end{block}
+snippet alert alertblock environment
+ \begin{alertblock}{${1:title}}
+ ${0:${VISUAL}}
+ \end{alertblock}
+snippet example exampleblock environment
+ \begin{exampleblock}{${1:title}}
+ ${0:${VISUAL}}
+ \end{exampleblock}
+snippet col2 two-column environment
+ \begin{columns}
+ \begin{column}{0.5\textwidth}
+ ${1}
+ \end{column}
+ \begin{column}{0.5\textwidth}
+ ${0}
+ \end{column}
+ \end{columns}
+snippet \{ \{ \}
+ \\{ ${0} \\}
+#delimiter
+snippet lr left right
+ \left${1} ${0} \right$1
+snippet lr( left( right)
+ \left( ${0} \right)
+snippet lr| left| right|
+ \left| ${0} \right|
+snippet lr{ left\{ right\}
+ \left\\{ ${0} \right\\}
+snippet lr[ left[ right]
+ \left[ ${0} \right]
+snippet lra langle rangle
+ \langle ${0} \rangle
+# Code listings
+snippet lst
+ \begin{listing}[language=${1:language}]
+ ${0:${VISUAL}}
+ \end{listing}
+snippet lsi
+ \lstinline|${1}| ${0}
+# Hyperlinks
+snippet url
+ \url{${1}} ${0}
+snippet href
+ \href{${1}}{${2}} ${0}
+# URL from Clipboard.
+snippet urlc
+ \url{`@+`} ${0}
+snippet hrefc
+ \href{`@+`}{${1}} ${0}
diff --git a/.config/micro/plug/snippets/snippets/vi.snippets b/.config/micro/plug/snippets/snippets/vi.snippets
new file mode 100644
index 0000000..b299f51
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/vi.snippets
@@ -0,0 +1,52 @@
+snippet header standard Vim script file header
+ " File: ${1:`expand('%:t')`}
+ " Author: ${2:`g:snips_author`}
+ " Description: ${3}
+ ${0:" Last Modified: `strftime("%B %d, %Y")`}
+snippet guard script reload guard
+ if exists('${1:did_`vim_snippets#Filename()`}') || &cp${2: || version < 700}
+ finish
+ endif
+ let $1 = 1${0}
+snippet f function
+ fun! ${1:`expand('%') =~ 'autoload' ? substitute(matchstr(expand('%:p'),'autoload/\zs.*\ze.vim'),'[/\\]','#','g').'#' : ''`}${2:function_name}(${3})
+ ${0}
+ endf
+snippet t try ... catch statement
+ try
+ ${1}
+ catch ${2}
+ ${0}
+ endtry
+snippet for for ... in loop
+ for ${1} in ${2}
+ ${0}
+ endfor
+snippet forkv for [key, value] in loop
+ for [${1},${2}] in items(${3})
+ ${0}
+ unlet $1 $2
+ endfor
+snippet wh while loop
+ while ${1}
+ ${0}
+ endw
+snippet if if statement
+ if ${1}
+ ${0}
+ endif
+snippet ife if ... else statement
+ if ${1}
+ ${2}
+ else
+ ${0}
+ endif
+snippet au augroup ... autocmd block
+ augroup ${1:AU_NAME}
+ " this one is which you're most likely to use?
+ autocmd ${2:BufRead,BufNewFile} ${3:*.ext,*.ext3|<buffer[=N]>} ${0}
+ augroup end
+snippet bun Vundle.vim Plugin definition
+ Plugin '${0}'
+snippet plug Vundle.vim Plugin definition
+ Plugin '${0}'
diff --git a/.config/micro/plug/snippets/snippets/xml.snippets b/.config/micro/plug/snippets/snippets/xml.snippets
new file mode 100644
index 0000000..0ab346b
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/xml.snippets
@@ -0,0 +1,12 @@
+# xml declaration
+snippet xml
+ <?xml version="1.0" encoding="UTF-8"?>
+# tag
+snippet t
+ <${1:}>
+ ${2}
+ </$1>
+# inline tag
+snippet ti
+ <${1:}>${2}</$1>
+
diff --git a/.config/micro/plug/snippets/snippets/zsh.snippets b/.config/micro/plug/snippets/snippets/zsh.snippets
new file mode 100644
index 0000000..fc1c837
--- /dev/null
+++ b/.config/micro/plug/snippets/snippets/zsh.snippets
@@ -0,0 +1,66 @@
+# #!/bin/zsh
+snippet #!
+ #!/bin/zsh
+
+snippet if
+ if ${1:condition}; then
+ ${0:# statements}
+ fi
+snippet ife
+ if ${1:condition}; then
+ ${2:# statements}
+ else
+ ${0:# statements}
+ fi
+snippet eif
+ elif ${1:condition}; then
+ ${0:# statements}
+snippet for
+ for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do
+ ${0:# statements}
+ done
+snippet fori
+ for ${1:needle} in ${2:haystack}; do
+ ${0:#statements}
+ done
+snippet fore
+ for ${1:item} in ${2:list}; do
+ ${0:# statements}
+ done
+snippet wh
+ while ${1:condition}; do
+ ${0:# statements}
+ done
+snippet until
+ until ${1:condition}; do
+ ${0:# statements}
+ done
+snippet repeat
+ repeat ${1:integer}; do
+ ${0:# statements}
+ done
+snippet case
+ case ${1:word} in
+ ${2:pattern})
+ ${0};;
+ esac
+snippet select
+ select ${1:answer} in ${2:choices}; do
+ ${0:# statements}
+ done
+snippet (
+ ( ${0:#statements} )
+snippet {
+ { ${0:#statements} }
+snippet [
+ [[ ${0:test} ]]
+snippet always
+ { ${1:try} } always { ${0:always} }
+snippet fun
+ ${1:function_name}() {
+ ${0:# function_body}
+ }
+snippet ffun
+ function ${1:function_name}() {
+ ${0:# function_body}
+ }