Updated vimtex and snippets
This commit is contained in:
		
							parent
							
								
									84a6b218fe
								
							
						
					
					
						commit
						10bf23a6ec
					
				| 
						 | 
					@ -0,0 +1,90 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_date = helpers.get_ISO_8601_date
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- A logical OR of `line_begin` and the regTrig '[^%a]trig'
 | 
				
			||||||
 | 
					function line_begin_or_non_letter(line_to_cursor, matched_trigger)
 | 
				
			||||||
 | 
					  local line_begin = line_to_cursor:sub(1, -(#matched_trigger + 1)):match("^%s*$")
 | 
				
			||||||
 | 
					  local non_letter = line_to_cursor:sub(-(#matched_trigger + 1), -(#matched_trigger + 1)):match('[ :`=%{%(%["]')
 | 
				
			||||||
 | 
					  return line_begin or non_letter
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- Paired parentheses
 | 
				
			||||||
 | 
					    s({trig="(", wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("("),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					        t(")"),
 | 
				
			||||||
 | 
					      }),
 | 
				
			||||||
 | 
					    -- Paired curly braces
 | 
				
			||||||
 | 
					    s({trig="{", wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("{"),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					        t("}"),
 | 
				
			||||||
 | 
					      }),
 | 
				
			||||||
 | 
					    -- Paired square brackets
 | 
				
			||||||
 | 
					    s({trig="[", wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("["),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					        t("]"),
 | 
				
			||||||
 | 
					      }),
 | 
				
			||||||
 | 
					    -- Paired back ticks
 | 
				
			||||||
 | 
					    s({trig="sd", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        t("`"),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					        t("`"),
 | 
				
			||||||
 | 
					      }),
 | 
				
			||||||
 | 
					    -- Paired double quotes
 | 
				
			||||||
 | 
					    s({trig = '"', wordTrig = false, snippetType="autosnippet", priority=2000},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        '"<>"',
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin_or_non_letter}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- Paired single quotes
 | 
				
			||||||
 | 
					    s({trig = "'", wordTrig = false, snippetType="autosnippet", priority=2000},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "'<>'",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin_or_non_letter}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- -- Today's date in YYYY-MM-DD (ISO 8601) format
 | 
				
			||||||
 | 
					    -- s({trig = "iso"},
 | 
				
			||||||
 | 
					    -- {f(get_date)}
 | 
				
			||||||
 | 
					    -- -- {f(get_ISO_8601_date)}
 | 
				
			||||||
 | 
					    -- ),
 | 
				
			||||||
 | 
					    -- Curly braces
 | 
				
			||||||
 | 
					    s({trig = "df", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { d(1, get_visual) }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- Square braces
 | 
				
			||||||
 | 
					    s({trig = "dg", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        [
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { d(1, get_visual) }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,88 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- MAIN FUNCTION
 | 
				
			||||||
 | 
					    s({trig = "main", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      int main()
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					          return 0;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        { i(1) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- GENRIC FUNCTION
 | 
				
			||||||
 | 
					    s({trig = "ff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          /*
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					          */
 | 
				
			||||||
 | 
					          <>(<>)
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					          i(3),
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(4, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- BLOCK COMMENT
 | 
				
			||||||
 | 
					    s({trig = "cc", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      /*
 | 
				
			||||||
 | 
					        <>
 | 
				
			||||||
 | 
					      */
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        { i(1) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- DATA STRUCTURE
 | 
				
			||||||
 | 
					    s({trig = "ss", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        struct <> {
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(0)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- -> DEREFERENCE STRUCTURE PROPERTY
 | 
				
			||||||
 | 
					    s({trig = "--", snippetType="autosnippet", wordTrig=false},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("->")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- NULL POINTER SYMBOLIC CONSTANT
 | 
				
			||||||
 | 
					    s({trig = "00", snippetType="autosnippet", wordTrig=false},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("NULL")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- RETURN
 | 
				
			||||||
 | 
					    s({trig = "rr", snippetType="autosnippet", wordTrig=false},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("return")
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,91 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  -- IF STATEMENT
 | 
				
			||||||
 | 
					  s({trig = "iff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      if (<>) {
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        d(2, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- FOR LOOP
 | 
				
			||||||
 | 
					  s({trig = "fll", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      for (<>) {
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        d(2, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- WHILE LOOP
 | 
				
			||||||
 | 
					  s({trig = "wll", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      while (<>) {
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        d(2, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SWITCH STATEMENT
 | 
				
			||||||
 | 
					  s({trig = "sc", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      switch (<>) {
 | 
				
			||||||
 | 
					          case <>: {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }<>
 | 
				
			||||||
 | 
					          default: {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2),
 | 
				
			||||||
 | 
					        i(3),
 | 
				
			||||||
 | 
					        i(4),
 | 
				
			||||||
 | 
					        i(5),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SWITCH CASE
 | 
				
			||||||
 | 
					  s({trig = "cs", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					        case <>: {
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        d(2, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  -- GENERIC HEADER INCLUDE
 | 
				
			||||||
 | 
					  s({trig = "hh", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmt(
 | 
				
			||||||
 | 
					      [[#include <{}.h>]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        d(1, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- STDIO HEADER
 | 
				
			||||||
 | 
					  s({trig = "hio", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    { t('#include <stdio.h>') },
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- STDLIB HEADER
 | 
				
			||||||
 | 
					  s({trig = "hlib", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    { t('#include <stdlib.h>') },
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- STRING HEADER
 | 
				
			||||||
 | 
					  s({trig = "hstr", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    { t('#include <string.h>') },
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  -- PRINTF
 | 
				
			||||||
 | 
					  s({trig = "pp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[printf("<>"<>);]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    { condition = line_begin }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- GETLINE BOILERPLATE
 | 
				
			||||||
 | 
					  s({trig = "gll", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      char *line = NULL;
 | 
				
			||||||
 | 
					      size_t len = 0;
 | 
				
			||||||
 | 
					      ssize_t nread;
 | 
				
			||||||
 | 
					      nread = getline(&line, &len, stdin);
 | 
				
			||||||
 | 
					      <>
 | 
				
			||||||
 | 
					      free(line);
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { i(0) }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,91 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  -- IF STATEMENT
 | 
				
			||||||
 | 
					  s({trig = "iff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      if (<>) {
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        d(2, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- FOR LOOP
 | 
				
			||||||
 | 
					  s({trig = "fll", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      for (<>) {
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        d(2, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- WHILE LOOP
 | 
				
			||||||
 | 
					  s({trig = "wll", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      while (<>) {
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        d(2, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SWITCH STATEMENT
 | 
				
			||||||
 | 
					  s({trig = "sc", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      switch (<>) {
 | 
				
			||||||
 | 
					          case <>: {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }<>
 | 
				
			||||||
 | 
					          default: {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2),
 | 
				
			||||||
 | 
					        i(3),
 | 
				
			||||||
 | 
					        i(4),
 | 
				
			||||||
 | 
					        i(5),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SWITCH CASE
 | 
				
			||||||
 | 
					  s({trig = "cs", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					        case <>: {
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        d(2, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,88 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- MAIN FUNCTION
 | 
				
			||||||
 | 
					    s({trig = "main", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      int main()
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					          return 0;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        { i(1) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- GENRIC FUNCTION
 | 
				
			||||||
 | 
					    s({trig = "ff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          /*
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					          */
 | 
				
			||||||
 | 
					          <>(<>)
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					          i(3),
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(4, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- BLOCK COMMENT
 | 
				
			||||||
 | 
					    s({trig = "cc", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      /*
 | 
				
			||||||
 | 
					        <>
 | 
				
			||||||
 | 
					      */
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        { i(1) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- DATA STRUCTURE
 | 
				
			||||||
 | 
					    s({trig = "ss", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        struct <> {
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(0)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- -> DEREFERENCE STRUCTURE PROPERTY
 | 
				
			||||||
 | 
					    s({trig = "--", snippetType="autosnippet", wordTrig=false},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("->")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- NULL POINTER SYMBOLIC CONSTANT
 | 
				
			||||||
 | 
					    s({trig = "00", snippetType="autosnippet", wordTrig=false},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("NULL")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- RETURN
 | 
				
			||||||
 | 
					    s({trig = "rr", snippetType="autosnippet", wordTrig=false},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("return")
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  -- GENERIC HEADER INCLUDE
 | 
				
			||||||
 | 
					  s({trig = "hh", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmt(
 | 
				
			||||||
 | 
					      [[#include <{}>]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        d(1, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- STDIO HEADER
 | 
				
			||||||
 | 
					  s({trig = "hio", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    { t('#include <iostream>') },
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- MATH HEADER
 | 
				
			||||||
 | 
					  s({trig = "hmath", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    { t('#include <cmath>') },
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- STRING HEADER
 | 
				
			||||||
 | 
					  s({trig = "hstr", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    { t('#include <string>') },
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  -- PRINTF
 | 
				
			||||||
 | 
					  -- s({trig = "pp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					  --   fmta(
 | 
				
			||||||
 | 
					  --     [[printf("<>"<>);]],
 | 
				
			||||||
 | 
					  --     { 
 | 
				
			||||||
 | 
					  --       i(1),
 | 
				
			||||||
 | 
					  --       i(2)
 | 
				
			||||||
 | 
					  --     }
 | 
				
			||||||
 | 
					  --   ),
 | 
				
			||||||
 | 
					  --   { condition = line_begin }
 | 
				
			||||||
 | 
					  -- ),
 | 
				
			||||||
 | 
					  -- GETLINE BOILERPLATE
 | 
				
			||||||
 | 
					  s({trig = "gll", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					      char *line = NULL;
 | 
				
			||||||
 | 
					      size_t len = 0;
 | 
				
			||||||
 | 
					      ssize_t nread;
 | 
				
			||||||
 | 
					      nread = getline(&line, &len, stdin);
 | 
				
			||||||
 | 
					      <>
 | 
				
			||||||
 | 
					      free(line);
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { i(0) }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,288 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- HEADER
 | 
				
			||||||
 | 
					    s({trig="h([123456])", regTrig=true, wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <h{} class="{}">{}</h{}>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- GENERTIC INLINE ELEMENT
 | 
				
			||||||
 | 
					    s({trig = "([^%a])tt", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          {}<{} class="{}">{}</{}>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(3, get_visual),
 | 
				
			||||||
 | 
					          rep(1)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- GENERTIC TAG
 | 
				
			||||||
 | 
					    s({trig = "TT", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <{}{}>
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          </{}>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(3, get_visual),
 | 
				
			||||||
 | 
					          rep(1)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SPAN ELEMENT
 | 
				
			||||||
 | 
					    s({trig = "([^%l])ss", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          {}<span class="{}">{}</span>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- FORM TAG
 | 
				
			||||||
 | 
					    s({trig = "ff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <form{}>
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          </form>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- PRE TAG
 | 
				
			||||||
 | 
					    s({trig = "prr", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <pre>
 | 
				
			||||||
 | 
					            {{{{{}}}}}
 | 
				
			||||||
 | 
					          </pre>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- PARAGRAPH
 | 
				
			||||||
 | 
					    s({trig="pp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <p class="{}">{}</p>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- IMG
 | 
				
			||||||
 | 
					    s({trig="imgg", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <img src="{}" alt="{}" class="{}"/>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- CLASS
 | 
				
			||||||
 | 
					    s({trig=";c", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          class="{}"
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- UNORDERED LIST
 | 
				
			||||||
 | 
					    s({trig="ull", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <ul>
 | 
				
			||||||
 | 
					            <li {}>
 | 
				
			||||||
 | 
					              {}
 | 
				
			||||||
 | 
					            </li>{}
 | 
				
			||||||
 | 
					          </ul>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(0)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- LIST ITEM
 | 
				
			||||||
 | 
					    s({trig="ii", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					            <li {}>
 | 
				
			||||||
 | 
					              {}
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- DOCUMENT TEMPLATE
 | 
				
			||||||
 | 
					    s({trig="base"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        <!doctype HTML>
 | 
				
			||||||
 | 
					        <html lang="en">
 | 
				
			||||||
 | 
					          <head>
 | 
				
			||||||
 | 
					            <meta charset="UTF-8" />
 | 
				
			||||||
 | 
					            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
				
			||||||
 | 
					            <title>{}</title>
 | 
				
			||||||
 | 
					          </head>
 | 
				
			||||||
 | 
					          <body>
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          </body>
 | 
				
			||||||
 | 
					        </html>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1, "FooBar"),
 | 
				
			||||||
 | 
					          i(0)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SCRIPT
 | 
				
			||||||
 | 
					    s({trig = "SS", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <script{}>
 | 
				
			||||||
 | 
					            {}{}
 | 
				
			||||||
 | 
					          </script>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual),
 | 
				
			||||||
 | 
					          i(0)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- DIV
 | 
				
			||||||
 | 
					    s({trig = "dd", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <div class="{}">
 | 
				
			||||||
 | 
					            {}{}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					          i(0)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- DIV with ID for practicing Vue
 | 
				
			||||||
 | 
					    s({trig = "dii", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <div id="{}">
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(0)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- INPUT ELEMENT
 | 
				
			||||||
 | 
					    s({trig = "inn", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <input type="{}" id="{}" />
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- LABEL
 | 
				
			||||||
 | 
					    s({trig = "lbl", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <label for="{}">
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          </label>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- BUTTON
 | 
				
			||||||
 | 
					    s({trig = "bb", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <button type="{}" {}>
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          </button>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(3, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- STRONG ELEMENT
 | 
				
			||||||
 | 
					    s({trig = "tbb", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <strong>{}</strong>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,74 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- TABLE
 | 
				
			||||||
 | 
					    s({trig="tbl", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <table>
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          </table>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TABLE HEADER
 | 
				
			||||||
 | 
					    s({trig="tbh", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <thead>
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          </thead>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TABLE BODY
 | 
				
			||||||
 | 
					    s({trig="tbb", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <tbody>
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          </tbody>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TABLE DATA
 | 
				
			||||||
 | 
					    s({trig="tdd", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <td>{}</td>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TABLE HEADER
 | 
				
			||||||
 | 
					    s({trig="thh", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <th>{}</th>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,236 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- main function
 | 
				
			||||||
 | 
					    s({trig = "mm", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          public static void main(String[] args) {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { i(0) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- CURLY BRACES
 | 
				
			||||||
 | 
					    s({trig = "df", snippetType="autosnippet", priority=1000},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { d(1, get_visual) }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- class
 | 
				
			||||||
 | 
					    s({trig = "pcc", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          public class <>
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { i(1), i(0) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- constructor
 | 
				
			||||||
 | 
					    s({trig = "puu", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          public <>(<>) {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { i(1), i(2), i(3) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- New object
 | 
				
			||||||
 | 
					    s({trig = "nn", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          <> <> = new <>(<>);
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { i(1), i(2), rep(1), i(3) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- public function
 | 
				
			||||||
 | 
					    s({trig = "pff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          public <> <>(<>) {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { i(1), i(2), i(3), i(4) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- public static function
 | 
				
			||||||
 | 
					    s({trig = "psf", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          public static <> <>(<>) {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { i(1), i(2), i(3), i(4) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- private function
 | 
				
			||||||
 | 
					    s({trig = "pvv", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          private <> <>(<>) {
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { i(1), i(2), i(3), i(4) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- if statement
 | 
				
			||||||
 | 
					    s({trig = "iff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          if (<>) <>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          c(2, {sn(nil, {t("{"), t({"", "    "}), i(1, ""), t({"", "}"})}), t("")}),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- for loop with int i counter and optional statement braces
 | 
				
			||||||
 | 
					    s({trig = "fii", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          for (int i = 0; i <>; i++) <>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          c(2, {sn(nil, {t("{"), t({"", "    "}), i(1, ""), t({"", "}"})}), t("")}),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- for loop with int j counter and optional statement braces
 | 
				
			||||||
 | 
					    s({trig = "fjj", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          for (int j = 0; j <>; j++) <>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          c(2, {sn(nil, {t("{"), t({"", "    "}), i(1, ""), t({"", "}"})}), t("")}),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- for loop with blank arguments
 | 
				
			||||||
 | 
					    s({trig = "frr", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          for (<>) <>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          c(2, {sn(nil, {t("{"), t({"", "    "}), i(1, ""), t({"", "}"})}), t("")}),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- while loop
 | 
				
			||||||
 | 
					    s({trig = "wll", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          while (<>) <>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { 
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          c(2, {sn(nil, {t("{"), t({"", "    "}), i(1, ""), t({"", "}"})}), t("")}),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- block comment
 | 
				
			||||||
 | 
					    s({trig = "cc", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          /**
 | 
				
			||||||
 | 
					          * <>
 | 
				
			||||||
 | 
					          */
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { i(1) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- println using algs4 StdOut
 | 
				
			||||||
 | 
					    s({trig = "pp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          StdOut.println(<>);
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { d(1, get_visual) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- Integer.parseInt()
 | 
				
			||||||
 | 
					    s({trig = "ipi", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          Integer.parseInt(<>)
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { d(1, get_visual) }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- Double.parseDouble()
 | 
				
			||||||
 | 
					    s({trig = "dpd", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          Double.parseDouble(<>)
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { d(1, get_visual) }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- Import from algs4
 | 
				
			||||||
 | 
					    s({trig = ";ii", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          import edu.princeton.cs.algs4.<>;
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { i(1) }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- Import StdIn from algs4
 | 
				
			||||||
 | 
					    s({trig = ";in", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("import edu.princeton.cs.algs4.StdIn;")},
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- Import StdOut from algs4
 | 
				
			||||||
 | 
					    s({trig = ";io", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("import edu.princeton.cs.algs4.StdOut;")},
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- array length
 | 
				
			||||||
 | 
					    s({trig = ";l", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          .length
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {}
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,36 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- ALERT
 | 
				
			||||||
 | 
					    s({trig = "aa", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        alert(<>);
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- LOG TO CONSOLE
 | 
				
			||||||
 | 
					    s({trig = "PP", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        console.log(<>);
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- PRINT
 | 
				
			||||||
 | 
					    s({trig="pp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        print(<>)
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- DO RETURN END
 | 
				
			||||||
 | 
					    s({trig="XX", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        do return end
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,36 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- VARIABLE
 | 
				
			||||||
 | 
					    s({trig = "vv", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        $(<>)
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- ECHO
 | 
				
			||||||
 | 
					    s({trig = "pp", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        @echo 
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- PHONY target
 | 
				
			||||||
 | 
					    s({trig = "PP", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        .PHONY: 
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,141 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- Fenced block of code
 | 
				
			||||||
 | 
					    s({trig="cc", snippetType = "autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ```<>
 | 
				
			||||||
 | 
					        <>
 | 
				
			||||||
 | 
					        ```
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- HTML CODE BLOCK
 | 
				
			||||||
 | 
					    s({trig="html"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ```html
 | 
				
			||||||
 | 
					        <>
 | 
				
			||||||
 | 
					        ```
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- PHP CODE BLOCK
 | 
				
			||||||
 | 
					    s({trig="phpp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ```php
 | 
				
			||||||
 | 
					        <?php
 | 
				
			||||||
 | 
					        {}
 | 
				
			||||||
 | 
					        ```
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- PYTHON CODE BLOCK
 | 
				
			||||||
 | 
					    s({trig="pyy", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ```python
 | 
				
			||||||
 | 
					        {}
 | 
				
			||||||
 | 
					        ```
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- BEANCOUNT CODE BLOCK
 | 
				
			||||||
 | 
					    s({trig="bc"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ```beancount
 | 
				
			||||||
 | 
					        {}
 | 
				
			||||||
 | 
					        ```
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- BASH CODE BLOCK
 | 
				
			||||||
 | 
					    s({trig="shh", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ```bash
 | 
				
			||||||
 | 
					        {}
 | 
				
			||||||
 | 
					        ```
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SQL CODE BLOCK
 | 
				
			||||||
 | 
					    s({trig="qq", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ```sql
 | 
				
			||||||
 | 
					        {}
 | 
				
			||||||
 | 
					        ```
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- JAVASCRIPT CODE BLOCK
 | 
				
			||||||
 | 
					    s({trig="jss", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ```javascript
 | 
				
			||||||
 | 
					        {}
 | 
				
			||||||
 | 
					        ```
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- VUE CODE BLOCK
 | 
				
			||||||
 | 
					    s({trig="vuu", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ```vue
 | 
				
			||||||
 | 
					        {}<script setup>
 | 
				
			||||||
 | 
					        {}
 | 
				
			||||||
 | 
					        </script>
 | 
				
			||||||
 | 
					        ```
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,68 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- TODO NOTE
 | 
				
			||||||
 | 
					    s({trig="TODOO", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("**TODO:** "),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- LINK; CAPTURE TEXT IN VISUAL
 | 
				
			||||||
 | 
					    s({trig="LL", wordTrig=true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[[<>](<>)]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- LINK; CAPTURE URL IN VISUAL
 | 
				
			||||||
 | 
					    s({trig="LU", wordTrig=true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[[<>](<>)]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- BOLDFACE TEXT
 | 
				
			||||||
 | 
					    s({trig="tbb", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[**<>**]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- ITALIC TEXT
 | 
				
			||||||
 | 
					    s({trig="tii", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[*<>*]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- UNDERLINED TEXT
 | 
				
			||||||
 | 
					    s({trig="uu", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[<u>{}</u>]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- Hack to remove indentation in bulleted lists
 | 
				
			||||||
 | 
					    s({trig="  --", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("- ")},
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,109 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- FUNCTION PARAMETERS for use in docstrings, with heading
 | 
				
			||||||
 | 
					    s({trig="PP", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      Parameters
 | 
				
			||||||
 | 
					      ----------
 | 
				
			||||||
 | 
					      <> : <>
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- FUNCTION RETURNS for use in docstrings, with heading
 | 
				
			||||||
 | 
					    s({trig="RR", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          Returns
 | 
				
			||||||
 | 
					          ----------
 | 
				
			||||||
 | 
					          <> : <>
 | 
				
			||||||
 | 
					              <>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- NOTES docstring section
 | 
				
			||||||
 | 
					    s({trig="NN", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          NOTES
 | 
				
			||||||
 | 
					          -----
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- PRE-CONDITION docstring section
 | 
				
			||||||
 | 
					    s({trig="prr", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          Pre-Conditions
 | 
				
			||||||
 | 
					          --------------
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- -- POST-CONDITION docstring section
 | 
				
			||||||
 | 
					    -- s({trig="pss", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    --   fmta(
 | 
				
			||||||
 | 
					    --     [[
 | 
				
			||||||
 | 
					    --       Post-Conditions
 | 
				
			||||||
 | 
					    --       ---------------
 | 
				
			||||||
 | 
					    --     ]],
 | 
				
			||||||
 | 
					    --     { }
 | 
				
			||||||
 | 
					    --   ),
 | 
				
			||||||
 | 
					    --   {condition = line_begin}
 | 
				
			||||||
 | 
					    -- ),
 | 
				
			||||||
 | 
					    -- FUNCTION PARAMETER for use in docstrings
 | 
				
			||||||
 | 
					    s({trig="::", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      <> : <>
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- LONG STRING OF DASHES FOR COMMENTS
 | 
				
			||||||
 | 
					    s({trig = "--", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t('# -------------------------------------------------------------------- #')},
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- MULTILINE COMMENT
 | 
				
			||||||
 | 
					    s({trig = "cc", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      """
 | 
				
			||||||
 | 
					      <>
 | 
				
			||||||
 | 
					      """
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,125 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- NEW FIGURE, AXES
 | 
				
			||||||
 | 
					    s({trig="fx", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[fig, ax = plt.subplots(<>)]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- plt.
 | 
				
			||||||
 | 
					    s({trig=";p", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("plt.")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- plt.plot()
 | 
				
			||||||
 | 
					    s({trig="pll", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[plt.plot(<>)]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- plt.show()
 | 
				
			||||||
 | 
					    s({trig="pss", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[plt.show()]],
 | 
				
			||||||
 | 
					        { }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- AXIS PLOT
 | 
				
			||||||
 | 
					    s({trig="xp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[ax.plot(<>)]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- AXIS SET_XLABEL
 | 
				
			||||||
 | 
					    s({trig="xxl", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[ax.set_xlabel(<>)]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- AXIS SET_YLABEL
 | 
				
			||||||
 | 
					    s({trig="xyl", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[ax.set_ylabel(<>)]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- AXIS SET_TITLE
 | 
				
			||||||
 | 
					    s({trig="xt", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[ax.set_title(<>)]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TIGHT LAYOUT
 | 
				
			||||||
 | 
					    s({trig="ttl", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("plt.tight_layout()")},
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- STEM PLOT
 | 
				
			||||||
 | 
					    s({trig="stem", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          (markers, stemlines, baseline) = ax.stem(<>)
 | 
				
			||||||
 | 
					          plt.setp(markers, marker='o', markerfacecolor=<>, markeredgecolor="none", markersize=6)
 | 
				
			||||||
 | 
					          plt.setp(baseline, color=<>, linestyle="-")
 | 
				
			||||||
 | 
					          plt.setp(stemlines, linestyle="--", color=<>, linewidth=2)
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3),
 | 
				
			||||||
 | 
					          i(4)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- REMOVE SPINE FUNCTION
 | 
				
			||||||
 | 
					    s({trig="spines"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        def remove_spines(ax):
 | 
				
			||||||
 | 
					            """
 | 
				
			||||||
 | 
					            Removes top and right spines from the inputted Matplotlib axis. This is for
 | 
				
			||||||
 | 
					            aesthetic purposes only and has no practical function.
 | 
				
			||||||
 | 
					            """
 | 
				
			||||||
 | 
					            ax.spines['top'].set_visible(False)
 | 
				
			||||||
 | 
					            ax.spines['right'].set_visible(False)
 | 
				
			||||||
 | 
					            ax.get_xaxis().tick_bottom()
 | 
				
			||||||
 | 
					            ax.get_yaxis().tick_left()
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- NP.LOADTXT
 | 
				
			||||||
 | 
					    s({trig="nlt", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          np.loadtxt(<>)
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,163 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- PRINT STATEMENT
 | 
				
			||||||
 | 
					    s({trig="pp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[print(<>)]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- MAIN FUNCTION
 | 
				
			||||||
 | 
					    s({trig="main", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      if __name__ == "__main__":
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- CLASS
 | 
				
			||||||
 | 
					    s({trig="class"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        class <>(<>):
 | 
				
			||||||
 | 
					            def __init__(self<>):
 | 
				
			||||||
 | 
					                <>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3),
 | 
				
			||||||
 | 
					          i(4),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- EXIT MAIN FUNCTION with sys.exit()
 | 
				
			||||||
 | 
					    s({trig="XX", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      { t("sys.exit()") },
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- FUNCTION DEFINITION WITH CHOICE NODE DOCSTRING
 | 
				
			||||||
 | 
					    -- The idea is to let you choose if you want to use the docstring or not
 | 
				
			||||||
 | 
					    s({trig="ff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      def <>(<>):
 | 
				
			||||||
 | 
					          <><>
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          c(3, {sn(nil, {t({"\"\"\"", ""}), t("    "), i(1, ""), t({"", "    \"\"\"", "    "})}), t("")}),
 | 
				
			||||||
 | 
					          -- t("    "),
 | 
				
			||||||
 | 
					          d(4, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TIME, i.e. snippet for timing code execution
 | 
				
			||||||
 | 
					    s({trig="time"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        start = time.time()
 | 
				
			||||||
 | 
					        <>
 | 
				
			||||||
 | 
					        end = time.time()
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- for _ in range()
 | 
				
			||||||
 | 
					    s({trig="frr", snippetType = "autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        for <> in range(<>):
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- IF STATEMENT
 | 
				
			||||||
 | 
					    s({trig="iff", snippetType = "autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        if <>:
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- with open(filename) as file
 | 
				
			||||||
 | 
					    s({trig="wof", snippetType = "autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        with open(<>) as <>:
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2, 'file'),
 | 
				
			||||||
 | 
					          i(0),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- RETURN STATEMENT
 | 
				
			||||||
 | 
					    s({trig = ";r", snippetType = "autosnippet"},
 | 
				
			||||||
 | 
					      { t("return") },
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- KWARGS STATEMENT
 | 
				
			||||||
 | 
					    s({trig = ";k", snippetType = "autosnippet", wordTrig=false},
 | 
				
			||||||
 | 
					      { t("kwargs") }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- KWARGS.GET
 | 
				
			||||||
 | 
					    s({trig="kgg", snippetType = "autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        kwargs.get('<>', '<>')
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					          i(2)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SELF (for use in classes)
 | 
				
			||||||
 | 
					    s({trig = ";s", snippetType = "autosnippet"},
 | 
				
			||||||
 | 
					      { t("self.") }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SELF (for use in classes) without dot
 | 
				
			||||||
 | 
					    s({trig = ";S", snippetType = "autosnippet"},
 | 
				
			||||||
 | 
					      { t("self") }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TRACEBACK
 | 
				
			||||||
 | 
					    s({trig = "tbb", snippetType = "autosnippet"},
 | 
				
			||||||
 | 
					      { t("print(traceback.format_exc())") },
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,131 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- COMMON IMPORTS
 | 
				
			||||||
 | 
					    s({trig="itorch"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          import torch
 | 
				
			||||||
 | 
					          from torch import nn
 | 
				
			||||||
 | 
					          from torch.utils.data import Dataset, DataLoader
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- NETWORK MODEL TEMPLATE
 | 
				
			||||||
 | 
					    s({trig="model"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          class FooNet(nn.Module):
 | 
				
			||||||
 | 
					              def __init__(self):
 | 
				
			||||||
 | 
					                  super(FooNet, self).__init__()
 | 
				
			||||||
 | 
					                  <>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              def forward(self, x):
 | 
				
			||||||
 | 
					                  <>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- CUSTOM DATASET TEMPLATE
 | 
				
			||||||
 | 
					    s({trig="dataset"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          class FooDataset(Dataset):
 | 
				
			||||||
 | 
					              def __init__(self, ...):
 | 
				
			||||||
 | 
					                  <>
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					              def __getitem__(self, index):
 | 
				
			||||||
 | 
					                  # Returns the (feature vector, label) tuple at index `index`
 | 
				
			||||||
 | 
					                  <>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              def __len__(self):
 | 
				
			||||||
 | 
					                  # Return number of instances in dataset
 | 
				
			||||||
 | 
					                  <>
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SGD OPTIMIZER
 | 
				
			||||||
 | 
					    s({trig="optim"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          optim = torch.optim.SGD(model.parameters(), lr=<>)
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TRAINING LOOP TEMPLATE
 | 
				
			||||||
 | 
					    s({trig="train"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          def train_loop(dataloader, model, loss_fn, optim):
 | 
				
			||||||
 | 
					              N = len(dataloader.dataset)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              # Loop over all minibatches in dataset
 | 
				
			||||||
 | 
					              for mb, (X, y) in enumerate(dataloader):
 | 
				
			||||||
 | 
					                  # Compute prediction and loss
 | 
				
			||||||
 | 
					                  pred = model(X)
 | 
				
			||||||
 | 
					                  loss = loss_fn(pred, y)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  # Backpropagation
 | 
				
			||||||
 | 
					                  optimizer.zero_grad()
 | 
				
			||||||
 | 
					                  loss.backward()
 | 
				
			||||||
 | 
					                  optimizer.step()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  # Log loss and number of instances trained
 | 
				
			||||||
 | 
					                  if mb % <> == 0:
 | 
				
			||||||
 | 
					                      loss, n = loss.item(), mb * len(X)
 | 
				
			||||||
 | 
					                      print("loss: {:.7f}  [{:5d}/{:5d}]".format(loss, n, N))
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1, "100"),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TEST LOOP TEMPLATE
 | 
				
			||||||
 | 
					    s({trig="test"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					          def test_loop(dataloader, model, loss_fn):
 | 
				
			||||||
 | 
					              N = len(dataloader.dataset)
 | 
				
			||||||
 | 
					              num_batches = len(dataloader)
 | 
				
			||||||
 | 
					              test_loss = 0
 | 
				
			||||||
 | 
					              correct_preds = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              with torch.no_grad():
 | 
				
			||||||
 | 
					                  for X, y in dataloader:
 | 
				
			||||||
 | 
					                      pred = model(X)
 | 
				
			||||||
 | 
					                      test_loss += loss_fn(pred, y).item()
 | 
				
			||||||
 | 
					                      correct_preds += (pred.argmax(1) == y).type(torch.float).sum().item()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              test_loss /= num_batches
 | 
				
			||||||
 | 
					              print("Test Error: \n  Accuracy: {:.1f}%\n  Avg loss per minibatch: {:8f} \n".format((100*correct_preds/N), test_loss))
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        { }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,117 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    s({trig = "doc"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        # NAME
 | 
				
			||||||
 | 
					        # 		{} - {}
 | 
				
			||||||
 | 
					        # 
 | 
				
			||||||
 | 
					        # SYNOPSIS
 | 
				
			||||||
 | 
					        # 		{} {}
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1, "name"),
 | 
				
			||||||
 | 
					          i(2, "description"),
 | 
				
			||||||
 | 
					          rep(1),
 | 
				
			||||||
 | 
					          i(3, "usage"),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- /bin/bash shebang
 | 
				
			||||||
 | 
					    s({trig = "!!", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("#!/bin/bash")},
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig = "fl", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        for {} in {}; do
 | 
				
			||||||
 | 
					          {}
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(0)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig = "read"},
 | 
				
			||||||
 | 
					      fmt(
 | 
				
			||||||
 | 
					        [=[
 | 
				
			||||||
 | 
					          while read line
 | 
				
			||||||
 | 
					          do
 | 
				
			||||||
 | 
					            [[ -z "${line}" ]] && continue
 | 
				
			||||||
 | 
					            [[ "${line}" = \#* ]] && continue
 | 
				
			||||||
 | 
					            echo "${line}"
 | 
				
			||||||
 | 
					            ()
 | 
				
			||||||
 | 
					          done < ()
 | 
				
			||||||
 | 
					        ]=],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(1, "myfile.txt")
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        { delimiters = "()"}
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- IF STATEMENT
 | 
				
			||||||
 | 
					    s({trig = "iff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [=[
 | 
				
			||||||
 | 
					          if [[ <> ]]; then
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					          fi
 | 
				
			||||||
 | 
					        ]=],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(0)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- VARIABLE
 | 
				
			||||||
 | 
					    s({trig = "vv", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ${<>}
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- ECHO
 | 
				
			||||||
 | 
					    s({trig = "pp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        echo "<>"
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig = "ext"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        ${<>%.<>}
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1, "var"),
 | 
				
			||||||
 | 
					          i(2, "ext"),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig = "XX", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {t("exit")},
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,131 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- SELECT
 | 
				
			||||||
 | 
					    s({trig = ";s", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("SELECT ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- FROM
 | 
				
			||||||
 | 
					    s({trig = ";f", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("FROM ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- DISTINCT
 | 
				
			||||||
 | 
					    s({trig = ";di", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("DISTINCT ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- DROP
 | 
				
			||||||
 | 
					    s({trig = ";dr", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("DROP ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- WITH DELIMITER
 | 
				
			||||||
 | 
					    s({trig = ";wd", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("WITH DELIMITER ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- HEADER CSV
 | 
				
			||||||
 | 
					    s({trig = ";hc", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("HEADER CSV ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- CREATE TABLE
 | 
				
			||||||
 | 
					    s({trig = ";ct", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("CREATE TABLE ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- CREATE TEMPORARY TABLE
 | 
				
			||||||
 | 
					    s({trig = ";cp", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("CREATE TEMPORARY TABLE ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- UPDATE
 | 
				
			||||||
 | 
					    s({trig = ";u", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("UPDATE ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- NULL
 | 
				
			||||||
 | 
					    s({trig = ";nl", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("NULL ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- NOT NULL
 | 
				
			||||||
 | 
					    s({trig = ";nn", wordTrig=false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t("NOT NULL ")}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- ADD 	Adds a column in an existing table
 | 
				
			||||||
 | 
					-- ADD CONSTRAINT 	Adds a constraint after a table is already created
 | 
				
			||||||
 | 
					-- ALL 	Returns true if all of the subquery values meet the condition
 | 
				
			||||||
 | 
					-- ALTER 	Adds, deletes, or modifies columns in a table, or changes the data type of a column in a table
 | 
				
			||||||
 | 
					-- ALTER COLUMN 	Changes the data type of a column in a table
 | 
				
			||||||
 | 
					-- ALTER TABLE 	Adds, deletes, or modifies columns in a table
 | 
				
			||||||
 | 
					-- AND 	Only includes rows where both conditions is true
 | 
				
			||||||
 | 
					-- ANY 	Returns true if any of the subquery values meet the condition
 | 
				
			||||||
 | 
					-- AS 	Renames a column or table with an alias
 | 
				
			||||||
 | 
					-- ASC 	Sorts the result set in ascending order
 | 
				
			||||||
 | 
					-- BACKUP DATABASE 	Creates a back up of an existing database
 | 
				
			||||||
 | 
					-- BETWEEN 	Selects values within a given range
 | 
				
			||||||
 | 
					-- CASE 	Creates different outputs based on conditions
 | 
				
			||||||
 | 
					-- CHECK 	A constraint that limits the value that can be placed in a column
 | 
				
			||||||
 | 
					-- COLUMN 	Changes the data type of a column or deletes a column in a table
 | 
				
			||||||
 | 
					-- CONSTRAINT 	Adds or deletes a constraint
 | 
				
			||||||
 | 
					-- CREATE 	Creates a database, index, view, table, or procedure
 | 
				
			||||||
 | 
					-- CREATE DATABASE 	Creates a new SQL database
 | 
				
			||||||
 | 
					-- CREATE INDEX 	Creates an index on a table (allows duplicate values)
 | 
				
			||||||
 | 
					-- CREATE OR REPLACE VIEW 	Updates a view
 | 
				
			||||||
 | 
					-- CREATE TABLE 	Creates a new table in the database
 | 
				
			||||||
 | 
					-- CREATE PROCEDURE 	Creates a stored procedure
 | 
				
			||||||
 | 
					-- CREATE UNIQUE INDEX 	Creates a unique index on a table (no duplicate values)
 | 
				
			||||||
 | 
					-- CREATE VIEW 	Creates a view based on the result set of a SELECT statement
 | 
				
			||||||
 | 
					-- DATABASE 	Creates or deletes an SQL database
 | 
				
			||||||
 | 
					-- DEFAULT 	A constraint that provides a default value for a column
 | 
				
			||||||
 | 
					-- DELETE 	Deletes rows from a table
 | 
				
			||||||
 | 
					-- DESC 	Sorts the result set in descending order
 | 
				
			||||||
 | 
					-- DISTINCT 	Selects only distinct (different) values
 | 
				
			||||||
 | 
					-- DROP 	Deletes a column, constraint, database, index, table, or view
 | 
				
			||||||
 | 
					-- DROP COLUMN 	Deletes a column in a table
 | 
				
			||||||
 | 
					-- DROP CONSTRAINT 	Deletes a UNIQUE, PRIMARY KEY, FOREIGN KEY, or CHECK constraint
 | 
				
			||||||
 | 
					-- DROP DATABASE 	Deletes an existing SQL database
 | 
				
			||||||
 | 
					-- DROP DEFAULT 	Deletes a DEFAULT constraint
 | 
				
			||||||
 | 
					-- DROP INDEX 	Deletes an index in a table
 | 
				
			||||||
 | 
					-- DROP TABLE 	Deletes an existing table in the database
 | 
				
			||||||
 | 
					-- DROP VIEW 	Deletes a view
 | 
				
			||||||
 | 
					-- EXEC 	Executes a stored procedure
 | 
				
			||||||
 | 
					-- EXISTS 	Tests for the existence of any record in a subquery
 | 
				
			||||||
 | 
					-- FOREIGN KEY 	A constraint that is a key used to link two tables together
 | 
				
			||||||
 | 
					-- FROM 	Specifies which table to select or delete data from
 | 
				
			||||||
 | 
					-- FULL OUTER JOIN 	Returns all rows when there is a match in either left table or right table
 | 
				
			||||||
 | 
					-- GROUP BY 	Groups the result set (used with aggregate functions: COUNT, MAX, MIN, SUM, AVG)
 | 
				
			||||||
 | 
					-- HAVING 	Used instead of WHERE with aggregate functions
 | 
				
			||||||
 | 
					-- IN 	Allows you to specify multiple values in a WHERE clause
 | 
				
			||||||
 | 
					-- INDEX 	Creates or deletes an index in a table
 | 
				
			||||||
 | 
					-- INNER JOIN 	Returns rows that have matching values in both tables
 | 
				
			||||||
 | 
					-- INSERT INTO 	Inserts new rows in a table
 | 
				
			||||||
 | 
					-- INSERT INTO SELECT 	Copies data from one table into another table
 | 
				
			||||||
 | 
					-- IS NULL 	Tests for empty values
 | 
				
			||||||
 | 
					-- IS NOT NULL 	Tests for non-empty values
 | 
				
			||||||
 | 
					-- JOIN 	Joins tables
 | 
				
			||||||
 | 
					-- LEFT JOIN 	Returns all rows from the left table, and the matching rows from the right table
 | 
				
			||||||
 | 
					-- LIKE 	Searches for a specified pattern in a column
 | 
				
			||||||
 | 
					-- LIMIT 	Specifies the number of records to return in the result set
 | 
				
			||||||
 | 
					-- NOT 	Only includes rows where a condition is not true
 | 
				
			||||||
 | 
					-- NOT NULL 	A constraint that enforces a column to not accept NULL values
 | 
				
			||||||
 | 
					-- OR 	Includes rows where either condition is true
 | 
				
			||||||
 | 
					-- ORDER BY 	Sorts the result set in ascending or descending order
 | 
				
			||||||
 | 
					-- OUTER JOIN 	Returns all rows when there is a match in either left table or right table
 | 
				
			||||||
 | 
					-- PRIMARY KEY 	A constraint that uniquely identifies each record in a database table
 | 
				
			||||||
 | 
					-- PROCEDURE 	A stored procedure
 | 
				
			||||||
 | 
					-- RIGHT JOIN 	Returns all rows from the right table, and the matching rows from the left table
 | 
				
			||||||
 | 
					-- ROWNUM 	Specifies the number of records to return in the result set
 | 
				
			||||||
 | 
					-- SELECT 	Selects data from a database
 | 
				
			||||||
 | 
					-- SELECT DISTINCT 	Selects only distinct (different) values
 | 
				
			||||||
 | 
					-- SELECT INTO 	Copies data from one table into a new table
 | 
				
			||||||
 | 
					-- SELECT TOP 	Specifies the number of records to return in the result set
 | 
				
			||||||
 | 
					-- SET 	Specifies which columns and values that should be updated in a table
 | 
				
			||||||
 | 
					-- TABLE 	Creates a table, or adds, deletes, or modifies columns in a table, or deletes a table or data inside a table
 | 
				
			||||||
 | 
					-- TOP 	Specifies the number of records to return in the result set
 | 
				
			||||||
 | 
					-- TRUNCATE TABLE 	Deletes the data inside a table, but not the table itself
 | 
				
			||||||
 | 
					-- UNION 	Combines the result set of two or more SELECT statements (only distinct values)
 | 
				
			||||||
 | 
					-- UNION ALL 	Combines the result set of two or more SELECT statements (allows duplicate values)
 | 
				
			||||||
 | 
					-- UNIQUE 	A constraint that ensures that all values in a column are unique
 | 
				
			||||||
 | 
					-- UPDATE 	Updates existing rows in a table
 | 
				
			||||||
 | 
					-- VALUES 	Specifies the values of an INSERT INTO statement
 | 
				
			||||||
 | 
					-- VIEW 	Creates, updates, or deletes a view
 | 
				
			||||||
 | 
					-- WHERE 	Filters a result set to include only records that fulfill a specified condition
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,92 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Math context detection 
 | 
				
			||||||
 | 
					local tex = {}
 | 
				
			||||||
 | 
					tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end
 | 
				
			||||||
 | 
					tex.in_text = function() return not tex.in_mathzone() end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  -- LEFT/RIGHT PARENTHESES
 | 
				
			||||||
 | 
					  s({trig = "([^%a])l%(", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\left(<>\\right)",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- LEFT/RIGHT SQUARE BRACES
 | 
				
			||||||
 | 
					  s({trig = "([^%a])l%[", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\left[<>\\right]",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- LEFT/RIGHT CURLY BRACES
 | 
				
			||||||
 | 
					  s({trig = "([^%a])l%{", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\left\\{<>\\right\\}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- BIG PARENTHESES
 | 
				
			||||||
 | 
					  s({trig = "([^%a])b%(", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\big(<>\\big)",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- BIG SQUARE BRACES
 | 
				
			||||||
 | 
					  s({trig = "([^%a])b%[", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\big[<>\\big]",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- BIG CURLY BRACES
 | 
				
			||||||
 | 
					  s({trig = "([^%a])b%{", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\big\\{<>\\big\\}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- ESCAPED CURLY BRACES
 | 
				
			||||||
 | 
					  s({trig = "([^%a])\\%{", regTrig = true, wordTrig = false, snippetType="autosnippet", priority=2000},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\{<>\\}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- LATEX QUOTATION MARK
 | 
				
			||||||
 | 
					  s({trig = "``", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "``<>''",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,193 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Math context detection
 | 
				
			||||||
 | 
					local tex = {}
 | 
				
			||||||
 | 
					tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end
 | 
				
			||||||
 | 
					tex.in_text = function() return not tex.in_mathzone() end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- GENERIC ENVIRONMENT
 | 
				
			||||||
 | 
					    s({trig="new", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{<>}
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        \end{<>}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual),
 | 
				
			||||||
 | 
					          rep(1),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- ENVIRONMENT WITH ONE EXTRA ARGUMENT
 | 
				
			||||||
 | 
					    s({trig="n2", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{<>}{<>}
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        \end{<>}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(3, get_visual),
 | 
				
			||||||
 | 
					          rep(1),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- ENVIRONMENT WITH TWO EXTRA ARGUMENTS
 | 
				
			||||||
 | 
					    s({trig="n3", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{<>}{<>}{<>}
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        \end{<>}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3),
 | 
				
			||||||
 | 
					          d(4, get_visual),
 | 
				
			||||||
 | 
					          rep(1),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- TOPIC ENVIRONMENT (my custom tcbtheorem environment)
 | 
				
			||||||
 | 
					    s({trig="nt", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{topic}{<>}{<>}
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        \end{topic}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          d(3, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- EQUATION
 | 
				
			||||||
 | 
					    s({trig="nn", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{equation*}
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        \end{equation*}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SPLIT EQUATION
 | 
				
			||||||
 | 
					    s({trig="ss", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{equation*}
 | 
				
			||||||
 | 
					            \begin{split}
 | 
				
			||||||
 | 
					                <>
 | 
				
			||||||
 | 
					            \end{split}
 | 
				
			||||||
 | 
					        \end{equation*}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- ALIGN
 | 
				
			||||||
 | 
					    s({trig="all", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{align*}
 | 
				
			||||||
 | 
					            <>
 | 
				
			||||||
 | 
					        \end{align*}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- ITEMIZE
 | 
				
			||||||
 | 
					    s({trig="itt", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{itemize}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            \item <>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        \end{itemize}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(0),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- ENUMERATE
 | 
				
			||||||
 | 
					    s({trig="enn", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{enumerate}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            \item <>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        \end{enumerate}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(0),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- INLINE MATH
 | 
				
			||||||
 | 
					    s({trig = "([^%l])mm", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "<>$<>$",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- INLINE MATH ON NEW LINE
 | 
				
			||||||
 | 
					    s({trig = "^mm", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "$<>$",
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					        })),
 | 
				
			||||||
 | 
					    -- FIGURE
 | 
				
			||||||
 | 
					    s({trig = "fig"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \begin{figure}[htb!]
 | 
				
			||||||
 | 
					          \centering
 | 
				
			||||||
 | 
					          \includegraphics[width=<>\linewidth]{<>}
 | 
				
			||||||
 | 
					          \caption{<>}
 | 
				
			||||||
 | 
					          \label{fig:<>}
 | 
				
			||||||
 | 
					        \end{figure}
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2),
 | 
				
			||||||
 | 
					          i(3),
 | 
				
			||||||
 | 
					          i(4),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,105 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- A logical OR of `line_begin` and the regTrig '[^%a]trig'
 | 
				
			||||||
 | 
					function line_begin_or_non_letter(line_to_cursor, matched_trigger)
 | 
				
			||||||
 | 
					  local line_begin = line_to_cursor:sub(1, -(#matched_trigger + 1)):match("^%s*$")
 | 
				
			||||||
 | 
					  local non_letter = line_to_cursor:sub(-(#matched_trigger + 1), -(#matched_trigger + 1)):match("[^%a]")
 | 
				
			||||||
 | 
					  return line_begin or non_letter
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Math context detection 
 | 
				
			||||||
 | 
					local tex = {}
 | 
				
			||||||
 | 
					tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end
 | 
				
			||||||
 | 
					tex.in_text = function() return not tex.in_mathzone() end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = function(line_to_cursor, matched_trigger)
 | 
				
			||||||
 | 
					  -- +1 because `string.sub("abcd", 1, -2)` -> abc
 | 
				
			||||||
 | 
					  return line_to_cursor:sub(1, -(#matched_trigger + 1)):match("^%s*$")
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- TYPEWRITER i.e. \texttt
 | 
				
			||||||
 | 
					    s({trig = "([^%a])tt", regTrig = true, wordTrig = false, snippetType="autosnippet", priority=2000},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "<>\\texttt{<>}",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = tex.in_text}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- ITALIC i.e. \textit
 | 
				
			||||||
 | 
					    s({trig = "([^%a])tii", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "<>\\textit{<>}",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- BOLD i.e. \textbf
 | 
				
			||||||
 | 
					    s({trig = "tbb", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "\\textbf{<>}",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- MATH ROMAN i.e. \mathrm
 | 
				
			||||||
 | 
					    s({trig = "([^%a])rmm", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "<>\\mathrm{<>}",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- MATH CALIGRAPHY i.e. \mathcal
 | 
				
			||||||
 | 
					    s({trig = "([^%a])mcc", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "<>\\mathcal{<>}",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- MATH BOLDFACE i.e. \mathbf
 | 
				
			||||||
 | 
					    s({trig = "([^%a])mbf", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "<>\\mathbf{<>}",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- MATH BLACKBOARD i.e. \mathbb
 | 
				
			||||||
 | 
					    s({trig = "([^%a])mbb", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "<>\\mathbb{<>}",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- REGULAR TEXT i.e. \text (in math environments)
 | 
				
			||||||
 | 
					    s({trig = "([^%a])tee", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        "<>\\text{<>}",
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = tex.in_mathzone }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,140 @@
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  s({trig=";a", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\alpha"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";b", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\beta"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";g", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\gamma"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";G", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Gamma"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";d", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\delta"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";D", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Delta"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";e", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\epsilon"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";ve", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\varepsilon"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";z", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\zeta"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";h", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\eta"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";o", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\theta"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";vo", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\vartheta"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";O", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Theta"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";k", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\kappa"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";l", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\lambda"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";L", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Lambda"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";m", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\mu"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";n", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\nu"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";x", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\xi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";X", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Xi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";i", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\pi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";I", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Pi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";r", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\rho"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";s", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\sigma"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";S", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Sigma"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";t", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\tau"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";f", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\phi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";vf", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\varphi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";F", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Phi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";c", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\chi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";p", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\psi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";P", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Psi"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";w", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\omega"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					  s({trig=";W", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\Omega"),
 | 
				
			||||||
 | 
					  }),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- tex.sprint
 | 
				
			||||||
 | 
					    s({trig = "tpp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					        tex.sprint(<>)
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,542 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Math context detection 
 | 
				
			||||||
 | 
					local tex = {}
 | 
				
			||||||
 | 
					tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end
 | 
				
			||||||
 | 
					tex.in_text = function() return not tex.in_mathzone() end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  -- SUPERSCRIPT
 | 
				
			||||||
 | 
					  s({trig = "([%w%)%]%}])'", wordTrig=false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>^{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SUBSCRIPT
 | 
				
			||||||
 | 
					  s({trig = "([%w%)%]%}]);", wordTrig=false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>_{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SUBSCRIPT AND SUPERSCRIPT
 | 
				
			||||||
 | 
					  s({trig = "([%w%)%]%}])__", wordTrig=false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>^{<>}_{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- TEXT SUBSCRIPT
 | 
				
			||||||
 | 
					  s({trig = 'sd', snippetType="autosnippet", wordTrig=false},
 | 
				
			||||||
 | 
					    fmta("_{\\mathrm{<>}}",
 | 
				
			||||||
 | 
					      { d(1, get_visual) }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SUPERSCRIPT SHORTCUT
 | 
				
			||||||
 | 
					  -- Places the first alphanumeric character after the trigger into a superscript.
 | 
				
			||||||
 | 
					  s({trig = '([%w%)%]%}])"([%w])', regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>^{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[2] end ),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SUBSCRIPT SHORTCUT
 | 
				
			||||||
 | 
					  -- Places the first alphanumeric character after the trigger into a subscript.
 | 
				
			||||||
 | 
					  s({trig = '([%w%)%]%}]):([%w])', regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>_{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[2] end ),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- EULER'S NUMBER SUPERSCRIPT SHORTCUT
 | 
				
			||||||
 | 
					  s({trig = '([^%a])ee', regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>e^{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- ZERO SUBSCRIPT SHORTCUT
 | 
				
			||||||
 | 
					  s({trig = '([%a%)%]%}])00', regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>_{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        t("0")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- MINUS ONE SUPERSCRIPT SHORTCUT
 | 
				
			||||||
 | 
					  s({trig = '([%a%)%]%}])11', regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>_{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        t("-1")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- J SUBSCRIPT SHORTCUT (since jk triggers snippet jump forward)
 | 
				
			||||||
 | 
					  s({trig = '([%a%)%]%}])JJ', wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>_{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        t("j")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- PLUS SUPERSCRIPT SHORTCUT
 | 
				
			||||||
 | 
					  s({trig = '([%a%)%]%}])%+%+', regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>^{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        t("+")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- COMPLEMENT SUPERSCRIPT
 | 
				
			||||||
 | 
					  s({trig = '([%a%)%]%}])CC', regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>^{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        t("\\complement")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- CONJUGATE (STAR) SUPERSCRIPT SHORTCUT
 | 
				
			||||||
 | 
					  s({trig = '([%a%)%]%}])%*%*', regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>^{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        t("*")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- VECTOR, i.e. \vec
 | 
				
			||||||
 | 
					  s({trig = "([^%a])vv", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\vec{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- DEFAULT UNIT VECTOR WITH SUBSCRIPT, i.e. \unitvector_{}
 | 
				
			||||||
 | 
					  s({trig = "([^%a])ue", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\unitvector_{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- UNIT VECTOR WITH HAT, i.e. \uvec{}
 | 
				
			||||||
 | 
					  s({trig = "([^%a])uv", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\uvec{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- MATRIX, i.e. \vec
 | 
				
			||||||
 | 
					  s({trig = "([^%a])mt", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\mat{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- FRACTION
 | 
				
			||||||
 | 
					  s({trig = "([^%a])ff", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\frac{<>}{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					        i(2),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- ANGLE
 | 
				
			||||||
 | 
					  s({trig = "([^%a])gg", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\ang{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- ABSOLUTE VALUE
 | 
				
			||||||
 | 
					  s({trig = "([^%a])aa", regTrig = true, wordTrig = false, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\abs{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SQUARE ROOT
 | 
				
			||||||
 | 
					  s({trig = "([^%\\])sq", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\sqrt{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- BINOMIAL SYMBOL
 | 
				
			||||||
 | 
					  s({trig = "([^%\\])bnn", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\binom{<>}{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- LOGARITHM WITH BASE SUBSCRIPT
 | 
				
			||||||
 | 
					  s({trig = "([^%a%\\])ll", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\log_{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- DERIVATIVE with denominator only
 | 
				
			||||||
 | 
					  s({trig = "([^%a])dV", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\dvOne{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- DERIVATIVE with numerator and denominator
 | 
				
			||||||
 | 
					  s({trig = "([^%a])dvv", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\dv{<>}{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- DERIVATIVE with numerator, denominator, and higher-order argument
 | 
				
			||||||
 | 
					  s({trig = "([^%a])ddv", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\dvN{<>}{<>}{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2),
 | 
				
			||||||
 | 
					        i(3),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- PARTIAL DERIVATIVE with denominator only
 | 
				
			||||||
 | 
					  s({trig = "([^%a])pV", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\pdvOne{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- PARTIAL DERIVATIVE with numerator and denominator
 | 
				
			||||||
 | 
					  s({trig = "([^%a])pvv", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\pdv{<>}{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- PARTIAL DERIVATIVE with numerator, denominator, and higher-order argument
 | 
				
			||||||
 | 
					  s({trig = "([^%a])ppv", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\pdvN{<>}{<>}{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2),
 | 
				
			||||||
 | 
					        i(3),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SUM with lower limit
 | 
				
			||||||
 | 
					  s({trig = "([^%a])sM", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\sum_{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SUM with upper and lower limit
 | 
				
			||||||
 | 
					  s({trig = "([^%a])smm", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\sum_{<>}^{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- INTEGRAL with upper and lower limit
 | 
				
			||||||
 | 
					  s({trig = "([^%a])intt", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\int_{<>}^{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        i(1),
 | 
				
			||||||
 | 
					        i(2),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- INTEGRAL from positive to negative infinity
 | 
				
			||||||
 | 
					  s({trig = "([^%a])intf", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\int_{\\infty}^{\\infty}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- BOXED command
 | 
				
			||||||
 | 
					  s({trig = "([^%a])bb", wordTrig = false, regTrig = true, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      "<>\\boxed{<>}",
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        f( function(_, snip) return snip.captures[1] end ),
 | 
				
			||||||
 | 
					        d(1, get_visual)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  --
 | 
				
			||||||
 | 
					  -- BEGIN STATIC SNIPPETS
 | 
				
			||||||
 | 
					  --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  -- DIFFERENTIAL, i.e. \diff
 | 
				
			||||||
 | 
					  s({trig = "df", snippetType="autosnippet", priority=2000, snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\diff"),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- BASIC INTEGRAL SYMBOL, i.e. \int
 | 
				
			||||||
 | 
					  s({trig = "in1", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\int"),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- DOUBLE INTEGRAL, i.e. \iint
 | 
				
			||||||
 | 
					  s({trig = "in2", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\iint"),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- TRIPLE INTEGRAL, i.e. \iiint
 | 
				
			||||||
 | 
					  s({trig = "in3", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\iiint"),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- CLOSED SINGLE INTEGRAL, i.e. \oint
 | 
				
			||||||
 | 
					  s({trig = "oi1", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\oint"),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- CLOSED DOUBLE INTEGRAL, i.e. \oiint
 | 
				
			||||||
 | 
					  s({trig = "oi2", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\oiint"),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- GRADIENT OPERATOR, i.e. \grad
 | 
				
			||||||
 | 
					  s({trig = "gdd", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\grad "),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- CURL OPERATOR, i.e. \curl
 | 
				
			||||||
 | 
					  s({trig = "cll", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\curl "),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- DIVERGENCE OPERATOR, i.e. \divergence
 | 
				
			||||||
 | 
					  s({trig = "DI", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\div "),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- LAPLACIAN OPERATOR, i.e. \laplacian
 | 
				
			||||||
 | 
					  s({trig = "laa", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\laplacian "),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- PARALLEL SYMBOL, i.e. \parallel
 | 
				
			||||||
 | 
					  s({trig = "||", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\parallel"),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- CDOTS, i.e. \cdots
 | 
				
			||||||
 | 
					  s({trig = "cdd", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\cdots"),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- LDOTS, i.e. \ldots
 | 
				
			||||||
 | 
					  s({trig = "ldd", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\ldots"),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- EQUIV, i.e. \equiv
 | 
				
			||||||
 | 
					  s({trig = "eqq", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\equiv "),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SETMINUS, i.e. \setminus
 | 
				
			||||||
 | 
					  s({trig = "stm", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\setminus "),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- SUBSET, i.e. \subset
 | 
				
			||||||
 | 
					  s({trig = "sbb", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\subset "),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- APPROX, i.e. \approx
 | 
				
			||||||
 | 
					  s({trig = "px", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\approx "),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- PROPTO, i.e. \propto
 | 
				
			||||||
 | 
					  s({trig = "pt", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\propto "),
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- COLON, i.e. \colon
 | 
				
			||||||
 | 
					  s({trig = "::", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\colon "),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- IMPLIES, i.e. \implies
 | 
				
			||||||
 | 
					  s({trig = ">>", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\implies "),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- DOT PRODUCT, i.e. \cdot
 | 
				
			||||||
 | 
					  s({trig = ",.", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\cdot "),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					  -- CROSS PRODUCT, i.e. \times
 | 
				
			||||||
 | 
					  s({trig = "xx", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      t("\\times "),
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,84 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Environment/syntax context detection 
 | 
				
			||||||
 | 
					local tex = {}
 | 
				
			||||||
 | 
					tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end
 | 
				
			||||||
 | 
					tex.in_text = function() return not tex.in_mathzone() end
 | 
				
			||||||
 | 
					tex.in_tikz = function()
 | 
				
			||||||
 | 
					  local is_inside = vim.fn['vimtex#env#is_inside']("tikzpicture")
 | 
				
			||||||
 | 
					  return (is_inside[1] > 0 and is_inside[2] > 0)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    s({trig="q"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("\\quad "),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="qq", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("\\qquad "),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="npp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t({"\\newpage", ""}),
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="which", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("\\text{ for which } "),
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="all", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("\\text{ for all } "),
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="and", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("\\quad \\text{and} \\quad"),
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="forall", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("\\text{ for all } "),
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {condition = tex.in_mathzone}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig = "toc", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("\\tableofcontents"),
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="inff", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("\\infty"),
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="ii", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        t("\\item "),
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig = "--", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      {t('% --------------------------------------------- %')},
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- HLINE WITH EXTRA VERTICAL SPACE
 | 
				
			||||||
 | 
					    s({trig = "hl"},
 | 
				
			||||||
 | 
					      {t('\\hline {\\rule{0pt}{2.5ex}} \\hspace{-7pt}')},
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,206 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Math context detection 
 | 
				
			||||||
 | 
					local tex = {}
 | 
				
			||||||
 | 
					tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end
 | 
				
			||||||
 | 
					tex.in_text = function() return not tex.in_mathzone() end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Return snippet tables
 | 
				
			||||||
 | 
					return
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    -- ANNOTATE (custom command for annotating equation derivations)
 | 
				
			||||||
 | 
					    s({trig = "ann", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      \annotate{<>}{<>}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- REFERENCE
 | 
				
			||||||
 | 
					    s({trig = " RR", snippetType="autosnippet", wordTrig=false},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      ~\ref{<>}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- DOCUMENTCLASS
 | 
				
			||||||
 | 
					    s({trig = "dcc", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [=[
 | 
				
			||||||
 | 
					        \documentclass[<>]{<>}
 | 
				
			||||||
 | 
					        ]=],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1, "a4paper"),
 | 
				
			||||||
 | 
					          i(2, "article"),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- USE A LATEX PACKAGE
 | 
				
			||||||
 | 
					    s({trig = "pack", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					        \usepackage{<>}
 | 
				
			||||||
 | 
					        ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- INPUT a LaTeX file
 | 
				
			||||||
 | 
					    s({trig = "inn", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      \input{<><>}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1, "~/dotfiles/config/latex/templates/"),
 | 
				
			||||||
 | 
					          i(2)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      { condition = line_begin }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- LABEL
 | 
				
			||||||
 | 
					    s({trig = "lbl", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      \label{<>}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- HPHANTOM
 | 
				
			||||||
 | 
					    s({trig = "hpp", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[
 | 
				
			||||||
 | 
					      \hphantom{<>}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig = "TODOO", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\TODO{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="nc"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\newcommand{<>}{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					      {condition = line_begin}
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="sii", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\si{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    s({trig="SI"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\SI{<>}{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          i(2)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- URL 
 | 
				
			||||||
 | 
					    s({trig="url"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\url{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- href command with URL in visual selection
 | 
				
			||||||
 | 
					    s({trig="LU", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\href{<>}{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					          i(2)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- href command with text in visual selection
 | 
				
			||||||
 | 
					    s({trig="LL", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\href{<>}{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          i(1),
 | 
				
			||||||
 | 
					          d(2, get_visual)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- HSPACE
 | 
				
			||||||
 | 
					    s({trig="hss", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\hspace{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- VSPACE
 | 
				
			||||||
 | 
					    s({trig="vss", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\vspace{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SECTION
 | 
				
			||||||
 | 
					    s({trig="h1", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\section{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SUBSECTION
 | 
				
			||||||
 | 
					    s({trig="h2", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\subsection{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    -- SUBSUBSECTION
 | 
				
			||||||
 | 
					    s({trig="h3", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					      fmta(
 | 
				
			||||||
 | 
					        [[\subsubsection{<>}]],
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          d(1, get_visual),
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,81 @@
 | 
				
			||||||
 | 
					local helpers = require('personal.luasnip-helper-funcs')
 | 
				
			||||||
 | 
					local get_visual = helpers.get_visual
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local line_begin = require("luasnip.extras.expand_conditions").line_begin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Math context detection 
 | 
				
			||||||
 | 
					local tex = {}
 | 
				
			||||||
 | 
					tex.in_mathzone = function() return vim.fn['vimtex#syntax#in_mathzone']() == 1 end
 | 
				
			||||||
 | 
					tex.in_text = function() return not tex.in_mathzone() end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  -- Equation, choice for labels
 | 
				
			||||||
 | 
					  s({trig="beq", dscr="Expands 'beq' into an equation environment, with a choice for labels", snippetType="autosnippet"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					        \begin{equation}<>
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					        \end{equation}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { c(1, 
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              sn(2,   -- Choose to specify an equation label
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                  t("\\label{eq:"),
 | 
				
			||||||
 | 
					                  i(1),
 | 
				
			||||||
 | 
					                  t("}"),
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					              t([[]]), -- Choose no label
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					        i(2) }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  -- Figure environment
 | 
				
			||||||
 | 
					  s({trig="foofig", dscr="Use 'fig' for figure environmennt, with options"},
 | 
				
			||||||
 | 
					    fmta(
 | 
				
			||||||
 | 
					      [[
 | 
				
			||||||
 | 
					        \begin{figure}<>
 | 
				
			||||||
 | 
					          \centering
 | 
				
			||||||
 | 
					          \includegraphics<>{<>}
 | 
				
			||||||
 | 
					          \caption{<>}
 | 
				
			||||||
 | 
					          \label{fig:<>}
 | 
				
			||||||
 | 
					        \end{figure}
 | 
				
			||||||
 | 
					      ]],
 | 
				
			||||||
 | 
					      { 
 | 
				
			||||||
 | 
					        -- Optional [htbp] field
 | 
				
			||||||
 | 
					        c(1, 
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              t([[]]),      -- Choice 1, empty
 | 
				
			||||||
 | 
					              t("[htbp]"),  -- Choice 2, this may be turned into a snippet
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					        -- Options for includegraphics
 | 
				
			||||||
 | 
					        c(2, 
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              t([[]]), -- Choice 1, empty
 | 
				
			||||||
 | 
					              sn(3,    -- Choice 2, this may be turned into a snippet
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                  t("[width="),
 | 
				
			||||||
 | 
					                  i(1),
 | 
				
			||||||
 | 
					                  t("\\textwidth]"),
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {}
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        i(3, "filename"),
 | 
				
			||||||
 | 
					        i(4, "text"), 
 | 
				
			||||||
 | 
					        i(5, "label"), 
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    {condition = line_begin}
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,68 @@
 | 
				
			||||||
 | 
					-- -- Only load this plugin if it has not yet been loaded for this buffer
 | 
				
			||||||
 | 
					-- if vim.b.did_myvimtexsettings then
 | 
				
			||||||
 | 
					--   return
 | 
				
			||||||
 | 
					-- end
 | 
				
			||||||
 | 
					-- vim.b.did_myvimtexsettings = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', '<leader>li', '<plug>(vimtex-info)', {desc = "Vimtex Info"})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', '<leader>ls', ':VimtexTocToggle<CR>', {desc = "Table Of Content Toggle"})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', '<leader>lv', ':VimtexView<CR>', {desc = "View in Viwer"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Toggle shell escape on and off when using minted package
 | 
				
			||||||
 | 
					local function TexToggleShellEscape()
 | 
				
			||||||
 | 
					  local options = vim.g.vimtex_compiler_latexmk.options
 | 
				
			||||||
 | 
					  local shell_escape_index = vim.fn.index(options, '-shell-escape')
 | 
				
			||||||
 | 
					  if shell_escape_index ~= -1 then
 | 
				
			||||||
 | 
					    table.remove(options, shell_escape_index)
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    table.insert(options, 1, '-shell-escape')
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  vim.fn['VimtexReload']()
 | 
				
			||||||
 | 
					  vim.fn['VimtexClean']()
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vim.api.nvim_set_keymap('n', '<leader>le', '<cmd>lua TexToggleShellEscape()<CR>', {desc = "Toggle Shell Escape"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- When loading new buffers, search for references to minted package in the
 | 
				
			||||||
 | 
					-- document preamble and enable shell escape if minted is detected.
 | 
				
			||||||
 | 
					local preamble_output = vim.fn.systemlist('head -n 20 ' .. vim.fn.expand('%') .. ' | grep "minted"')
 | 
				
			||||||
 | 
					if #preamble_output > 0 then
 | 
				
			||||||
 | 
					  table.insert(vim.g.vimtex_compiler_latexmk.options, 1, '-shell-escape')
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Close viewers when VimTeX buffers are closed
 | 
				
			||||||
 | 
					local function CloseViewers()
 | 
				
			||||||
 | 
					  if vim.fn.executable('xdotool') == 1 and vim.b.vimtex_viewer_xwin_id > 0 then
 | 
				
			||||||
 | 
					    vim.fn.system('xdotool windowclose ' .. vim.b.vimtex_viewer_xwin_id)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vim.cmd('augroup vimtex_event_close')
 | 
				
			||||||
 | 
					vim.cmd('au!')
 | 
				
			||||||
 | 
					vim.cmd('au User VimtexEventQuit call CloseViewers()')
 | 
				
			||||||
 | 
					vim.cmd('augroup END')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- -- Define mappings
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'dse', '<plug>(vimtex-env-delete)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'dsc', '<plug>(vimtex-cmd-delete)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'dsm', '<plug>(vimtex-env-delete-math)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'dsd', '<plug>(vimtex-delim-delete)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'cse', '<plug>(vimtex-env-change)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'csc', '<plug>(vimtex-cmd-change)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'csm', '<plug>(vimtex-env-change-math)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'csd', '<plug>(vimtex-delim-change-math)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'tsf', '<plug>(vimtex-cmd-toggle-frac)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'tsc', '<plug>(vimtex-cmd-toggle-star)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'tse', '<plug>(vimtex-env-toggle-star)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'tsd', '<plug>(vimtex-delim-toggle-modifier)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'tsD', '<plug>(vimtex-delim-toggle-modifier-reverse)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('n', 'tsm', '<plug>(vimtex-env-toggle-math)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('i', ']]', '<plug>(vimtex-delim-close)', {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- -- Text objects in operator-pending mode
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('o', 'ac', '<plug>(vimtex-ac)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('x', 'ac', '<plug>(vimtex-ac)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('o', 'ic', '<plug>(vimtex-ic)', {})
 | 
				
			||||||
 | 
					-- vim.api.nvim_set_keymap('x', 'ic', '<plug>(vimtex-ic)', {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- -- Define more mappings as needed...
 | 
				
			||||||
							
								
								
									
										190
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										190
									
								
								init.lua
								
								
								
								
							| 
						 | 
					@ -44,6 +44,18 @@ P.S. You can delete this when you're done too. It's your config now :)
 | 
				
			||||||
vim.g.mapleader = ' '
 | 
					vim.g.mapleader = ' '
 | 
				
			||||||
vim.g.maplocalleader = ' '
 | 
					vim.g.maplocalleader = ' '
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- OS detection
 | 
				
			||||||
 | 
					if vim.fn.exists("g:os_current") == 0 then
 | 
				
			||||||
 | 
					  if vim.fn.system('uname -s') == "Linux\n" then
 | 
				
			||||||
 | 
					    vim.g.os_current = "Linux"
 | 
				
			||||||
 | 
					  elseif vim.fn.system('uname -s') == "Darwin\n" then
 | 
				
			||||||
 | 
					    vim.g.os_current = "Darwin"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    print("Error: the current operating system won't support all of my Vim configurations.")
 | 
				
			||||||
 | 
					    vim.g.os_current = "Other"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- [[ Install `lazy.nvim` plugin manager ]]
 | 
					-- [[ Install `lazy.nvim` plugin manager ]]
 | 
				
			||||||
--    https://github.com/folke/lazy.nvim
 | 
					--    https://github.com/folke/lazy.nvim
 | 
				
			||||||
--    `:help lazy.nvim.txt` for more info
 | 
					--    `:help lazy.nvim.txt` for more info
 | 
				
			||||||
| 
						 | 
					@ -106,9 +118,8 @@ require('lazy').setup({
 | 
				
			||||||
      -- Adds LSP completion capabilities
 | 
					      -- Adds LSP completion capabilities
 | 
				
			||||||
      'hrsh7th/cmp-nvim-lsp',
 | 
					      'hrsh7th/cmp-nvim-lsp',
 | 
				
			||||||
      'hrsh7th/cmp-path',
 | 
					      'hrsh7th/cmp-path',
 | 
				
			||||||
 | 
					      'hrsh7th/cmp-buffer',
 | 
				
			||||||
      -- Adds a number of user-friendly snippets
 | 
					      -- 'minhaz5000/friendly-snippets',
 | 
				
			||||||
      'rafamadriz/friendly-snippets',
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -205,7 +216,7 @@ require('lazy').setup({
 | 
				
			||||||
    opts = {
 | 
					    opts = {
 | 
				
			||||||
      options = {
 | 
					      options = {
 | 
				
			||||||
        icons_enabled = false,
 | 
					        icons_enabled = false,
 | 
				
			||||||
        theme = 'onedark',
 | 
					        theme = 'auto',
 | 
				
			||||||
        component_separators = '|',
 | 
					        component_separators = '|',
 | 
				
			||||||
        section_separators = '',
 | 
					        section_separators = '',
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
| 
						 | 
					@ -278,6 +289,7 @@ vim.o.hlsearch = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Make line numbers default
 | 
					-- Make line numbers default
 | 
				
			||||||
vim.wo.number = true
 | 
					vim.wo.number = true
 | 
				
			||||||
 | 
					vim.wo.relativenumber = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Enable mouse mode
 | 
					-- Enable mouse mode
 | 
				
			||||||
vim.o.mouse = 'a'
 | 
					vim.o.mouse = 'a'
 | 
				
			||||||
| 
						 | 
					@ -290,6 +302,19 @@ vim.o.clipboard = 'unnamedplus'
 | 
				
			||||||
-- Enable break indent
 | 
					-- Enable break indent
 | 
				
			||||||
vim.o.breakindent = true
 | 
					vim.o.breakindent = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Enable expandtab to insert spaces instead of tabs
 | 
				
			||||||
 | 
					vim.opt.expandtab = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Set the width of a tab character to 4 spaces
 | 
				
			||||||
 | 
					vim.opt.tabstop = 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Set the number of spaces used for each step of (auto)indent
 | 
				
			||||||
 | 
					vim.opt.shiftwidth = 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Enable smarttab to insert a combination of spaces and tabs intelligently
 | 
				
			||||||
 | 
					vim.opt.smarttab = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Save undo history
 | 
					-- Save undo history
 | 
				
			||||||
vim.o.undofile = true
 | 
					vim.o.undofile = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -316,6 +341,20 @@ vim.o.termguicolors = true
 | 
				
			||||||
-- See `:help vim.keymap.set()`
 | 
					-- See `:help vim.keymap.set()`
 | 
				
			||||||
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
 | 
					vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Move current line up and down
 | 
				
			||||||
 | 
					vim.keymap.set('n', '<M-j>', ':m .+1<CR>==', { noremap = true, silent = true })
 | 
				
			||||||
 | 
					vim.keymap.set('n', '<M-k>', ':m .-2<CR>==', { noremap = true, silent = true })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Move selected lines up and down
 | 
				
			||||||
 | 
					vim.keymap.set('x', '<M-j>', ':move \'>+<CR>gv=gv', { noremap = true, silent = true })
 | 
				
			||||||
 | 
					vim.keymap.set('x', '<M-k>', ':move \'<-2<CR>gv=gv', { noremap = true, silent = true })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- easy save file
 | 
				
			||||||
 | 
					vim.keymap.set('n', '<C-s>', ':w<CR>')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- use U for redo :))
 | 
				
			||||||
 | 
					vim.keymap.set('n', 'U', '<C-r>', {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Remap for dealing with word wrap
 | 
					-- Remap for dealing with word wrap
 | 
				
			||||||
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
 | 
					vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
 | 
				
			||||||
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
 | 
					vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
 | 
				
			||||||
| 
						 | 
					@ -520,7 +559,7 @@ local on_attach = function(_, bufnr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  -- See `:help K` for why this keymap
 | 
					  -- See `:help K` for why this keymap
 | 
				
			||||||
  nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
 | 
					  nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
 | 
				
			||||||
  nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
 | 
					  nmap('<C-i>', vim.lsp.buf.signature_help, 'Signature Documentation')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  -- Lesser used LSP functionality
 | 
					  -- Lesser used LSP functionality
 | 
				
			||||||
  nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
 | 
					  nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
 | 
				
			||||||
| 
						 | 
					@ -613,9 +652,67 @@ mason_lspconfig.setup_handlers {
 | 
				
			||||||
-- [[ Configure nvim-cmp ]]
 | 
					-- [[ Configure nvim-cmp ]]
 | 
				
			||||||
-- See `:help cmp`
 | 
					-- See `:help cmp`
 | 
				
			||||||
local cmp = require 'cmp'
 | 
					local cmp = require 'cmp'
 | 
				
			||||||
local luasnip = require 'luasnip'
 | 
					local luasnip = require "luasnip"
 | 
				
			||||||
require('luasnip.loaders.from_vscode').lazy_load()
 | 
					local types = require "luasnip.util.types"
 | 
				
			||||||
luasnip.config.setup {}
 | 
					
 | 
				
			||||||
 | 
					require("luasnip.loaders.from_lua").lazy_load({paths = "~/.config/nvim/LuaSnip/"})
 | 
				
			||||||
 | 
					-- require("luasnip.loaders.from_vscode").lazy_load()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vim.keymap.set('', '<Leader>U', '<Cmd>lua require("luasnip.loaders.from_lua").lazy_load({paths = "~/.config/nvim/LuaSnip/"})<CR><Cmd>echo "Snippets refreshed!"<CR>', { desc = "[U]pdate Snippets"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					luasnip.config.setup({
 | 
				
			||||||
 | 
					  -- Allow autotrigger snippets
 | 
				
			||||||
 | 
					  enable_autosnippets = true,
 | 
				
			||||||
 | 
					  -- This one is cool cause if you have dynamic snippets, it updates as you type!
 | 
				
			||||||
 | 
					  updateevents = "TextChanged,TextChangedI",
 | 
				
			||||||
 | 
					  -- For equivalent of UltiSnips visual selection
 | 
				
			||||||
 | 
					  store_selection_keys = "<Tab>",
 | 
				
			||||||
 | 
					  -- Event on which to check for exiting a snippet's region
 | 
				
			||||||
 | 
					  region_check_events = 'InsertEnter',
 | 
				
			||||||
 | 
					  delete_check_events = 'InsertLeave',
 | 
				
			||||||
 | 
					  ext_opts = {
 | 
				
			||||||
 | 
					    [types.choiceNode] = {
 | 
				
			||||||
 | 
					      active = {
 | 
				
			||||||
 | 
					        virt_text = { { " « ", "NonTest" } },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vim.keymap.set({ "i", "s" }, "<c-j>", function()
 | 
				
			||||||
 | 
					   if luasnip.expand_or_jumpable() then
 | 
				
			||||||
 | 
					    luasnip.expand_or_jump()
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end, { silent = true })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vim.keymap.set({ "i", "s" }, "<c-k>", function()
 | 
				
			||||||
 | 
					  if luasnip.jumpable(-1) then
 | 
				
			||||||
 | 
					    luasnip.jump(-1)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end, { silent = true })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- <c-l> is selecting within a list of options.
 | 
				
			||||||
 | 
					-- This is useful for choice nodes (introduced in the forthcoming episode 2)
 | 
				
			||||||
 | 
					vim.keymap.set("i", "<c-f>", function()
 | 
				
			||||||
 | 
					  if luasnip.choice_active() then
 | 
				
			||||||
 | 
					    luasnip.change_choice(1)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vim.keymap.set("i", "<c-u>", require "luasnip.extras.select_choice")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- local auto_expand = require("luasnip").expand_auto
 | 
				
			||||||
 | 
					-- luasnip.expand_auto = function(...)
 | 
				
			||||||
 | 
					--     vim.o.undolevels = vim.o.undolevels
 | 
				
			||||||
 | 
					--     auto_expand(...)
 | 
				
			||||||
 | 
					-- end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local has_words_before = function()
 | 
				
			||||||
 | 
					  unpack = unpack or table.unpack
 | 
				
			||||||
 | 
					  local line, col = unpack(vim.api.nvim_win_get_cursor(0))
 | 
				
			||||||
 | 
					  return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cmp.setup {
 | 
					cmp.setup {
 | 
				
			||||||
  snippet = {
 | 
					  snippet = {
 | 
				
			||||||
| 
						 | 
					@ -627,20 +724,57 @@ cmp.setup {
 | 
				
			||||||
    completeopt = 'menu,menuone,noinsert',
 | 
					    completeopt = 'menu,menuone,noinsert',
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  mapping = cmp.mapping.preset.insert {
 | 
					  mapping = cmp.mapping.preset.insert {
 | 
				
			||||||
    ['<C-n>'] = cmp.mapping.select_next_item(),
 | 
					
 | 
				
			||||||
    ['<C-p>'] = cmp.mapping.select_prev_item(),
 | 
					    ["<C-n>"] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert },
 | 
				
			||||||
    ['<C-b>'] = cmp.mapping.scroll_docs(-4),
 | 
					    ["<C-p>"] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert },
 | 
				
			||||||
    ['<C-f>'] = cmp.mapping.scroll_docs(4),
 | 
					    ["<C-d>"] = cmp.mapping.scroll_docs(-4),
 | 
				
			||||||
    ['<C-Space>'] = cmp.mapping.complete {},
 | 
					    ["<C-f>"] = cmp.mapping.scroll_docs(4),
 | 
				
			||||||
    ['<CR>'] = cmp.mapping.confirm {
 | 
					    ["<C-e>"] = cmp.mapping.abort(),
 | 
				
			||||||
      behavior = cmp.ConfirmBehavior.Replace,
 | 
					    ["<c-y>"] = cmp.mapping(
 | 
				
			||||||
      select = true,
 | 
					      cmp.mapping.confirm {
 | 
				
			||||||
 | 
					        behavior = cmp.ConfirmBehavior.Insert,
 | 
				
			||||||
 | 
					        select = true,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      { "i", "c" }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    ["<M-y>"] = cmp.mapping(
 | 
				
			||||||
 | 
					      cmp.mapping.confirm {
 | 
				
			||||||
 | 
					        behavior = cmp.ConfirmBehavior.Replace,
 | 
				
			||||||
 | 
					        select = false,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      { "i", "c" }
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ["<C-Space>"] = cmp.mapping {
 | 
				
			||||||
 | 
					      i = cmp.mapping.complete(),
 | 
				
			||||||
 | 
					      c = function(
 | 
				
			||||||
 | 
					        _ --[[fallback]]
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					        if cmp.visible() then
 | 
				
			||||||
 | 
					          if not cmp.confirm { select = true } then
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					          end
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					          cmp.complete()
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      end,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ["<c-q>"] = cmp.mapping.confirm {
 | 
				
			||||||
 | 
					      behavior = cmp.ConfirmBehavior.Replace,
 | 
				
			||||||
 | 
					      select = false,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    --     -- ["<tab>"] = false,
 | 
				
			||||||
 | 
					    -- ["<tab>"] = cmp.config.disable,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ['<Tab>'] = cmp.mapping(function(fallback)
 | 
					    ['<Tab>'] = cmp.mapping(function(fallback)
 | 
				
			||||||
      if cmp.visible() then
 | 
					     if cmp.visible() then
 | 
				
			||||||
        cmp.select_next_item()
 | 
					        if #cmp.get_entries() == 1 then
 | 
				
			||||||
      elseif luasnip.expand_or_locally_jumpable() then
 | 
					          cmp.confirm({ select = true })
 | 
				
			||||||
        luasnip.expand_or_jump()
 | 
					        else
 | 
				
			||||||
 | 
					          cmp.select_next_item()
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
        fallback()
 | 
					        fallback()
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
| 
						 | 
					@ -648,17 +782,27 @@ cmp.setup {
 | 
				
			||||||
    ['<S-Tab>'] = cmp.mapping(function(fallback)
 | 
					    ['<S-Tab>'] = cmp.mapping(function(fallback)
 | 
				
			||||||
      if cmp.visible() then
 | 
					      if cmp.visible() then
 | 
				
			||||||
        cmp.select_prev_item()
 | 
					        cmp.select_prev_item()
 | 
				
			||||||
      elseif luasnip.locally_jumpable(-1) then
 | 
					 | 
				
			||||||
        luasnip.jump(-1)
 | 
					 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
        fallback()
 | 
					        fallback()
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end, { 'i', 's' }),
 | 
					    end, { 'i', 's' }),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- ['<C-n>'] = cmp.mapping.select_next_item(),
 | 
				
			||||||
 | 
					    -- ['<C-p>'] = cmp.mapping.select_prev_item(),
 | 
				
			||||||
 | 
					    -- ['<C-b>'] = cmp.mapping.scroll_docs(-4),
 | 
				
			||||||
 | 
					    -- ['<C-f>'] = cmp.mapping.scroll_docs(4),
 | 
				
			||||||
 | 
					    -- ['<C-Space>'] = cmp.mapping.complete {},
 | 
				
			||||||
 | 
					    -- ['<CR>'] = cmp.mapping.confirm {
 | 
				
			||||||
 | 
					    --   behavior = cmp.ConfirmBehavior.Replace,
 | 
				
			||||||
 | 
					    --   select = true,
 | 
				
			||||||
 | 
					    -- },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  sources = {
 | 
					  sources = {
 | 
				
			||||||
    { name = 'nvim_lsp' },
 | 
					    { name = 'nvim_lsp' },
 | 
				
			||||||
    { name = 'luasnip' },
 | 
					    { name = 'luasnip' },
 | 
				
			||||||
    { name = 'path' },
 | 
					    { name = "buffer", keyword_length = 5 },
 | 
				
			||||||
 | 
					    { name = "path" },
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,34 +1,33 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
 | 
					  "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
 | 
				
			||||||
  "LuaSnip": { "branch": "master", "commit": "82108e7e31cc6fc223cc5df5cae6d89f70bb199f" },
 | 
					  "LuaSnip": { "branch": "master", "commit": "f3b3d3446bcbfa62d638b1903ff00a78b2b730a1" },
 | 
				
			||||||
 | 
					  "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
 | 
				
			||||||
  "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
 | 
					  "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
 | 
				
			||||||
  "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
 | 
					  "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
 | 
				
			||||||
  "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
 | 
					  "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
 | 
				
			||||||
  "fidget.nvim": { "branch": "main", "commit": "3a93300c076109d86c7ce35ec67a8034ae6ba9db" },
 | 
					  "fidget.nvim": { "branch": "main", "commit": "60404ba67044c6ab01894dd5bf77bd64ea5e09aa" },
 | 
				
			||||||
  "friendly-snippets": { "branch": "main", "commit": "69a2c1675b66e002799f5eef803b87a12f593049" },
 | 
					  "gitsigns.nvim": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" },
 | 
				
			||||||
  "gitsigns.nvim": { "branch": "main", "commit": "3e6e91b09f0468c32d3b96dcacf4b947f037ce25" },
 | 
					  "indent-blankline.nvim": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" },
 | 
				
			||||||
  "indent-blankline.nvim": { "branch": "master", "commit": "12e92044d313c54c438bd786d11684c88f6f78cd" },
 | 
					  "lazy.nvim": { "branch": "main", "commit": "aedcd79811d491b60d0a6577a9c1701063c2a609" },
 | 
				
			||||||
  "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
 | 
					  "lualine.nvim": { "branch": "master", "commit": "7d131a8d3ba5016229e8a1d08bf8782acea98852" },
 | 
				
			||||||
  "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" },
 | 
					  "mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" },
 | 
				
			||||||
  "mason-lspconfig.nvim": { "branch": "main", "commit": "0989bdf4fdf7b5aa4c74131d7ffccc3f399ac788" },
 | 
					  "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" },
 | 
				
			||||||
  "mason.nvim": { "branch": "main", "commit": "e110bc3be1a7309617cecd77bfe4bf86ba1b8134" },
 | 
					  "neo-tree.nvim": { "branch": "main", "commit": "f3941c57ec85d7bdb44fa53fd858fd80f159018f" },
 | 
				
			||||||
  "neo-tree.nvim": { "branch": "main", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" },
 | 
					  "neodev.nvim": { "branch": "main", "commit": "84e0290f5600e8b89c0dfcafc864f45496a53400" },
 | 
				
			||||||
  "neodev.nvim": { "branch": "main", "commit": "dde00106b9094f101980b364fae02fd85d357306" },
 | 
					  "nui.nvim": { "branch": "main", "commit": "b81333d12f824dbed5eb231c8a4409a290fdd848" },
 | 
				
			||||||
  "nui.nvim": { "branch": "main", "commit": "35da9ca1de0fc4dda96c2e214d93d363c145f418" },
 | 
					  "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
 | 
				
			||||||
  "nvim-autopairs": { "branch": "master", "commit": "9fd41181693dd4106b3e414a822bb6569924de81" },
 | 
					  "nvim-lspconfig": { "branch": "master", "commit": "9553725789be682ecd945a527ec552e489ea8534" },
 | 
				
			||||||
  "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" },
 | 
					  "nvim-treesitter": { "branch": "master", "commit": "a47540fd737eb5c03ee21ee69eb8134ce5568fb6" },
 | 
				
			||||||
  "nvim-lspconfig": { "branch": "master", "commit": "c5c8d4ca6c0ef26a44b23da7f0228cc3808be81c" },
 | 
					  "nvim-treesitter-textobjects": { "branch": "master", "commit": "95933e762e28f9d38b572d65e7e4da9d2f4d90cb" },
 | 
				
			||||||
  "nvim-treesitter": { "branch": "master", "commit": "8cd2b230174efbf7b5d9f49fe2f90bda6b5eb16e" },
 | 
					  "nvim-web-devicons": { "branch": "master", "commit": "4adea17610d140a99c313e3f79a9dc01825d59ae" },
 | 
				
			||||||
  "nvim-treesitter-textobjects": { "branch": "master", "commit": "85b9d0cbd4ff901abcda862b50dbb34e0901848b" },
 | 
					  "plenary.nvim": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" },
 | 
				
			||||||
  "nvim-web-devicons": { "branch": "master", "commit": "db0c864375c198cacc171ff373e76bfce2a85045" },
 | 
					 | 
				
			||||||
  "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
 | 
					 | 
				
			||||||
  "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
 | 
					  "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
 | 
				
			||||||
  "telescope.nvim": { "branch": "0.1.x", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
 | 
					  "telescope.nvim": { "branch": "0.1.x", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
 | 
				
			||||||
  "toggleterm.nvim": { "branch": "main", "commit": "cbd041d91b90cd3c02df03fe6133208888f8e008" },
 | 
					  "toggleterm.nvim": { "branch": "main", "commit": "193786e0371e3286d3bc9aa0079da1cd41beaa62" },
 | 
				
			||||||
  "tokyonight.nvim": { "branch": "main", "commit": "f247ee700b569ed43f39320413a13ba9b0aef0db" },
 | 
					  "tokyonight.nvim": { "branch": "main", "commit": "610179f7f12db3d08540b6cc61434db2eaecbcff" },
 | 
				
			||||||
  "vim-fugitive": { "branch": "master", "commit": "59659093581aad2afacedc81f009ed6a4bfad275" },
 | 
					  "vim-fugitive": { "branch": "master", "commit": "2e88f14a585c014691904ba8fe39e6ea851c9422" },
 | 
				
			||||||
  "vim-rhubarb": { "branch": "master", "commit": "ee69335de176d9325267b0fd2597a22901d927b1" },
 | 
					  "vim-rhubarb": { "branch": "master", "commit": "ee69335de176d9325267b0fd2597a22901d927b1" },
 | 
				
			||||||
  "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" },
 | 
					  "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" },
 | 
				
			||||||
  "vimtex": { "branch": "master", "commit": "f9b19d09ee6f0ba70dad0b5c2e710dd700681000" },
 | 
					  "vimtex": { "branch": "master", "commit": "2bb7cdc17c0ac18266e4c96083290956169c1c38" },
 | 
				
			||||||
  "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }
 | 
					  "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,17 +0,0 @@
 | 
				
			||||||
-- File: lua/custom/plugins/autopairs.lua
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
return {
 | 
					 | 
				
			||||||
  "windwp/nvim-autopairs",
 | 
					 | 
				
			||||||
  -- Optional dependency
 | 
					 | 
				
			||||||
  dependencies = { 'hrsh7th/nvim-cmp' },
 | 
					 | 
				
			||||||
  config = function()
 | 
					 | 
				
			||||||
    require("nvim-autopairs").setup {}
 | 
					 | 
				
			||||||
    -- If you want to automatically add `(` after selecting a function or method
 | 
					 | 
				
			||||||
    local cmp_autopairs = require('nvim-autopairs.completion.cmp')
 | 
					 | 
				
			||||||
    local cmp = require('cmp')
 | 
					 | 
				
			||||||
    cmp.event:on(
 | 
					 | 
				
			||||||
      'confirm_done',
 | 
					 | 
				
			||||||
      cmp_autopairs.on_confirm_done()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
  end,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -25,5 +25,5 @@ return {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  end,
 | 
					  end,
 | 
				
			||||||
  vim.keymap.set('n', '<leader>ft', '<Cmd>Neotree toggle<CR>', {desc = "Open File Tree"})
 | 
					  vim.keymap.set('n', '<C-t>', '<Cmd>Neotree toggle<CR>', { desc = "Open File Tree" })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,47 @@
 | 
				
			||||||
return {
 | 
					return {
 | 
				
			||||||
  'akinsho/toggleterm.nvim', version = "*", config = true,
 | 
					  'akinsho/toggleterm.nvim',
 | 
				
			||||||
 | 
					  version = "*",
 | 
				
			||||||
 | 
					  config = function()
 | 
				
			||||||
 | 
					    require("toggleterm").setup {
 | 
				
			||||||
 | 
					      size = 20,
 | 
				
			||||||
 | 
					      open_mapping = [[<c-\>]],
 | 
				
			||||||
 | 
					      hide_numbers = true,
 | 
				
			||||||
 | 
					      shade_filetypes = {},
 | 
				
			||||||
 | 
					      shade_terminals = true,
 | 
				
			||||||
 | 
					      shading_factor = 2,
 | 
				
			||||||
 | 
					      start_in_insert = true,
 | 
				
			||||||
 | 
					      insert_mappings = true,
 | 
				
			||||||
 | 
					      persist_size = true,
 | 
				
			||||||
 | 
					      direction = "float",
 | 
				
			||||||
 | 
					      auto_scroll = true,
 | 
				
			||||||
 | 
					      close_on_exit = true,
 | 
				
			||||||
 | 
					      shell = vim.o.shell,
 | 
				
			||||||
 | 
					      float_opts = {
 | 
				
			||||||
 | 
					        border = "curved",
 | 
				
			||||||
 | 
					        winblend = 0,
 | 
				
			||||||
 | 
					        highlights = {
 | 
				
			||||||
 | 
					          border = "Normal",
 | 
				
			||||||
 | 
					          background = "Normal",
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    function _G.set_terminal_keymaps()
 | 
				
			||||||
 | 
					      local opts = { buffer = 0 }
 | 
				
			||||||
 | 
					      vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
 | 
				
			||||||
 | 
					      vim.keymap.set('t', 'jk', [[<C-\><C-n>]], opts)
 | 
				
			||||||
 | 
					      vim.keymap.set('t', '<C-[>', [[<Cmd>wincmd h<CR>]], opts)
 | 
				
			||||||
 | 
					      -- vim.keymap.set('t', '<C-j>', [[<Cmd>wincmd j<CR>]], opts)
 | 
				
			||||||
 | 
					      -- vim.keymap.set('t', '<C-k>', [[<Cmd>wincmd k<CR>]], opts)
 | 
				
			||||||
 | 
					      vim.keymap.set('t', '<C-]>', [[<Cmd>wincmd l<CR>]], opts)
 | 
				
			||||||
 | 
					      -- vim.keymap.set('t', '<C-w>', [[<C-\><C-n><C-w>]], opts)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  vim.keymap.set('n', '<C-j>', '<Cmd>ToggleTerm<CR>')
 | 
					      
 | 
				
			||||||
 | 
					      -- vim.keymap.set('n', '<Leader>tt', '<Cmd>ToggleTerm<CR>')
 | 
				
			||||||
 | 
					      -- vim.keymap.set('n', '<Leader>t1', '<Cmd>1ToggleTerm<CR>')
 | 
				
			||||||
 | 
					      -- vim.keymap.set('n', '<Leader>t2', '<Cmd>2ToggleTerm<CR>')
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- if you only want these mappings for toggle term use term://*toggleterm#* instead
 | 
				
			||||||
 | 
					    vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,22 +8,62 @@ return {
 | 
				
			||||||
      build_dir = 'build',
 | 
					      build_dir = 'build',
 | 
				
			||||||
      executable = 'latexmk',
 | 
					      executable = 'latexmk',
 | 
				
			||||||
      options = {
 | 
					      options = {
 | 
				
			||||||
        '-pdf',
 | 
					        '-pdflua',
 | 
				
			||||||
        '-interaction=nonstopmode',
 | 
					        '-interaction=nonstopmode',
 | 
				
			||||||
        '-synctex=1',
 | 
					        '-synctex=1',
 | 
				
			||||||
 | 
					        '-file-line-error',
 | 
				
			||||||
 | 
					        '-verbose',
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    -- Enable automatic compilation on save
 | 
					    -- Enable automatic compilation on save
 | 
				
			||||||
    vim.g.vimtex_autocompile = {
 | 
					    vim.g.vimtex_autocompile = {
 | 
				
			||||||
 | 
					      callback = 1,
 | 
				
			||||||
      continuous = 1,
 | 
					      continuous = 1,
 | 
				
			||||||
      on_insert_leave = 1,
 | 
					      on_insert_leave = 1,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Turn off VimTeX indentation
 | 
				
			||||||
 | 
					    -- vim.g.vimtex_indent_enabled = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Disable default mappings; I'll define my own
 | 
				
			||||||
 | 
					    -- vim.g.vimtex_mappings_enabled = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Disable insert mode mappings (in favor of a dedicated snippet engine)
 | 
				
			||||||
 | 
					    -- vim.g.vimtex_imaps_enabled = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Disable syntax conceal
 | 
				
			||||||
 | 
					    vim.g.vimtex_syntax_conceal_disable = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Default is 500 lines and gave me lags on missed key presses
 | 
				
			||||||
 | 
					    vim.g.vimtex_delim_stopline = 50
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- VimTeX toggle delimeter configuration
 | 
				
			||||||
 | 
					    vim.g.vimtex_delim_toggle_mod_list = {
 | 
				
			||||||
 | 
					      {'\\left', '\\right'},
 | 
				
			||||||
 | 
					      {'\\big', '\\big'},
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    -- Don't open quickfix for warning messages if no errors are present
 | 
				
			||||||
 | 
					    vim.g.vimtex_quickfix_open_on_warning = 0  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    --Disable some compilation warning messages
 | 
				
			||||||
 | 
					    vim.g.vimtex_quickfix_ignore_filters = {
 | 
				
			||||||
 | 
					      'LaTeX hooks Warning',
 | 
				
			||||||
 | 
					      'Underfull \\hbox',
 | 
				
			||||||
 | 
					      'Overfull \\hbox',
 | 
				
			||||||
 | 
					      'LaTeX Warning: .+ float specifier changed to',
 | 
				
			||||||
 | 
					      'Package siunitx Warning: Detected the "physics" package:',
 | 
				
			||||||
 | 
					      'Package hyperref Warning: Token not allowed in a PDF string',
 | 
				
			||||||
 | 
					      'Fatal error occurred, no output PDF file produced!',
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    -- Enable PDF preview using your favorite PDF viewer
 | 
					    -- Enable PDF preview using your favorite PDF viewer
 | 
				
			||||||
    vim.g.vimtex_view_method = 'zathura'
 | 
					    vim.g.vimtex_view_method = 'zathura_simple'
 | 
				
			||||||
    -- vim.g.vimtex_view_general_viewer = 'okular'
 | 
					    -- vim.g.vimtex_view_general_viewer = 'okular'
 | 
				
			||||||
    -- vim.g.vimtex_view_general_options = '--unique file:@pdf\\#src:@line@tex'
 | 
					    -- vim.g.vimtex_view_general_options = '--unique file:@pdf\\#src:@line@tex'
 | 
				
			||||||
  end,
 | 
					    -- Define the VimtexHookZathura function
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					end,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,42 @@
 | 
				
			||||||
 | 
					local M = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local ls = require("luasnip")
 | 
				
			||||||
 | 
					local sn = ls.snippet_node
 | 
				
			||||||
 | 
					local i = ls.insert_node
 | 
				
			||||||
 | 
					local s = ls.snippet
 | 
				
			||||||
 | 
					local isn = ls.indent_snippet_node
 | 
				
			||||||
 | 
					local t = ls.text_node
 | 
				
			||||||
 | 
					local f = ls.function_node
 | 
				
			||||||
 | 
					local c = ls.choice_node
 | 
				
			||||||
 | 
					local d = ls.dynamic_node
 | 
				
			||||||
 | 
					local r = ls.restore_node
 | 
				
			||||||
 | 
					local events = require("luasnip.util.events")
 | 
				
			||||||
 | 
					local ai = require("luasnip.nodes.absolute_indexer")
 | 
				
			||||||
 | 
					local fmt = require("luasnip.extras.fmt").fmt
 | 
				
			||||||
 | 
					local m = require("luasnip.extras").m
 | 
				
			||||||
 | 
					local lambda = require("luasnip.extras").l
 | 
				
			||||||
 | 
					local postfix = require("luasnip.extras.postfix").postfix
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ls.config.setup{
 | 
				
			||||||
 | 
					  -- Allow autotrigger snippets
 | 
				
			||||||
 | 
					  enable_autosnippets = true,
 | 
				
			||||||
 | 
					  -- For equivalent of UltiSnips visual selection
 | 
				
			||||||
 | 
					  store_selection_keys = "<Tab>",
 | 
				
			||||||
 | 
					  -- Event on which to check for exiting a snippet's region
 | 
				
			||||||
 | 
					  region_check_events = 'InsertEnter',
 | 
				
			||||||
 | 
					  delete_check_events = 'InsertLeave',
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function M.get_ISO_8601_date()
 | 
				
			||||||
 | 
					  return os.date("%Y-%m-%d")
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function M.get_visual(args, parent)
 | 
				
			||||||
 | 
					  if (#parent.snippet.env.LS_SELECT_RAW > 0) then
 | 
				
			||||||
 | 
					    return sn(nil, i(1, parent.snippet.env.LS_SELECT_RAW))
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    return sn(nil, i(1, ''))
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return M
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					Scripts for implementing inverse search between PDF files (generally LaTeX or `lilypond-book` output) and the corresponding text source files in the Neovim text editor.
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,53 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					# A script to manage inverse search from both LyTeX and LaTeX files
 | 
				
			||||||
 | 
					# Arguments:
 | 
				
			||||||
 | 
					# 1: line number to display
 | 
				
			||||||
 | 
					#    e.g. "42"
 | 
				
			||||||
 | 
					# 2: path to LaTeX source file
 | 
				
			||||||
 | 
					#    e.g. "$HOME/test/tex/test.tex"
 | 
				
			||||||
 | 
					# 3: operating system name as returned by uname
 | 
				
			||||||
 | 
					#    i.e. "Darwin" on macOS and "Linux" on Linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# echo "${1}\n${2}" > "${HOME}/log.txt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function inverse_search() {
 | 
				
			||||||
 | 
					  # Arguments:
 | 
				
			||||||
 | 
					  # 1: path to Neovim server socket
 | 
				
			||||||
 | 
					  #    e.g. "/tmp/texsocket" or "/tmp/lytexsocket"
 | 
				
			||||||
 | 
					  # 2: line number to display
 | 
				
			||||||
 | 
					  #    e.g. "42"
 | 
				
			||||||
 | 
					  # 3: path to the file to display
 | 
				
			||||||
 | 
					  #    e.g. /Users/ejmastnak/test/tex/test.tex
 | 
				
			||||||
 | 
					  # 4: operating system name as returned by uname
 | 
				
			||||||
 | 
					  #    i.e. "Darwin" on macOS and "Linux" on Linux
 | 
				
			||||||
 | 
					  if [ ${4} = "Darwin" ]  # macOS
 | 
				
			||||||
 | 
					  then
 | 
				
			||||||
 | 
					    nvr --servername="${1}" +"${2}" "${3}" && open -a Alacritty
 | 
				
			||||||
 | 
					  else  # Linux/other
 | 
				
			||||||
 | 
					    nvr --servername="${1}" +"${2}" "${3}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# read first line of /tmp/inverse-search-target.txt into the variable target
 | 
				
			||||||
 | 
					read -r target < /tmp/inverse-search-target.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ ${target} = "TEX" ]  # standard TEX inverse search
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					  inverse_search "/tmp/texsocket" "${1}" "${2}" "${3}"
 | 
				
			||||||
 | 
					elif [ ${target} = "LYTEX" ]  # LilyPond LYTEX inverse search
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # change extension from ".tex" to ".lytex" using "${2%"tex"}lytex"
 | 
				
			||||||
 | 
					  # replace "lilybook-out/" with "" sed using 's/lilybook-out\///'
 | 
				
			||||||
 | 
					  lytex_file=$(echo "${2%"tex"}lytex" | sed 's/lilybook-out\///')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # get line in LYTEX file corresponding to line in TEX file
 | 
				
			||||||
 | 
					  lytex_to_tex_script="$HOME/.config/nvim/personal/lilypond-scripts/lytex-to-tex.sh"
 | 
				
			||||||
 | 
					  lytex_line=$(sh "${lytex_to_tex_script}" ${1} "${2}" "${lytex_file}")
 | 
				
			||||||
 | 
					  inverse_search "/tmp/lytexsocket" "${lytex_line}" "${lytex_file}" "${3}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # echo "TEX line: ${1}"
 | 
				
			||||||
 | 
					  # echo "LYTEX line: ${lytex_line}"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					# Used for inverse search from a PDF in Zathura 
 | 
				
			||||||
 | 
					# to the corresponding *.tex in Neovim on Linux.
 | 
				
			||||||
 | 
					# xdotool is used to return focus to the Vim window.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# SYNOPSIS
 | 
				
			||||||
 | 
					#   inverse <tex_file> <line_num> <window_id>
 | 
				
			||||||
 | 
					# ARGUMENT
 | 
				
			||||||
 | 
					#    <tex_file>
 | 
				
			||||||
 | 
					#     Path to the LaTeX file to open in Neovim
 | 
				
			||||||
 | 
					#    
 | 
				
			||||||
 | 
					#    <line_num>
 | 
				
			||||||
 | 
					#     Line number to move the cursor to in the opened LaTeX file
 | 
				
			||||||
 | 
					#    
 | 
				
			||||||
 | 
					#    <window_id>
 | 
				
			||||||
 | 
					#     Numerical ID of the window in which Vim is running
 | 
				
			||||||
 | 
					#     as returned by `xdotool getactivewindow`.
 | 
				
			||||||
 | 
					#     E.g. 10485762
 | 
				
			||||||
 | 
					nvr --remote-silent --servername=/tmp/texsocket +"${2}" "${1}"
 | 
				
			||||||
 | 
					xdotool windowfocus ${3}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue