195 lines
5.3 KiB
Plaintext
195 lines
5.3 KiB
Plaintext
global !p
|
|
def complete(t, opts):
|
|
if t:
|
|
opts = [ m[len(t):] for m in opts if m.startswith(t) ]
|
|
if len(opts) == 1:
|
|
return opts[0]
|
|
if len(opts) > 5:
|
|
opts = opts[0:5]
|
|
return "(" + "|".join(opts) + ")"
|
|
|
|
def find_candidate(tabstop, search_type):
|
|
# Split up the tabstop on semicolons
|
|
items = tabstop.replace("\n", "").replace(" ", "").split(";")
|
|
|
|
# find multiple same time assignments (a, b : Integer)
|
|
single_items = []
|
|
for item in items:
|
|
if (len(item.split(",")) > 1) and (len(item.split(":")) > 1):
|
|
variables = item.split(":")[0]
|
|
multi_type = item.split(":")[1]
|
|
for variable in variables.split(","):
|
|
single_items.append(f"{variable}:{multi_type}")
|
|
else:
|
|
single_items.append(item)
|
|
for candidate in single_items:
|
|
if len(candidate.split(":")) > 1:
|
|
name = candidate.split(":")[0]
|
|
candidate_type = candidate.split(":")[1]
|
|
else:
|
|
name = "None"
|
|
candidate_type = ""
|
|
|
|
if candidate_type == search_type:
|
|
return name
|
|
return "None"
|
|
endglobal
|
|
|
|
snippet helloworld "Hello world example to test features" b
|
|
-- `!p snip.rv = fn`
|
|
-- Created on: `date`
|
|
-- Author(s): Yannick Reiss <yannick.reiss@nickr.eu>
|
|
-- Content: Hello world example
|
|
with Ada.Text_IO; use Ada.Text_IO;
|
|
|
|
-- @name ${1:`!p snip.rv = fn[0].upper() + fn[1:].split('.')[0]`}
|
|
-- @return
|
|
-- @description Function printing hello world.
|
|
procedure $1 is
|
|
|
|
begin
|
|
${2:Put_Line ("Hello world!");}
|
|
end $1;$0
|
|
endsnippet
|
|
|
|
snippet docstring "Document String with most important information" b
|
|
-- `!p snip.rv = fn`
|
|
-- Created on: `date`
|
|
-- Author(s): ${1:Yannick Reiß}
|
|
-- Description: ${2:`!p snip.rv = fn.split('.')[0]`}
|
|
$0
|
|
endsnippet
|
|
|
|
snippet procedure "insert procedure" b
|
|
-- @name $1
|
|
-- @return
|
|
`!p
|
|
snip.rv = ""
|
|
if t[2].startswith("l"):
|
|
parameters = []
|
|
else:
|
|
parameters = t[2].replace("; ", ";").replace('in ', '').replace('out ', '')
|
|
parameters = parameters.replace(' ', '').split(";");
|
|
parameter_list = []
|
|
for parameter in parameters:
|
|
if len(parameter.split(',')) == 1:
|
|
parameter_list.append(parameter)
|
|
else:
|
|
try:
|
|
list_type = parameter.split(':')[1]
|
|
except:
|
|
list_type = "???"
|
|
list_parameters = parameter.split(':')[0].replace(' ', '').split(',')
|
|
for sub_parameter in list_parameters:
|
|
parameter_list.append(f"{sub_parameter}\t:\t{list_type}")
|
|
for parameter in parameter_list:
|
|
if not parameter == "" and not parameter.startswith("typ"):
|
|
parameterless = parameter.replace("\t", "")
|
|
snip.rv += f"-- @parameter {parameterless}\n"
|
|
``!p
|
|
snip.rv = ""
|
|
if t[3].startswith("l"):
|
|
variables = []
|
|
else:
|
|
variables = t[3].replace("\n", "").split(";");
|
|
for variable in variables:
|
|
if not variable == "" and not variable.startswith("typ"):
|
|
variableless = variable.replace("\t", "").replace (" ", "")
|
|
snip.rv += f"\t-- @variable {variableless}\n"
|
|
`-- @description $4
|
|
procedure ${1:`!p snip.rv = fn.split('.')[0].capitalize()`} `!p snip.rv = "" if t[2] == "" else "("`${2:N : Natural}`!p snip.rv = "" if t[2] == "" else ")"` is
|
|
$3
|
|
begin
|
|
$5
|
|
end $1;$0
|
|
endsnippet
|
|
|
|
snippet function "insert function" b
|
|
-- @name $1
|
|
-- @return $3
|
|
`!p
|
|
snip.rv = ""
|
|
if t[2].startswith("l"):
|
|
parameters = []
|
|
else:
|
|
parameters = t[2].replace("; ", ";").replace('in ', '').replace('out ', '')
|
|
parameters = parameters.replace(' ', '').split(";");
|
|
parameter_list = []
|
|
for parameter in parameters:
|
|
if len(parameter.split(',')) == 1:
|
|
parameter_list.append(parameter)
|
|
else:
|
|
try:
|
|
list_type = parameter.split(':')[1]
|
|
except:
|
|
list_type = "???"
|
|
list_parameters = parameter.split(':')[0].replace(' ', '').split(',')
|
|
for sub_parameter in list_parameters:
|
|
parameter_list.append(f"{sub_parameter}\t:\t{list_type}")
|
|
for parameter in parameter_list:
|
|
if not parameter == "" and not parameter.startswith("typ"):
|
|
parameterless = parameter.replace("\t", "")
|
|
snip.rv += f"\t-- @parameter {parameterless}\n"
|
|
``!p
|
|
snip.rv = ""
|
|
if t[4].startswith("l"):
|
|
variables = []
|
|
else:
|
|
variables = t[4].replace("\n", "").split(";");
|
|
for variable in variables:
|
|
if not variable == "" and not variable.startswith("typ") and not variable.startswith("--"):
|
|
variableless = variable.replace("\t", "").replace (" ", "")
|
|
snip.rv += f"\t-- @variable {variableless}\n"
|
|
` -- @description $5
|
|
function ${1:`!p snip.rv = fn.split('.')[0].capitalize()`} `!p snip.rv = "" if t[2] == "" else "("`${2:N : Natural}`!p snip.rv = "" if t[2] == "" else ")"` return ${3:Natural} is
|
|
$4
|
|
begin
|
|
$6
|
|
|
|
return `!p
|
|
candidate = find_candidate(t[4], t[3])
|
|
if candidate == "None":
|
|
candidate = find_candidate(t[2], t[3])
|
|
if candidate == "None":
|
|
candidate = t[1]
|
|
snip.rv = candidate
|
|
`;
|
|
end $1;$0
|
|
endsnippet
|
|
|
|
snippet type "declare a new type" bA
|
|
type ${1:TypeName} is ${2:array($3..$4) of }`!p
|
|
if t[2] == "record":
|
|
snip.rv = "\n\t\t"
|
|
else:
|
|
snip.rv = ""`$5`!p
|
|
if t[2] == "record":
|
|
snip.rv = "\n\tend record"
|
|
else:
|
|
snip.rv = ""
|
|
`;$0
|
|
endsnippet
|
|
|
|
snippet project "Project" b
|
|
project ${1:Default} is
|
|
for Source_Dirs use ("${2:src}");
|
|
for Object_Dir use "${3:obj}";
|
|
for Exec_Dir use "${4:bin}";
|
|
for Main use ("${5:main.adb}");
|
|
for Languages use ("Ada");
|
|
end $1;
|
|
-- Create dir? (y/): ${6:no}`!p
|
|
from os import system
|
|
if t[6] == "y":
|
|
system(f"mkdir -p {t[2]}")
|
|
system(f"mkdir -p {t[3]}")
|
|
system(f"mkdir -p {t[4]}")`
|
|
endsnippet
|
|
|
|
snippet package "Create package configuration" b
|
|
package ${1:body }${2:`!p package_name = fn.split('.')[0]
|
|
snip.rv = package_name[0].upper() + package_name[1:]`} is
|
|
$0
|
|
end $2;
|
|
endsnippet
|