From 1f58b9f1368c65c23054c6c631ea60eed1c08265 Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 17 Dec 2025 16:52:51 +0000 Subject: [PATCH] More snippets --- lua/snippets/php.lua | 261 +++++++++++++++++++----------------- lua/snippets/snip_utils.lua | 16 +++ 2 files changed, 153 insertions(+), 124 deletions(-) diff --git a/lua/snippets/php.lua b/lua/snippets/php.lua index 694bbcc..f1585bd 100644 --- a/lua/snippets/php.lua +++ b/lua/snippets/php.lua @@ -16,6 +16,7 @@ local fmta = extend_decorator.apply(fmt, { delimiters = '#~' }) local utils = require 'snippets.snip_utils' local tr = utils.tr local etr = utils.etr +local Etr = utils.Etr local atr = utils.atr local ctr = utils.ctr local bs = utils.bs @@ -69,10 +70,10 @@ return { --------------- -- DEBUGGING -- --------------- - s(etr('du ', 'Dump a variable to the dump server'), fmta('dump(#~);', { i(0) })), - bs(atr('du ', 'Dump a variable to the dump server'), fmta('dump(#~)', { i(0) })), - s(etr('r ', 'ray'), fmta('ray(#~);', { i(0) })), - bs(atr('r ', 'ray'), fmta('ray(#~)', { i(0) })), + s(etr('du ', 'Dump a variable to the dump server', { priority = 1001 }), fmta('dump(#~);', { i(0) })), + bs(etr('du ', 'Dump a variable to the dump server'), fmta('dump(#~)', { i(0) })), + s(etr('r ', 'ray', { priority = 1001 }), fmta('ray(#~);', { i(0) })), + bs(etr('r ', 'ray'), fmta('ray(#~)', { i(0) })), s(etr('dt ', 'Dump PHPStan type definition'), fmta('\\PhpStan\\dumpType(#~);', { i(0) })), s( etr('ql ', 'Log all queries'), @@ -107,6 +108,7 @@ return { }), s(etr('@v', '@var docblock'), fmta('/** @var #~ $#~ */', { i(1), i(0) })), s(ctr('@v', '@var docblock'), fmta('@var #~ $#~', { i(1), i(0) })), + s(Etr('@pi', '@phpstan-ignore'), fmta('// @phpstan-ignore #~ (#~)', { i(1), i(0) })), s(ctr('* @pr', 'Class property docblock'), fmta('* @property #~ $#~', { i(1), i(0) })), s(ctr('* @pb', 'Class boolean property docblock'), fmta('* @property bool $#~', { i(0) })), s(ctr('* @pi', 'Class int property docblock'), fmta('* @property int $#~', { i(0) })), @@ -212,36 +214,36 @@ return { ), }), }), - s( - etr('con', 'Constructor function block'), - c(1, { - sn( - nil, - fmta( - [[ - public function __construct(#~) - { - #~ - } - ]], - { i(1), i(2) } - ) - ), - sn( - nil, - fmta( - [[ - public function __construct( - #~ - ) { - #~ - } - ]], - { i(1), i(2) } - ) - ), - }) - ), + -- s( + -- etr('con', 'Constructor function block'), + -- c(1, { + -- sn( + -- nil, + -- fmta( + -- [[ + -- public function __construct(#~) + -- { + -- #~ + -- } + -- ]], + -- { i(1), i(2) } + -- ) + -- ), + -- sn( + -- nil, + -- fmta( + -- [[ + -- public function __construct( + -- #~ + -- ) { + -- #~ + -- } + -- ]], + -- { i(1), i(2) } + -- ) + -- ), + -- }) + -- ), bs(atr('function', 'Shorthand function block'), fmta('fun', {})), bs(atr('s%$', 'string type parameter'), fmta('string $#~', { i(0, 'var') })), bs(atr('i%$', 'int type parameter'), fmta('int $#~', { i(0, 'var') })), @@ -358,9 +360,20 @@ return { etr('test', 'Create a test function'), fmta( [[ - test(#~ function () { + test('#~', function () { #~ - }) + }); + ]], + { i(1), i(0) } + ) + ), + s( + etr('it ', 'Create a test function'), + fmta( + [[ + it('#~', function () { + #~ + }); ]], { i(1), i(0) } ) @@ -509,92 +522,92 @@ return { ), }) ), - s( - atr('->wr', 'Eloquent where method'), - c(0, { - sn(nil, fmta("->where('#~', #~)", { i(1), i(0) })), - sn(nil, fmta('->where(fn ($query) => #~)', { i(0) })), - sn( - nil, - fmta( - [[ - ->where(function ($query) { - #~ - }) - ]], - { i(0) } - ) - ), - sn( - nil, - fmta( - [[ - ->where(function ($query) use (#~) { - #~ - }) - ]], - { i(1), i(0) } - ) - ), - }) - ), - s(atr('->wi', 'Eloquent where in method'), fmta("->whereIn('#~', #~)", { i(1), i(0) })), - s(atr('->wn', 'Eloquent where not in method'), fmta("->whereNotIn('#~', #~)", { i(1), i(0) })), - s( - atr('->wh', 'Eloquent where has method'), - c(0, { - sn(nil, fmta("->whereHas('#~')", { i(1) })), - sn(nil, fmta("->whereHas('#~', fn ($query) => #~)", { i(1), i(0) })), - sn( - nil, - fmta( - [[ - ->whereHas('#~', function ($query) { - #~ - }) - ]], - { i(1), i(0) } - ) - ), - sn( - nil, - fmta( - [[ - ->whereHas('#~', function ($query) use (#~) { - #~ - }) - ]], - { i(1), i(2), i(0) } - ) - ), - }) - ), - s( - atr('->we', 'Eloquent where exists method'), - c(0, { - sn(nil, fmta('->whereExists(fn ($query) => #~)', { i(0) })), - sn( - nil, - fmta( - [[ - ->whereExists(function ($query) { - #~ - }) - ]], - { i(0) } - ) - ), - sn( - nil, - fmta( - [[ - ->whereExists(function ($query) use (#~) { - #~ - }) - ]], - { i(1), i(0) } - ) - ), - }) - ), + -- s( + -- atr('->wr', 'Eloquent where method'), + -- c(0, { + -- sn(nil, fmta("->where('#~', #~)", { i(1), i(0) })), + -- sn(nil, fmta('->where(fn ($query) => #~)', { i(0) })), + -- sn( + -- nil, + -- fmta( + -- [[ + -- ->where(function ($query) { + -- #~ + -- }) + -- ]], + -- { i(0) } + -- ) + -- ), + -- sn( + -- nil, + -- fmta( + -- [[ + -- ->where(function ($query) use (#~) { + -- #~ + -- }) + -- ]], + -- { i(1), i(0) } + -- ) + -- ), + -- }) + -- ), + -- s(atr('->wi', 'Eloquent where in method'), fmta("->whereIn('#~', #~)", { i(1), i(0) })), + -- s(atr('->wn', 'Eloquent where not in method'), fmta("->whereNotIn('#~', #~)", { i(1), i(0) })), + -- s( + -- atr('->wha', 'Eloquent where has method'), + -- c(0, { + -- sn(nil, fmta("->whereHas('#~')", { i(1) })), + -- sn(nil, fmta("->whereHas('#~', fn ($query) => #~)", { i(1), i(0) })), + -- sn( + -- nil, + -- fmta( + -- [[ + -- ->whereHas('#~', function ($query) { + -- #~ + -- }) + -- ]], + -- { i(1), i(0) } + -- ) + -- ), + -- sn( + -- nil, + -- fmta( + -- [[ + -- ->whereHas('#~', function ($query) use (#~) { + -- #~ + -- }) + -- ]], + -- { i(1), i(2), i(0) } + -- ) + -- ), + -- }) + -- ), + -- s( + -- atr('->we', 'Eloquent where exists method'), + -- c(0, { + -- sn(nil, fmta('->whereExists(fn ($query) => #~)', { i(0) })), + -- sn( + -- nil, + -- fmta( + -- [[ + -- ->whereExists(function ($query) { + -- #~ + -- }) + -- ]], + -- { i(0) } + -- ) + -- ), + -- sn( + -- nil, + -- fmta( + -- [[ + -- ->whereExists(function ($query) use (#~) { + -- #~ + -- }) + -- ]], + -- { i(1), i(0) } + -- ) + -- ), + -- }) + -- ), } diff --git a/lua/snippets/snip_utils.lua b/lua/snippets/snip_utils.lua index 0965a48..6749b1b 100644 --- a/lua/snippets/snip_utils.lua +++ b/lua/snippets/snip_utils.lua @@ -11,6 +11,7 @@ local d = ls.dynamic_node local fmt = require('luasnip.extras.fmt').fmt local rep = require('luasnip.extras').rep local line_begin = require('luasnip.extras.conditions').line_begin +local line_end = require('luasnip.extras.conditions').line_end local extend_decorator = require 'luasnip.util.extend_decorator' local fmta = extend_decorator.apply(fmt, { delimiters = '#~' }) @@ -109,6 +110,21 @@ utils.atr = function(trigger, description, options) ) end +--- Create a trigger for a snippet to expand at the end of a line +---@param trigger string +---@param description? string +---@param options? table +---@return table +utils.Etr = function(trigger, description, options) + return utils.tr( + trigger, + description, + vim.tbl_extend('force', { + condition = line_end + }, options or {}) + ) +end + --- Create a snippet that will expand anywhere but in the middle of a word ---@param trigger any ---@param nodes any