From da8f068975c34fd95d87f6a94101c46ad77c1722 Mon Sep 17 00:00:00 2001 From: kj Date: Tue, 29 Mar 2022 19:21:13 -0400 Subject: [PATCH] First commit. --- configs/base-extensions.el | 626 ++++++++++++++++++ configs/base-functions.el | 46 ++ configs/base-keys.el | 29 + configs/base.el | 124 ++++ configs/lang-go.el | 14 + configs/lang-js.el | 28 + configs/lang-php.el | 30 + duck-small.png | Bin 0 -> 60638 bytes emacs-client-runner.sh | 21 + init.el | 24 + .../packages/php-doc-block/php-doc-block.el | 120 ++++ readme.md | 61 ++ snippets/css-mode/import | 6 + snippets/css-mode/importfont | 6 + snippets/css-mode/importurl | 6 + snippets/css-mode/margin | 6 + snippets/css-mode/media | 8 + snippets/css-mode/media_orientation | 5 + snippets/css-mode/media_print | 6 + snippets/css-mode/padding | 6 + snippets/css-mode/property | 6 + snippets/go-mode/append | 4 + snippets/go-mode/coloneq | 6 + snippets/go-mode/const | 5 + snippets/go-mode/ctxc | 4 + snippets/go-mode/f | 6 + snippets/go-mode/fm | 6 + snippets/go-mode/for | 6 + snippets/go-mode/fore | 6 + snippets/go-mode/foreach | 6 + snippets/go-mode/fori | 6 + snippets/go-mode/forw | 6 + snippets/go-mode/func | 6 + snippets/go-mode/go | 4 + snippets/go-mode/gof | 6 + snippets/go-mode/gofunc | 6 + snippets/go-mode/if | 7 + snippets/go-mode/ife | 9 + snippets/go-mode/iferr | 6 + snippets/go-mode/imp | 4 + snippets/go-mode/import | 4 + snippets/go-mode/interface | 6 + snippets/go-mode/main | 6 + snippets/go-mode/map | 4 + snippets/go-mode/method | 6 + snippets/go-mode/package | 4 + snippets/go-mode/pkg | 4 + snippets/go-mode/pr | 4 + snippets/go-mode/printf | 4 + snippets/go-mode/println | 4 + snippets/go-mode/prln | 4 + snippets/go-mode/select | 7 + snippets/go-mode/struct | 6 + snippets/go-mode/switch | 9 + snippets/go-mode/test | 6 + snippets/go-mode/var | 4 + snippets/go-mode/while | 6 + snippets/go-mode/wr | 4 + snippets/html-mode/dd | 6 + snippets/html-mode/dl | 8 + snippets/html-mode/doctype | 5 + snippets/html-mode/doctype.xhml1 | 5 + snippets/html-mode/doctype.xhtml1_1 | 5 + snippets/html-mode/doctype.xhtml1_strict | 5 + .../html-mode/doctype.xhtml1_transitional | 5 + snippets/html-mode/dt | 6 + snippets/html-mode/form | 7 + snippets/html-mode/html | 7 + snippets/html-mode/html.xmlns | 7 + snippets/html-mode/link | 6 + snippets/html-mode/linkie | 6 + snippets/html-mode/mailto | 4 + snippets/html-mode/meta | 6 + snippets/html-mode/meta.http-equiv | 6 + snippets/html-mode/script | 6 + snippets/html-mode/scriptsrc | 4 + snippets/html-mode/textarea | 5 + snippets/html-mode/th | 6 + snippets/java-mode/@param | 7 + snippets/java-mode/@return | 7 + snippets/java-mode/apr_assert | 8 + snippets/java-mode/class | 8 + snippets/java-mode/constructor | 8 + snippets/java-mode/doc | 9 + snippets/java-mode/equals | 8 + snippets/java-mode/file_class | 10 + snippets/java-mode/for | 8 + snippets/java-mode/foreach | 8 + snippets/java-mode/if | 9 + snippets/java-mode/ife | 10 + snippets/java-mode/import | 5 + snippets/java-mode/interface | 8 + snippets/java-mode/iterator | 8 + snippets/java-mode/javadoc | 9 + snippets/java-mode/main | 8 + snippets/java-mode/method | 9 + snippets/java-mode/method@ | 9 + snippets/java-mode/new | 6 + snippets/java-mode/paintComponent | 9 + snippets/java-mode/printf | 6 + snippets/java-mode/println | 6 + snippets/java-mode/private | 6 + snippets/java-mode/protected | 6 + snippets/java-mode/public | 6 + snippets/java-mode/return | 7 + snippets/java-mode/test | 9 + snippets/java-mode/testClass | 13 + snippets/java-mode/this | 6 + snippets/java-mode/toString | 8 + snippets/java-mode/try | 12 + snippets/java-mode/var | 7 + snippets/java-mode/var= | 7 + snippets/java-mode/void | 6 + snippets/java-mode/while | 9 + snippets/js-mode/Math | 6 + snippets/js-mode/addEventListener | 8 + snippets/js-mode/alert | 6 + snippets/js-mode/arrow | 6 + snippets/js-mode/cl | 6 + snippets/js-mode/class | 6 + snippets/js-mode/const | 6 + snippets/js-mode/constructor | 6 + snippets/js-mode/decodeURI | 6 + snippets/js-mode/decodeURIComponent | 6 + snippets/js-mode/document | 6 + snippets/js-mode/else | 6 + snippets/js-mode/encodeURI | 6 + snippets/js-mode/encodeURIComponent | 6 + snippets/js-mode/exports | 6 + snippets/js-mode/filter | 6 + snippets/js-mode/filter-arrow | 6 + snippets/js-mode/filter-function | 8 + snippets/js-mode/fireEvent | 4 + snippets/js-mode/for | 8 + snippets/js-mode/forEach | 6 + snippets/js-mode/forEach-arrow | 6 + snippets/js-mode/forEach-function | 8 + snippets/js-mode/fori | 8 + snippets/js-mode/forin | 8 + snippets/js-mode/fu | 6 + snippets/js-mode/function | 9 + snippets/js-mode/function_inline | 7 + snippets/js-mode/getElementById | 6 + snippets/js-mode/if | 6 + snippets/js-mode/imp | 6 + snippets/js-mode/import | 5 + snippets/js-mode/indexOf | 6 + snippets/js-mode/jsdoc | 8 + snippets/js-mode/let | 4 + snippets/js-mode/log | 4 + snippets/js-mode/map | 6 + snippets/js-mode/map-arrow | 6 + snippets/js-mode/map-function | 8 + snippets/js-mode/method | 8 + snippets/js-mode/property | 6 + snippets/js-mode/push | 6 + snippets/js-mode/req | 6 + snippets/js-mode/require | 5 + snippets/js-mode/return | 6 + snippets/js-mode/try | 8 + snippets/js-mode/var | 6 + snippets/js-mode/while | 4 + snippets/json-mode/eslintConfig | 19 + snippets/kotlin-mode/class | 8 + snippets/kotlin-mode/file_class | 8 + snippets/kotlin-mode/forin | 8 + snippets/kotlin-mode/fun | 8 + snippets/kotlin-mode/if | 8 + snippets/kotlin-mode/ife | 10 + snippets/kotlin-mode/interface | 8 + snippets/kotlin-mode/main | 8 + snippets/kotlin-mode/todo | 6 + snippets/kotlin-mode/val | 6 + snippets/kotlin-mode/val= | 6 + snippets/kotlin-mode/var | 6 + snippets/kotlin-mode/var= | 6 + snippets/kotlin-mode/while | 8 + snippets/markdown-mode/code | 6 + snippets/markdown-mode/h1 | 6 + snippets/markdown-mode/h2 | 6 + snippets/markdown-mode/h3 | 6 + snippets/markdown-mode/h4 | 6 + snippets/markdown-mode/h5 | 6 + snippets/markdown-mode/h6 | 6 + snippets/markdown-mode/hr | 7 + snippets/markdown-mode/img | 4 + snippets/markdown-mode/kbd | 4 + snippets/markdown-mode/link | 4 + snippets/markdown-mode/ol | 5 + snippets/markdown-mode/rimg | 4 + snippets/markdown-mode/rlb | 6 + snippets/markdown-mode/rlink | 4 + snippets/markdown-mode/utf8 | 5 + snippets/org-mode/begin_center | 8 + snippets/org-mode/begin_comment | 8 + snippets/org-mode/begin_example | 8 + snippets/org-mode/begin_export | 6 + snippets/org-mode/begin_export_ascii | 8 + snippets/org-mode/begin_export_html | 8 + snippets/org-mode/begin_export_latex | 8 + snippets/org-mode/begin_quote | 8 + snippets/org-mode/begin_src | 6 + snippets/org-mode/begin_verse | 6 + snippets/org-mode/blog | 14 + snippets/org-mode/chinese_dollar | 7 + snippets/org-mode/chinese_link | 7 + snippets/org-mode/code | 8 + snippets/org-mode/dot | 10 + snippets/org-mode/elisp | 8 + snippets/org-mode/entry | 12 + snippets/org-mode/example | 8 + snippets/org-mode/export | 8 + snippets/org-mode/figure | 8 + snippets/org-mode/head | 8 + snippets/org-mode/img | 8 + snippets/org-mode/inline | 6 + snippets/org-mode/inline_source | 7 + snippets/org-mode/jupyter | 9 + snippets/org-mode/latex | 8 + snippets/org-mode/matrix | 12 + snippets/org-mode/name | 6 + snippets/org-mode/quote | 8 + snippets/org-mode/src | 8 + snippets/org-mode/todo | 6 + snippets/org-mode/verse | 8 + snippets/org-mode/width | 4 + snippets/php-mode/abstract-class | 9 + snippets/php-mode/array | 6 + snippets/php-mode/assignment | 6 + snippets/php-mode/break | 6 + snippets/php-mode/class | 9 + snippets/php-mode/continue | 6 + snippets/php-mode/define | 6 + snippets/php-mode/echo | 6 + snippets/php-mode/else | 8 + snippets/php-mode/elseif | 8 + snippets/php-mode/for | 8 + snippets/php-mode/foreach | 8 + snippets/php-mode/fori | 8 + snippets/php-mode/function | 8 + snippets/php-mode/if | 8 + snippets/php-mode/include | 6 + snippets/php-mode/include_once | 6 + snippets/php-mode/method | 9 + snippets/php-mode/object-accessor | 6 + snippets/php-mode/parent | 6 + snippets/php-mode/php | 6 + snippets/php-mode/phpdoc | 8 + snippets/php-mode/require | 6 + snippets/php-mode/require_once | 6 + snippets/php-mode/self | 6 + snippets/php-mode/shebang | 9 + snippets/php-mode/shorttag-print | 6 + snippets/php-mode/switch | 6 + snippets/php-mode/this | 6 + snippets/php-mode/urldecode | 6 + snippets/php-mode/urlencode | 6 + snippets/php-mode/var_dump | 6 + snippets/php-mode/while | 6 + snippets/scala-mode/List | 4 + snippets/scala-mode/app | 6 + snippets/scala-mode/case | 4 + snippets/scala-mode/cons | 4 + snippets/scala-mode/def | 6 + snippets/scala-mode/if | 6 + snippets/scala-mode/main | 6 + snippets/scala-mode/throw | 4 + snippets/scala-mode/try | 9 + snippets/sh-mode/alias | 6 + snippets/sh-mode/args | 6 + snippets/sh-mode/bang | 7 + snippets/sh-mode/case | 8 + snippets/sh-mode/elif | 7 + snippets/sh-mode/else | 7 + snippets/sh-mode/f | 8 + snippets/sh-mode/for | 8 + snippets/sh-mode/for-one-line | 6 + snippets/sh-mode/function | 6 + snippets/sh-mode/function-one-line | 6 + snippets/sh-mode/getopts | 13 + snippets/sh-mode/gt | 6 + snippets/sh-mode/if | 6 + snippets/sh-mode/if-one-line | 6 + snippets/sh-mode/ife | 10 + snippets/sh-mode/local | 4 + snippets/sh-mode/lt | 6 + snippets/sh-mode/var | 6 + snippets/sql-mode/column | 5 + snippets/sql-mode/constraint | 5 + snippets/sql-mode/constraint.1 | 5 + snippets/sql-mode/create | 11 + snippets/sql-mode/create.1 | 13 + snippets/sql-mode/references | 5 + 293 files changed, 3002 insertions(+) create mode 100644 configs/base-extensions.el create mode 100644 configs/base-functions.el create mode 100644 configs/base-keys.el create mode 100644 configs/base.el create mode 100644 configs/lang-go.el create mode 100644 configs/lang-js.el create mode 100644 configs/lang-php.el create mode 100644 duck-small.png create mode 100755 emacs-client-runner.sh create mode 100644 init.el create mode 100755 private/packages/php-doc-block/php-doc-block.el create mode 100644 readme.md create mode 100644 snippets/css-mode/import create mode 100644 snippets/css-mode/importfont create mode 100644 snippets/css-mode/importurl create mode 100644 snippets/css-mode/margin create mode 100644 snippets/css-mode/media create mode 100644 snippets/css-mode/media_orientation create mode 100644 snippets/css-mode/media_print create mode 100644 snippets/css-mode/padding create mode 100644 snippets/css-mode/property create mode 100644 snippets/go-mode/append create mode 100644 snippets/go-mode/coloneq create mode 100644 snippets/go-mode/const create mode 100644 snippets/go-mode/ctxc create mode 100644 snippets/go-mode/f create mode 100644 snippets/go-mode/fm create mode 100644 snippets/go-mode/for create mode 100644 snippets/go-mode/fore create mode 100644 snippets/go-mode/foreach create mode 100644 snippets/go-mode/fori create mode 100644 snippets/go-mode/forw create mode 100644 snippets/go-mode/func create mode 100644 snippets/go-mode/go create mode 100644 snippets/go-mode/gof create mode 100644 snippets/go-mode/gofunc create mode 100644 snippets/go-mode/if create mode 100644 snippets/go-mode/ife create mode 100644 snippets/go-mode/iferr create mode 100644 snippets/go-mode/imp create mode 100644 snippets/go-mode/import create mode 100644 snippets/go-mode/interface create mode 100644 snippets/go-mode/main create mode 100644 snippets/go-mode/map create mode 100644 snippets/go-mode/method create mode 100644 snippets/go-mode/package create mode 100644 snippets/go-mode/pkg create mode 100644 snippets/go-mode/pr create mode 100644 snippets/go-mode/printf create mode 100644 snippets/go-mode/println create mode 100644 snippets/go-mode/prln create mode 100644 snippets/go-mode/select create mode 100644 snippets/go-mode/struct create mode 100644 snippets/go-mode/switch create mode 100644 snippets/go-mode/test create mode 100644 snippets/go-mode/var create mode 100644 snippets/go-mode/while create mode 100644 snippets/go-mode/wr create mode 100644 snippets/html-mode/dd create mode 100644 snippets/html-mode/dl create mode 100644 snippets/html-mode/doctype create mode 100644 snippets/html-mode/doctype.xhml1 create mode 100644 snippets/html-mode/doctype.xhtml1_1 create mode 100644 snippets/html-mode/doctype.xhtml1_strict create mode 100644 snippets/html-mode/doctype.xhtml1_transitional create mode 100644 snippets/html-mode/dt create mode 100644 snippets/html-mode/form create mode 100644 snippets/html-mode/html create mode 100644 snippets/html-mode/html.xmlns create mode 100644 snippets/html-mode/link create mode 100644 snippets/html-mode/linkie create mode 100644 snippets/html-mode/mailto create mode 100644 snippets/html-mode/meta create mode 100644 snippets/html-mode/meta.http-equiv create mode 100644 snippets/html-mode/script create mode 100644 snippets/html-mode/scriptsrc create mode 100644 snippets/html-mode/textarea create mode 100644 snippets/html-mode/th create mode 100644 snippets/java-mode/@param create mode 100644 snippets/java-mode/@return create mode 100644 snippets/java-mode/apr_assert create mode 100644 snippets/java-mode/class create mode 100644 snippets/java-mode/constructor create mode 100644 snippets/java-mode/doc create mode 100644 snippets/java-mode/equals create mode 100644 snippets/java-mode/file_class create mode 100644 snippets/java-mode/for create mode 100644 snippets/java-mode/foreach create mode 100644 snippets/java-mode/if create mode 100644 snippets/java-mode/ife create mode 100644 snippets/java-mode/import create mode 100644 snippets/java-mode/interface create mode 100644 snippets/java-mode/iterator create mode 100644 snippets/java-mode/javadoc create mode 100644 snippets/java-mode/main create mode 100644 snippets/java-mode/method create mode 100644 snippets/java-mode/method@ create mode 100644 snippets/java-mode/new create mode 100644 snippets/java-mode/paintComponent create mode 100644 snippets/java-mode/printf create mode 100644 snippets/java-mode/println create mode 100644 snippets/java-mode/private create mode 100644 snippets/java-mode/protected create mode 100644 snippets/java-mode/public create mode 100644 snippets/java-mode/return create mode 100644 snippets/java-mode/test create mode 100644 snippets/java-mode/testClass create mode 100644 snippets/java-mode/this create mode 100644 snippets/java-mode/toString create mode 100644 snippets/java-mode/try create mode 100644 snippets/java-mode/var create mode 100644 snippets/java-mode/var= create mode 100644 snippets/java-mode/void create mode 100644 snippets/java-mode/while create mode 100644 snippets/js-mode/Math create mode 100644 snippets/js-mode/addEventListener create mode 100644 snippets/js-mode/alert create mode 100644 snippets/js-mode/arrow create mode 100644 snippets/js-mode/cl create mode 100644 snippets/js-mode/class create mode 100644 snippets/js-mode/const create mode 100644 snippets/js-mode/constructor create mode 100644 snippets/js-mode/decodeURI create mode 100644 snippets/js-mode/decodeURIComponent create mode 100644 snippets/js-mode/document create mode 100644 snippets/js-mode/else create mode 100644 snippets/js-mode/encodeURI create mode 100644 snippets/js-mode/encodeURIComponent create mode 100644 snippets/js-mode/exports create mode 100644 snippets/js-mode/filter create mode 100644 snippets/js-mode/filter-arrow create mode 100644 snippets/js-mode/filter-function create mode 100644 snippets/js-mode/fireEvent create mode 100644 snippets/js-mode/for create mode 100644 snippets/js-mode/forEach create mode 100644 snippets/js-mode/forEach-arrow create mode 100644 snippets/js-mode/forEach-function create mode 100644 snippets/js-mode/fori create mode 100644 snippets/js-mode/forin create mode 100644 snippets/js-mode/fu create mode 100644 snippets/js-mode/function create mode 100644 snippets/js-mode/function_inline create mode 100644 snippets/js-mode/getElementById create mode 100644 snippets/js-mode/if create mode 100644 snippets/js-mode/imp create mode 100644 snippets/js-mode/import create mode 100644 snippets/js-mode/indexOf create mode 100644 snippets/js-mode/jsdoc create mode 100644 snippets/js-mode/let create mode 100644 snippets/js-mode/log create mode 100644 snippets/js-mode/map create mode 100644 snippets/js-mode/map-arrow create mode 100644 snippets/js-mode/map-function create mode 100644 snippets/js-mode/method create mode 100644 snippets/js-mode/property create mode 100644 snippets/js-mode/push create mode 100644 snippets/js-mode/req create mode 100644 snippets/js-mode/require create mode 100644 snippets/js-mode/return create mode 100644 snippets/js-mode/try create mode 100644 snippets/js-mode/var create mode 100644 snippets/js-mode/while create mode 100644 snippets/json-mode/eslintConfig create mode 100644 snippets/kotlin-mode/class create mode 100644 snippets/kotlin-mode/file_class create mode 100644 snippets/kotlin-mode/forin create mode 100644 snippets/kotlin-mode/fun create mode 100644 snippets/kotlin-mode/if create mode 100644 snippets/kotlin-mode/ife create mode 100644 snippets/kotlin-mode/interface create mode 100644 snippets/kotlin-mode/main create mode 100644 snippets/kotlin-mode/todo create mode 100644 snippets/kotlin-mode/val create mode 100644 snippets/kotlin-mode/val= create mode 100644 snippets/kotlin-mode/var create mode 100644 snippets/kotlin-mode/var= create mode 100644 snippets/kotlin-mode/while create mode 100644 snippets/markdown-mode/code create mode 100644 snippets/markdown-mode/h1 create mode 100644 snippets/markdown-mode/h2 create mode 100644 snippets/markdown-mode/h3 create mode 100644 snippets/markdown-mode/h4 create mode 100644 snippets/markdown-mode/h5 create mode 100644 snippets/markdown-mode/h6 create mode 100644 snippets/markdown-mode/hr create mode 100644 snippets/markdown-mode/img create mode 100644 snippets/markdown-mode/kbd create mode 100644 snippets/markdown-mode/link create mode 100644 snippets/markdown-mode/ol create mode 100644 snippets/markdown-mode/rimg create mode 100644 snippets/markdown-mode/rlb create mode 100644 snippets/markdown-mode/rlink create mode 100644 snippets/markdown-mode/utf8 create mode 100644 snippets/org-mode/begin_center create mode 100644 snippets/org-mode/begin_comment create mode 100644 snippets/org-mode/begin_example create mode 100644 snippets/org-mode/begin_export create mode 100644 snippets/org-mode/begin_export_ascii create mode 100644 snippets/org-mode/begin_export_html create mode 100644 snippets/org-mode/begin_export_latex create mode 100644 snippets/org-mode/begin_quote create mode 100644 snippets/org-mode/begin_src create mode 100644 snippets/org-mode/begin_verse create mode 100644 snippets/org-mode/blog create mode 100644 snippets/org-mode/chinese_dollar create mode 100644 snippets/org-mode/chinese_link create mode 100644 snippets/org-mode/code create mode 100644 snippets/org-mode/dot create mode 100644 snippets/org-mode/elisp create mode 100644 snippets/org-mode/entry create mode 100644 snippets/org-mode/example create mode 100644 snippets/org-mode/export create mode 100644 snippets/org-mode/figure create mode 100644 snippets/org-mode/head create mode 100644 snippets/org-mode/img create mode 100644 snippets/org-mode/inline create mode 100644 snippets/org-mode/inline_source create mode 100644 snippets/org-mode/jupyter create mode 100644 snippets/org-mode/latex create mode 100644 snippets/org-mode/matrix create mode 100644 snippets/org-mode/name create mode 100644 snippets/org-mode/quote create mode 100644 snippets/org-mode/src create mode 100644 snippets/org-mode/todo create mode 100644 snippets/org-mode/verse create mode 100644 snippets/org-mode/width create mode 100644 snippets/php-mode/abstract-class create mode 100644 snippets/php-mode/array create mode 100644 snippets/php-mode/assignment create mode 100644 snippets/php-mode/break create mode 100644 snippets/php-mode/class create mode 100644 snippets/php-mode/continue create mode 100644 snippets/php-mode/define create mode 100644 snippets/php-mode/echo create mode 100644 snippets/php-mode/else create mode 100644 snippets/php-mode/elseif create mode 100644 snippets/php-mode/for create mode 100644 snippets/php-mode/foreach create mode 100644 snippets/php-mode/fori create mode 100644 snippets/php-mode/function create mode 100644 snippets/php-mode/if create mode 100644 snippets/php-mode/include create mode 100644 snippets/php-mode/include_once create mode 100644 snippets/php-mode/method create mode 100644 snippets/php-mode/object-accessor create mode 100644 snippets/php-mode/parent create mode 100644 snippets/php-mode/php create mode 100644 snippets/php-mode/phpdoc create mode 100644 snippets/php-mode/require create mode 100644 snippets/php-mode/require_once create mode 100644 snippets/php-mode/self create mode 100644 snippets/php-mode/shebang create mode 100644 snippets/php-mode/shorttag-print create mode 100644 snippets/php-mode/switch create mode 100644 snippets/php-mode/this create mode 100644 snippets/php-mode/urldecode create mode 100644 snippets/php-mode/urlencode create mode 100644 snippets/php-mode/var_dump create mode 100644 snippets/php-mode/while create mode 100644 snippets/scala-mode/List create mode 100644 snippets/scala-mode/app create mode 100644 snippets/scala-mode/case create mode 100644 snippets/scala-mode/cons create mode 100644 snippets/scala-mode/def create mode 100644 snippets/scala-mode/if create mode 100644 snippets/scala-mode/main create mode 100644 snippets/scala-mode/throw create mode 100644 snippets/scala-mode/try create mode 100644 snippets/sh-mode/alias create mode 100644 snippets/sh-mode/args create mode 100644 snippets/sh-mode/bang create mode 100644 snippets/sh-mode/case create mode 100644 snippets/sh-mode/elif create mode 100644 snippets/sh-mode/else create mode 100644 snippets/sh-mode/f create mode 100644 snippets/sh-mode/for create mode 100644 snippets/sh-mode/for-one-line create mode 100644 snippets/sh-mode/function create mode 100644 snippets/sh-mode/function-one-line create mode 100644 snippets/sh-mode/getopts create mode 100644 snippets/sh-mode/gt create mode 100644 snippets/sh-mode/if create mode 100644 snippets/sh-mode/if-one-line create mode 100644 snippets/sh-mode/ife create mode 100644 snippets/sh-mode/local create mode 100644 snippets/sh-mode/lt create mode 100644 snippets/sh-mode/var create mode 100644 snippets/sql-mode/column create mode 100644 snippets/sql-mode/constraint create mode 100644 snippets/sql-mode/constraint.1 create mode 100644 snippets/sql-mode/create create mode 100644 snippets/sql-mode/create.1 create mode 100644 snippets/sql-mode/references diff --git a/configs/base-extensions.el b/configs/base-extensions.el new file mode 100644 index 0000000..0a1be9d --- /dev/null +++ b/configs/base-extensions.el @@ -0,0 +1,626 @@ +;;; base-extensions.el --- Extenciones/paquetes instalados y su configuración + +;; Author: kj +;; URL: https://git.kj2.me/kj/confi-emacs-actual + +;;; Commentary: + +;;; Code: + +;; use-package - No necesita presentación +(use-package use-package + :config + (setq use-package-always-ensure t) ; auto-instalar extenciones que no lo estén + ) + +;; Auto-actualizar los paquetes +(use-package auto-package-update + :custom + (auto-package-update-interval 7) + (auto-package-update-prompt-before-update t) + (auto-package-update-hide-results t) + :config + (auto-package-update-maybe) + (auto-package-update-at-time "06:00") + :init + (setq + auto-package-update-last-update-day-filename + (expand-file-name ".last-package-update-day" private-dir))) + +;; Iconos principalmente para ser usados por neotree +(use-package all-the-icons) + +;; Highlight en los números. +(use-package highlight-numbers + :ensure t + :hook + (prog-mode . highlight-numbers-mode)) + +;; Barra lateral de archivos +(use-package treemacs + :ensure t + :hook (treemacs-mode . (lambda() (display-line-numbers-mode -1))) + :bind ([mouse-1] . treemacs-single-click-expand-action) + :init + (with-eval-after-load 'winum + (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) + + :config + (progn + (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) + treemacs-deferred-git-apply-delay 0.5 + treemacs-directory-name-transformer #'identity + treemacs-display-in-side-window t + treemacs-eldoc-display 'simple + treemacs-file-event-delay 5000 + treemacs-file-extension-regex treemacs-last-period-regex-value + treemacs-file-follow-delay 0.2 + treemacs-file-name-transformer #'identity + treemacs-follow-after-init t + treemacs-expand-after-init t + treemacs-find-workspace-method 'find-for-file-or-pick-first + treemacs-git-command-pipe "" + treemacs-goto-tag-strategy 'refetch-index + treemacs-indentation 2 + treemacs-indentation-string " " + treemacs-is-never-other-window nil + treemacs-max-git-entries 5000 + treemacs-missing-project-action 'ask + treemacs-move-forward-on-expand nil + treemacs-no-png-images nil + treemacs-no-delete-other-windows t + treemacs-project-follow-cleanup nil + treemacs-persist-file (expand-file-name "cache/treemacs-persist" private-dir) + treemacs-position 'left + treemacs-read-string-input 'from-child-frame + treemacs-recenter-distance 0.1 + treemacs-recenter-after-file-follow nil + treemacs-recenter-after-tag-follow nil + treemacs-recenter-after-project-jump 'always + treemacs-recenter-after-project-expand 'on-distance + treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") + treemacs-show-cursor nil + treemacs-show-hidden-files t + treemacs-silent-filewatch nil + treemacs-silent-refresh nil + treemacs-sorting 'alphabetic-asc + treemacs-select-when-already-in-treemacs 'move-back + treemacs-space-between-root-nodes t + treemacs-tag-follow-cleanup t + treemacs-tag-follow-delay 1.5 + treemacs-text-scale nil + treemacs-user-mode-line-format nil + treemacs-user-header-line-format nil + treemacs-wide-toggle-width 70 + treemacs-width 35 + treemacs-width-increment 1 + treemacs-width-is-initially-locked t + treemacs-workspace-switch-cleanup nil) + + ;; The default width and height of the icons is 22 pixels. If you are + ;; using a Hi-DPI display, uncomment this to double the icon size. + ;;(treemacs-resize-icons 44) + + (treemacs-follow-mode t) + (treemacs-filewatch-mode t) + (treemacs-fringe-indicator-mode 'always) + + (pcase (cons (not (null (executable-find "git"))) + (not (null treemacs-python-executable))) + (`(t . t) + (treemacs-git-mode 'deferred)) + (`(t . _) + (treemacs-git-mode 'simple))) + + (treemacs-hide-gitignored-files-mode nil)) + :bind + (:map global-map + ("M-0" . treemacs-select-window) + ("C-x t 1" . treemacs-delete-other-windows) + ("" . treemacs) + ("" . treemacs-display-current-project-exclusively) + ("" . treemacs-add-and-display-current-project) + ("C-x t d" . treemacs-select-directory) + ("C-x t B" . treemacs-bookmark) + ("C-x t C-t" . treemacs-find-file) + ("C-x t M-t" . treemacs-find-tag))) + +(use-package treemacs-evil + :after (treemacs evil) + :ensure t + :config + ;; Atajos de tecla con leader key de evil-mode. + (evil-set-leader 'treemacs (kbd "SPC")) + (evil-define-key 'treemacs 'global (kbd "b") 'ivy-switch-buffer) + (evil-define-key 'treemacs 'global (kbd "v") 'counsel-projectile) + (evil-define-key 'treemacs 'global (kbd "p") 'counsel-projectile) + (evil-define-key 'treemacs 'global (kbd "cp") 'treemacs-projectile) + (evil-define-key 'treemacs 'global (kbd "d") 'treemacs-remove-project-from-workspace)) + +(use-package treemacs-projectile + :after (treemacs projectile) + :ensure t) + +(use-package treemacs-icons-dired + :hook (dired-mode . treemacs-icons-dired-enable-once) + :ensure t) + +(use-package treemacs-magit + :after (treemacs magit) + :ensure t) + +(use-package treemacs-persp ;;treemacs-perspective if you use perspective.el vs. persp-mode + :after (treemacs persp-mode) ;;or perspective vs. persp-mode + :ensure t + :config (treemacs-set-scope-type 'Perspectives)) + +(use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode + :after (treemacs) + :ensure t + :config (treemacs-set-scope-type 'Tabs)) + +;; Recentf - Guarda registro de los archivos abiertos recientemente +(use-package recentf + :config + (setq recentf-save-file + (recentf-expand-file-name (concat temp-dir "/recentf"))) + (recentf-mode 1)) + + +;; Guardar la posición del cursor en un archivo para volver allí cuando se lo vuelva a abrir. +(use-package saveplace + :config + (save-place-mode 1) + (setq save-place-file (locate-user-emacs-file (concat temp-dir "/places")))) + +;; Emmet - Una ayuda para escribir HTML rápidamente (escribre doc, luego preciona C-j y lo entenderás) +(use-package emmet-mode + :config + (add-hook 'sgml-mode-hook 'emmet-mode) ;; Auto-start on any markup modes + (add-hook 'html-mode-hook 'emmet-mode) + (add-hook 'css-mode-hook 'emmet-mode) + ) + +;; Modo markdown +(use-package markdown-mode) + +;; Git Gutter - Marca a la izq. si una linea ha sido agregada, editada o eliminada desde el último commit. +(use-package git-gutter + :config + (global-git-gutter-mode +1) ; Habilitar git gutter de manera global + ) + +;; Mejorando el scroll +(use-package smooth-scrolling + :config + (smooth-scrolling-mode 1) ; Cambia el salto de líneas cuando el cursor llega al final. + (setq mouse-wheel-scroll-amount + '(8 ((shift) . 1) ((control) . nil))) ; Cambia el scroll a 8 líneas a la vez, 1 cuando se preciona SHIFT y saltos de página cuando presionas CTRL + (setq mouse-wheel-progressive-speed nil) ; Deshabilita la velocidad progresiva del scroll (mientras más scroll haces, mas rápido va) + ) + +;; Esa línea bonita de abajo del editor que dice cosas xD +(use-package telephone-line + :custom + (telephone-line-primary-left-separator 'telephone-line-cubed-left) + (telephone-line-secondary-left-separator 'telephone-line-cubed-hollow-left) + (telephone-line-primary-right-separator 'telephone-line-cubed-right) + (telephone-line-secondary-right-separator 'telephone-line-cubed-hollow-right) + (telephone-line-evil-use-short-tag t) + + (setq telephone-line-lhs + '((evil . (telephone-line-evil-tag-segment)) + (accent . (telephone-line-vc-segment + telephone-line-erc-modified-channels-segment + telephone-line-process-segment)) + (nil . (;telephone-line-minor-mode-segment + telephone-line-buffer-segment)))) + (setq telephone-line-rhs + '((nil . (telephone-line-misc-info-segment)) + (accent . (telephone-line-major-mode-segment)) + (evil . (telephone-line-airline-position-segment)))) + (telephone-line-mode t) + ) + +;; Control más "natural" a la hora de hacer/deshacer. +(use-package undo-tree + :init + (setq undo-tree-auto-save-history nil) + (global-undo-tree-mode 1) + :config + (global-set-key (kbd "C-z") 'undo-tree-undo) + (global-set-key (kbd "C-y") 'undo-tree-redo) + ) + +;; Hacer uso de Emacs con las ventajas de vim. +(use-package evil + :init + (evil-mode 1) + (setq evil-want-integration t) + (setq evil-want-keybinding nil) + (setq evil-want-C-u-scroll t) + (setq evil-want-C-i-jump nil) + (setq evil-respect-visual-line-mode t) + (setq evil-undo-system 'undo-tree) + (setq evil-toggle-key "C-'") ; Cambiar toggle-key cambiar entre evil states y emacs. + ;; (setq evil-default-state 'emacs) ; Modo por defecto en emacs mode + :config + (define-key evil-normal-state-map (kbd "g b") 'evil-jump-backward) + ;; Hacer que funcione C-v en modo insert y replace + ;;(evil-global-set-key 'insert (kbd "C-v") 'cua-paste) + ;;(evil-global-set-key 'replace (kbd "C-v") 'cua-paste) + ;; Cortar es C-x 2 veces en modo insert y replace + ;;(evil-global-set-key 'insert (kbd "C-x C-x") 'cua-cut-region) + ;;(evil-global-set-key 'replace (kbd "C-x C-x") 'cua-cut-region) + ;; Seleccionar todo con C-a en insert mode + (evil-global-set-key 'insert (kbd "C-a") 'mark-whole-buffer) + + ;; ** + ;; Atajos personalizados con leader key + ;; ** + + ;; Definiendo la leader key + (evil-set-leader 'normal (kbd "SPC")) + (evil-set-leader 'visual (kbd "SPC")) + + ;; Atajos para counsel-projectile y switch buffer con leader key + (evil-define-key 'normal 'global (kbd "b") 'ivy-switch-buffer) + (evil-define-key 'visual 'global (kbd "b") 'ivy-switch-buffer) + (evil-define-key 'normal 'global (kbd "v") 'counsel-projectile) + (evil-define-key 'normal 'global (kbd "cp") 'projectile-switch-project) + (evil-define-key 'visual 'global (kbd "v") 'counsel-projectile) + (evil-define-key 'visual 'global (kbd "cp") 'projectile-switch-project) + (evil-define-key 'normal 'global (kbd "ff") 'counsel-find-file) + (evil-define-key 'visual 'global (kbd "ff") 'counsel-find-file) + + ;; Atajos windmove con leader key + (evil-define-key 'normal 'global (kbd "wh") 'windmove-left) + (evil-define-key 'normal 'global (kbd "wj") 'windmove-down) + (evil-define-key 'normal 'global (kbd "wk") 'windmove-up) + (evil-define-key 'normal 'global (kbd "wl") 'windmove-right) + + ;; Atajos con leader key para frames + (evil-define-key 'normal 'global (kbd "0") 'delete-window) + (evil-define-key 'normal 'global (kbd "1") 'delete-other-windows) + (evil-define-key 'normal 'global (kbd "2") 'split-window-below) + (evil-define-key 'normal 'global (kbd "3") 'split-window-right) + (evil-define-key 'normal 'global (kbd "kb") 'kill-buffer) + (evil-define-key 'normal 'global (kbd "wb") 'winner-undo) + (evil-define-key 'normal 'global (kbd "nb") 'winner-redo) + + ;; Cambiar el cursor según el estado + (setq evil-emacs-state-cursor 'bar) + (setq evil-motion-state-cursor 'bar) + (setq evil-normal-state-cursor 'box) + (setq evil-visual-state-cursor 'box) + (setq evil-insert-state-cursor 'bar) + (setq evil-replace-state-cursor 'hollow) + (setq evil-operator-state-cursor 'hollow) + ;; Establecer modos por defecto en algunos modos + (evil-set-initial-state 'shell-mode 'insert) + (evil-set-initial-state 'term-mode 'emacs) + (evil-set-initial-state 'help-mode 'emacs) + (evil-set-initial-state 'helm-grep-mode 'emacs) + (evil-set-initial-state 'grep-mode 'emacs) + (evil-set-initial-state 'dired-mode 'emacs) + (evil-set-initial-state 'Buffer-menu-mode 'emacs) + (evil-set-initial-state 'wdired-mode 'normal) + ;; Por defecto usar emcas mode. + ;;(setq evil-default-state 'emacs) + ) + +;; Edición múltiple con evil (Atajos por defecto: C-d y C-D) +(use-package evil-multiedit + :config + (evil-multiedit-default-keybinds) + ) + +;; Code Folding +(use-package origami + :config + (global-origami-mode)) + +;; Automcompletado +(use-package company + :bind (:map company-active-map + ("" . company-indent-or-complete-common)) ; autocompletar con tab como se haría en bash-competition en la terminal de linux + (:map company-active-map + ("" . company-abort)) ; cerrar las sugerencias de autocompletado precionando escape. + :config + (global-company-mode) + (setq company-dabbrev-downcase nil) ; autocompletado case-sensitive. + (setq company-idle-delay 0) ; mostrar autocompletado lo más rápido posible + (setq company-minimum-prefix-length 1) ; mostrar autocompletado desde que se coloca la primera letra. + (setq company-backends '((company-files :with company-yasnippet) + (company-capf :with company-yasnippet) + (company-dabbrev-code company-gtags company-etags company-keywords :with company-yasnippet) + (company-dabbrev :with company-yasnippet))) + ) + +;; Poner la info acerca del autocompletado del autocompletado mas rápido +(use-package company-quickhelp + :ensure t + :custom + (company-quickhelp-delay 2) + (company-quickhelp-mode)) + +;; Hacer que el autocompletado se vea más bonito con íconos +(use-package company-box + :hook (company-mode . company-box-mode)) + +;; Usar autocompletado con ctags y company +(use-package company-ctags + :config + (add-to-list 'company-backends '(company-ctags)) + ) + +;; Snippets +(use-package yasnippet + :ensure t + :custom + (yas-prompt-functions '(yas-completing-prompt)) + :config + (yas-reload-all) + :hook + ((prog-mode feature-mode) . yas-minor-mode)) + +;; Restaurar el estado de los frames +(use-package winner + :init + (winner-mode 1)) + +(use-package lsp-mode + :defer t + :hook (js-mode . lsp) + :custom + (lsp-headerline-breadcrumb-enable nil)) + +(use-package lsp-ui) + +;; Revisar sintaxis en vivo +(use-package flycheck + ;; :diminish flycheck-mode + :hook (after-init . global-flycheck-mode) ; Habilitar flycheck en todos los modos + ) + +;; Mostrar los errores de flycheck en un pop up +(use-package flycheck-popup-tip + :hook (flycheck-mode . flycheck-popup-tip-mode)) + +;; Un bonito y sencillo panel de inicio +(use-package dashboard + :config + (setq dashboard-set-file-icons t) + (setq dashboard-startup-banner + (expand-file-name "duck-small.png" user-emacs-directory)) + (setq dashboard-items '( + ;;(recents . 5) + ;;(projects . 5) + )) + (dashboard-setup-startup-hook) + ) + +;; Autocompletado para shell scripting. +(use-package company-shell + :config + (add-to-list 'company-backends '(company-shell company-shell-env company-fish-shell)) + ) + +;; Autocompletado para el minibuffer (counsel e ivy) +(use-package counsel + :bind + ("M-x" . counsel-M-x) + ("C-x C-m" . counsel-M-x) + ("C-x C-f" . counsel-find-file) + ("C-x c k" . counsel-yank-pop)) + +(use-package projectile + :diminish projectile-mode + :config + (projectile-mode) + :custom ((projectile-completion-system 'ivy)) + :bind-keymap + ("C-c p" . projectile-command-map) + :init + ;; Rutas de archivos temporales. + (setq projectile-cache-file (expand-file-name "projectile.cache" temp-dir)) + (setq projectile-known-projects-file (expand-file-name + "projectile-bookmarks.eld" temp-dir)) + ;; Carpetas donde tienes tus proyectos (deben tener un archivo .projectile o un repro git iniciado). + (when (file-directory-p "~/Proyectos") + (setq projectile-project-search-path '("~/Proyectos"))) + (when (file-directory-p "~/Docker/Nginx") + (setq projectile-project-search-path (append + projectile-project-search-path + '("~/Docker/Nginx")))) + (when (file-directory-p "~/Docker/Nginx2") + (setq projectile-project-search-path (append + projectile-project-search-path + '("~/Docker/Nginx2")))) + (when (file-directory-p "~/Docker/NginxTwitch") + (setq projectile-project-search-path (append + projectile-project-search-path + '("~/Docker/NginxTwitch")))) + (setq projectile-switch-project-action #'projectile-dired) ; Usar dired cuando se elija un proyecto. + + ;; Cambiar el título de la ventana de emacs + (setq frame-title-format + '( + (:eval + (let ((project-name (projectile-project-name))) + (unless (string= "-" project-name) + (format "[%s] " project-name)))) + "%b" + " - Emacs") + ) + ) + +;; Autocompletado de proyectos en counsel (projectile) +(use-package counsel-projectile + :config + (global-set-key (kbd "C-x v") 'counsel-projectile) + (counsel-projectile-mode)) + +;; Mostrar info del panel inferior de otra manera +(use-package ivy + :bind + ("C-x s" . swiper) + ("C-x C-r" . ivy-resume) + ("C-x b" . ivy-switch-buffer) + :config + (ivy-mode 1) + (setq ivy-use-virtual-buffers nil) + (define-key ivy-minibuffer-map (kbd "TAB") 'ivy-partial) + (define-key read-expression-map (kbd "C-r") 'counsel-expression-history) + (define-key ivy-minibuffer-map (kbd "") 'minibuffer-keyboard-quit) + ) + +;; Iconos en Ivy (allthe icons) +(use-package all-the-icons-ivy-rich + :ensure t + :init (all-the-icons-ivy-rich-mode 1) + :config + (setq all-the-icons-ivy-rich-color-icon t)) + +(use-package ivy-rich + :ensure t + :init (ivy-rich-mode 1)) + +;; Cuando iniicias un atajo de teclas te muestra las posibilidades +(use-package which-key + :config + (which-key-mode)) + +;; Autocompletado de parentesis, corchetes, llaves, etc. +(use-package smartparens + :config + (smartparens-global-mode t)) + +(use-package terminal-here + :init + (global-set-key (kbd "C-") #'terminal-here-launch) + :config + (setq terminal-here-linux-terminal-command 'gnome-terminal) ;; Configuramos que user gnome-terminal por defecto + ) + +;; Org-Mode + +(defun efs/org-font-setup () + "ORG font faces setup." + + ;; Set faces for heading levels + (dolist (face '((org-level-1 . 1.2) + (org-level-2 . 1.1) + (org-level-3 . 1.05) + (org-level-4 . 1.0) + (org-level-5 . 1.1) + (org-level-6 . 1.1) + (org-level-7 . 1.1) + (org-level-8 . 1.1))) + (set-face-attribute (car face) nil :font "Cantarell" :weight 'regular :height (cdr face))) + + ;; Ensure that anything that should be fixed-pitch in Org files appears that way + (set-face-attribute 'org-block nil :foreground nil :inherit 'fixed-pitch) + (set-face-attribute 'org-table nil :inherit 'fixed-pitch) + (set-face-attribute 'org-formula nil :inherit 'fixed-pitch) + (set-face-attribute 'org-code nil :inherit '(shadow fixed-pitch)) + (set-face-attribute 'org-table nil :inherit '(shadow fixed-pitch)) + (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch)) + (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch)) + (set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch)) + (set-face-attribute 'org-checkbox nil :inherit 'fixed-pitch) + (set-face-attribute 'line-number nil :inherit 'fixed-pitch) + (set-face-attribute 'line-number-current-line nil :inherit 'fixed-pitch)) + +(defun efs/org-mode-setup () + "Set some configs on 'org-mode'." + (display-line-numbers-mode 0) + (org-indent-mode) + (variable-pitch-mode 1) + (visual-line-mode 1) + (setq evil-auto-indent nil) + ) + +(use-package org + :pin org + :hook (org-mode . efs/org-mode-setup) + :config + (setq org-ellipsis " ▾") + (setq org-hide-emphasis-markers t) + + (setq org-agenda-start-with-log-mode t) + (setq org-log-done 'time) + (setq org-log-into-drawer t) + + + ;; Palabras claves del To Do de org-mode + (setq org-todo-keywords + ;;'((sequence "☐" "✔" "⌛" "❌"))) + '((sequence "TODO(t)" "DOING(n)" "WAITING(w)" "|" "DONE(d!)" "CANCELED(c!)"))) + (setq org-todo-keyword-faces + '(("TODO" . "#ff6464") + ("DOING" . "yellow") + ("DONE" . "green") + ("WAITING" . "orange") + ("CANCELED" . "#aaa")) + ) + + ;; Archivos a usarse en org-agenda + (setq org-agenda-files + '("~/Proyectos/ORGenda/Ideas.org" + "~/Proyectos/ORGenda/IdeasTwitch.org" + "~/Proyectos/ORGenda/Proyectos.org" + "~/Proyectos/ORGenda/Tareas.org") + ) + + ;; Archivos entre los que se moverán las tareas + (setq org-refile-targets + '(("Archivo.org" :maxlevel . 1) + ("Proyectos.org" :maxlevel . 1) + ("IdeasTwitch.org" :maxlevel . 1) + ("Ideas.org" :maxlevel . 1) + ("Tareas.org" :maxlevel . 1))) + + ;; Guardar los archivos cuando se muevan tareas entre ellos + (advice-add 'org-refile :after 'org-save-all-org-buffers) + + (setq org-capture-templates + `(("t" "Tareas / Projectos") + ("tt" "Tareas" entry (file+olp "~/Proyectos/ORGenda/Tareas.org") + "* TODO %?\n %U\n %a\n %i" :empty-lines 1) + ("tp" "Proyectos" entry (file+olp "~/Proyectos/ORGenda/Proyectos.org") + "* TODO %?\n %U\n %a\n %i" :empty-lines 1) + ("i" "Ideas") + ("ii" "Ideas General" entry + (file+olp "~/Proyectos/ORGenda/ideas.org") + "* TODO %?\n %a\n %i" :empty-lines 1) + ("it" "Ideas Twitch" entry + (file+olp "~/Proyectos/ORGenda/IdeasTwitch.org") + "* TODO %?\n %a\n %i" :empty-lines 1) + ) + ) + + (efs/org-font-setup)) + +(use-package org-superstar + :hook + (org-mode . org-superstar-mode) + :config + (setq org-superstar-special-todo-items t) + ) + +(defun efs/org-mode-visual-fill () + "Visual mode fill columns." + (visual-fill-column-mode 1)) + +(use-package visual-fill-column + :hook (org-mode . efs/org-mode-visual-fill) + :config + ;; Tamaño de la columna + (setq visual-fill-column-width 150) + ;; Centrar el texto + (setq-default visual-fill-column-center-text t) + ) + +(provide 'base-extensions) +;;; base-extensions.el ends here diff --git a/configs/base-functions.el b/configs/base-functions.el new file mode 100644 index 0000000..064b6e8 --- /dev/null +++ b/configs/base-functions.el @@ -0,0 +1,46 @@ +(provide 'base-functions) + +;; Buscar el texto actualmente seleccionado +(defun kj-isearch-with-region () + "Use region as the isearch text." + (when mark-active + (let ((region (funcall region-extract-function nil))) + (deactivate-mark) + (isearch-push-state) + (isearch-yank-string region)))) + +(add-hook 'isearch-mode-hook #'kj-isearch-with-region) + +;; Borrar espacios, tabs y saltos de línea innecesarios al guardar +(add-hook 'before-save-hook 'delete-trailing-whitespace) + + +;; Generar archivo TAGS +(defun create-tags (dir-name) + "Create tags file." + (interactive "DDirectory: ") + (shell-command + (format "cd '%s' && ctags -f TAGS -e -R --exclude=*.min.js" + (directory-file-name (file-truename dir-name)) + ) + ) + (message "Archivo TAGS generado.") + ) + +;; Hacer emacs transparente (no funciona perfecto, pero sirve) +(defun toggle-transparency () + (interactive) + (let ((alpha (frame-parameter nil 'alpha))) + (set-frame-parameter + nil 'alpha + (if (eql (cond ((numberp alpha) alpha) + ((numberp (cdr alpha)) (cdr alpha)) + ;; Also handle undocumented ( ) form. + ((numberp (cadr alpha)) (cadr alpha))) + 100) + '(60 . 60) '(100 . 100))))) + +(defun transparency (value) + "Sets the transparency of the frame window. 0=transparent/100=opaque" + (interactive "nTransparency Value 0 - 100 opaque:") + (set-frame-parameter (selected-frame) 'alpha value)) diff --git a/configs/base-keys.el b/configs/base-keys.el new file mode 100644 index 0000000..ca9ee01 --- /dev/null +++ b/configs/base-keys.el @@ -0,0 +1,29 @@ +;;; base-keys.el --- Archivo de configuración de atajos + +;; Author: kj +;; URL: https://git.kj2.me/kj/confi-emacs-actual + +;;; Commentary: + +;; Aquí se configuran los atajos globales. +;; Es posible que haya otros, ya que muchos se configuran +;; directamente en los paquetes/extensiones y dependen de los mismos. + +;;; Code: + +(define-key minibuffer-local-map (kbd "") + 'keyboard-escape-quit) ; Cancelar el minibuffer con un solo ESC. +(global-set-key (kbd "C-x C-z") nil) ; Unbind C-x C-z (don't minimize) +(global-set-key (kbd "C-a") 'mark-whole-buffer) ; Seleccionar todo con CTRL+A. + +(global-set-key (kbd "M-c") 'comment-or-uncomment-region) ; Comentar/descomentar en lote + +(global-set-key (kbd "C-") 'create-tags) ; Generar o Regeneral el archivo TAGS + +(global-set-key (kbd "C-") 'toggle-frame-maximized) ; Maximizar / restaurar + +(global-set-key (kbd "C-c a") 'org-agenda) ; Abrir la agenda. +(global-set-key (kbd "C-c c") 'org-capture) ; Abrir la crear una entrada. + +(provide 'base-keys) +;;; base-keys.el ends here diff --git a/configs/base.el b/configs/base.el new file mode 100644 index 0000000..bfd24f6 --- /dev/null +++ b/configs/base.el @@ -0,0 +1,124 @@ +;;; base.el --- Configuración base de emacs + +;; Author: kj +;; URL: https://git.kj2.me/kj/confi-emacs-actual + +;;; Commentary: + +;; Configuración base de Emacs, no incluye extensiones, +;; pero si el theme y los fonts. + +;;; Code: + +;; The default is 800 kilobytes. Measured in bytes. +(setq gc-cons-threshold (* 50 1000 1000)) + +;; Initialize package sources +(require 'package) + +(setq package-archives '(("melpa" . "https://melpa.org/packages/") + ("org" . "https://orgmode.org/elpa/") + ("elpa" . "https://elpa.gnu.org/packages/"))) + +(package-initialize) + +;; Actualizar repositorios si aún no esta actualizados +(unless package-archive-contents + (package-refresh-contents)) + +;; Instalar use-package si no está instalado +(unless (package-installed-p 'use-package) + (package-install 'use-package)) + +;; Theme +(use-package dracula-theme + :config + (load-theme 'dracula t) + (set-face-attribute 'default nil :font "Fira Code Retina") ; Font +) + +;; Instalar use-package en caso de no tenerlo +(unless (package-installed-p 'use-package) + (package-install 'use-package)) + +(defconst private-dir (expand-file-name "private" user-emacs-directory)) +(defconst temp-dir (format "%s/cache" private-dir) + "Hostname-based elisp temp directories.") + +;; UTF-8 please +(set-charset-priority 'unicode) +(setq locale-coding-system 'utf-8) ; pretty +(set-terminal-coding-system 'utf-8) ; pretty +(set-keyboard-coding-system 'utf-8) ; pretty +(set-selection-coding-system 'utf-8) ; please +(prefer-coding-system 'utf-8) ; with sugar on top +(setq default-process-coding-system '(utf-8-unix . utf-8-unix)) + +;; Emacs customizations +(menu-bar-mode 0) ; Quitar menús. +(tool-bar-mode 0) ; Quitar toolbar. +(scroll-bar-mode -1) ; Quitar scrollbar. +(tooltip-mode -1) ; Disable tooltips. +(global-display-line-numbers-mode) ; Mostar número de línea. +(show-paren-mode 1) ; Habilitar resaltado de brackets. +;;(cua-mode t) ; Usar CTRL+X, CTRL+C, CTRL+V y CTRL+Z para cortar, copiar, pegar y deshacer. + +(setq-default + cursor-type 'bar ; Usar la barrita como cursor + cursor-in-non-selected-windows nil ; Desaparecer el cursor en frames no activos. + indent-tabs-mode nil ; Cambiar tabs por espacios. + ) +(setq + custom-file (concat private-dir "/.custom.el") ; Cabiar la ruta del código que se genera al isntalar un theme o package + ac-ignore-case nil ; Desactivar el autocapitalizado. + ac-disable-faces nil ; Auto-complete hablitado incluso entre comillas (fuente: https://bit.ly/3a9wCB4). + global-hl-line-mode 1 ; Resaltar línea actual por defecto. + tags-revert-without-query 1 ; Recargar tags (ctags) sin pedir confirmación. + ) + +;; Backups enabled, use nil to disable +(setq + history-length 1000 + backup-inhibited nil + make-backup-files nil + auto-save-default nil + auto-save-list-file-name (concat temp-dir "/autosave") + create-lockfiles nil + backup-directory-alist `((".*" . ,(concat temp-dir "/backup/"))) + auto-save-file-name-transforms `((".*" ,(concat temp-dir "/auto-save-list/") t))) + +;; Configuración cuando es un server +(defun setup-daemon () + (message "Corriendo en modo daemon.") + (set-face-attribute 'default nil :font "Fira Code Retina") + + ;; Set the fixed pitch face + ;;(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina") + + ;; Set the variable pitch face + ;;(set-face-attribute 'variable-pitch nil :font "Cantarell" :weight 'regular) + + ;; Abrir primero el dashboard + (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) + + ;; Cerrar buffers al cerrar emacsclient + (add-hook 'delete-frame-functions + (lambda (frame) + (let* ((window (frame-selected-window frame)) + (buffer (and window (window-buffer window)))) + (when (and buffer (buffer-file-name buffer)) + (kill-buffer buffer))))) + ) + +(if (daemonp) + (add-hook 'after-make-frame-functions + (lambda (frame) + (with-selected-frame frame + (setup-daemon)))) + (message "Corriendo en modo normal.")) + + +(load custom-file) + +(provide 'base) +;;; base.el ends here diff --git a/configs/lang-go.el b/configs/lang-go.el new file mode 100644 index 0000000..a6858ba --- /dev/null +++ b/configs/lang-go.el @@ -0,0 +1,14 @@ +;;; lang-go.el --- Configuración para el lenguaje go + +;; Author: kj +;; URL: https://git.kj2.me/kj/confi-emacs-actual + +;;; Commentary: + +;;; Code: + +(use-package go-mode + :defer t) + +(provide 'lang-go) +;;; lang-go.el ends here diff --git a/configs/lang-js.el b/configs/lang-js.el new file mode 100644 index 0000000..9047151 --- /dev/null +++ b/configs/lang-js.el @@ -0,0 +1,28 @@ +;;; lang-js.el --- Configuración para el lenguaje Javascript + +;; Author: kj +;; URL: https://git.kj2.me/kj/confi-emacs-actual + +;;; Commentary: + +;;; Code: + +(use-package js + :defer t + :mode + ("\\.js$" . js-mode) + :config + (setq js-indent-level 2)) + +;; json-mode +(use-package json-mode + :defer t + :ensure t + :mode + ("\\.json$" . json-mode) + :config + (setq js-indent-level 2)) + + +(provide 'lang-js) +;;; lang-js.el ends here diff --git a/configs/lang-php.el b/configs/lang-php.el new file mode 100644 index 0000000..12ddf0f --- /dev/null +++ b/configs/lang-php.el @@ -0,0 +1,30 @@ +;;; lang-php.el --- Configuración para el lenguaje PHP + +;; Author: kj +;; URL: https://git.kj2.me/kj/confi-emacs-actual + +;;; Commentary: + +;;; Code: + +(use-package company-php :defer t) +(use-package ac-php :defer t) + +(use-package php-mode + :defer t + :bind ("" . php-doc-block) + :config + (add-hook 'php-mode-hook #'(lambda() + (php-enable-default-coding-style) + (company-mode t) ; habilita company mode + (ac-php-core-eldoc-setup) ; habilita soporte para ELDoc + (add-to-list 'company-backends 'company-ac-php-backend) ; Agregar ac-php para a company + )) + ) + +(use-package php-doc-block + :load-path (lambda() (concat private-dir "/packages/php-doc-block")) + ) + +(provide 'lang-php) +;;; lang-php.el ends here diff --git a/duck-small.png b/duck-small.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3ee89f3d1f4e9011c79d5062a8b92e54b79623 GIT binary patch literal 60638 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%0DGV%=?dG;r?K2^vCcI7;OBz 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 literal 0 HcmV?d00001 diff --git a/emacs-client-runner.sh b/emacs-client-runner.sh new file mode 100755 index 0000000..427cc78 --- /dev/null +++ b/emacs-client-runner.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# start emacs server if not is running +systemctl --user status emacs > /dev/null 2>&1 || systemctl --user start emacs > /dev/null 2>&1 + +# if args is -nw or -t run on terminal +if [ "$1" == "-t" ] || [ "$1" == "-nw" ]; then + emacsclient -t + exit +fi + +# if no args open new frame +if [ $# -eq 0 ]; then + emacsclient -c -n + emacsclient --eval "(progn (select-frame-set-input-focus (selected-frame)))" + exit +fi + +emacsclient -e "(frames-on-display-list \"$DISPLAY\")" &>/dev/null + +emacsclient -c -n "$*" diff --git a/init.el b/init.el new file mode 100644 index 0000000..3632695 --- /dev/null +++ b/init.el @@ -0,0 +1,24 @@ +;;; init.el --- Init de emacs ordenado + +;; Author: kj +;; URL: https://git.kj2.me/kj/confi-emacs-actual + +;;; Commentary: + +;; Desde aquí se cargan todos los archivos de la carpeta config. + +;;; Code: + +(add-to-list 'load-path (concat user-emacs-directory "configs")) + +(require 'base) +(require 'base-extensions) +(require 'base-functions) +(require 'base-keys) + +(require 'lang-php) +(require 'lang-js) +(require 'lang-go) + +(provide 'init) +;;; init.el ends here diff --git a/private/packages/php-doc-block/php-doc-block.el b/private/packages/php-doc-block/php-doc-block.el new file mode 100755 index 0000000..b139043 --- /dev/null +++ b/private/packages/php-doc-block/php-doc-block.el @@ -0,0 +1,120 @@ +;;; php-doc-block.el --- Php DocBlock generator + +;; Copyright (C) 2016 Dmitriy Moskalyov + +;; Author: Dmitriy Moskalyov +;; Keywords: php docblock +;; Version: 0.0.1 +;; URL: https://github.com/moskalyovd/emacs-php-doc-block + +;; This program is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This package provides php DocBlock generator. +;; How to use: +;; Clone repository from https://github.com/moskalyovd/emacs-php-doc-block +;; and add to your .emacs(or init.el) file: + +;; (add-to-list 'load-path "~/.emacs.d/emacs-php-doc-block") +;; (require 'php-doc-block) + +;; Then bind command 'php-doc-block to any key you like: + +;; (add-hook 'php-mode-hook +;; (lambda () +;; (local-set-key (kbd "") 'php-doc-block))) + +;;; Code: + +(defun insert-to-prev-line-and-indent (text) + "Insert TEXT to the previous line with indentation." + (beginning-of-line) + (open-line 1) + (insert text) + (indent-according-to-mode)) + +(defun insert-to-next-line-and-indent (text) + "Insert TEXT to the next line with indentation." + (end-of-line) + (newline-and-indent) + (insert text) + (indent-according-to-mode)) + +(defun php-doc-block-var-or-attr (tag-type type name value is-nullable) + "Insert doc block for a property or an attribute" + (cond + ((and value (= (string-width type) 0)) + (cond + ((string-match "^=\s*\\(array(.*)\\|\\[\.*\]\\)" value) (setq type "array")) + ((string-match "^=\s*\[0-9\]*\\.\[0-9\]+$" value) (setq type "float")) + ((string-match "^=\s*\[0-9\]+$" value) (setq type "int")) + ((string-match "^=\s*\['\"]" value) (setq type "string")) + ((string-match "^=\s*\\(true\\|false\\)" value) (setq type "bool")))) + + ((and (= (string-width type) 0) (not value)) + (setq type "mixed"))) + + (when (equal is-nullable "?") + (setq type (concat type "|null"))) + + (insert-to-next-line-and-indent (concat "* @" tag-type " " type " " name))) + +(defun php-doc-block-function (name arguments return-type is-return-nullable) + "Insert php docblock for function" + (insert-to-next-line-and-indent (concat "* " name)) + + (when (> (string-width arguments) 0) + (insert-to-next-line-and-indent "*") + (dolist (arg (split-string arguments "\s*,\s*")) + (string-match "\s*\\(\[\?\]?\\)\s*\\(\[\\\]?\[a-zA-Z0-9_\]*\\)?\s*\\($\[a-zA-Z0-9_\]+\\)\s*\\(=.*\\)?" arg) + (php-doc-block-var-or-attr "param" (match-string 2 arg) (match-string 3 arg) (match-string 4 arg) (match-string 1 arg)))) + + (when (> (string-width return-type) 0) + (insert-to-next-line-and-indent "*") + (when (equal is-return-nullable "?") + (setq return-type (concat return-type "|null"))) + (insert-to-next-line-and-indent (concat "* @return " return-type)))) + +(defun php-doc-block-class (type name) + "Insert php doc block for class, interface etc." + + (insert-to-next-line-and-indent (concat "* " name " " type))) + +(defun php-doc-block () + "Insert php docblock." + (interactive) + (let ((line (thing-at-point 'line))) + (insert-to-prev-line-and-indent "/**") + (cond + ((string-match "function\s*" line) + (beginning-of-line) + (let ((line (thing-at-point 'line)) (func-defun "") (s-point (point)) (e-point (re-search-forward ";\\|{" nil '(nil)))) + (goto-char s-point) + (if e-point + (setq func-defun (replace-regexp-in-string "{\\|\n" "" (buffer-substring s-point e-point))) + (progn + (end-of-line) + (setq func-defun (buffer-substring s-point (point)))) + ) + (when (string-match "function\s+\\([A-Za-z0-9_]+\\)\s*(\\(.*\\))\s*:*\s*\\(\[\?\]?\\)\s*\\(\[A-Za-z0-9_\\\]*\\)" func-defun) + (php-doc-block-function (match-string 1 func-defun) (match-string 2 func-defun) (match-string 4 func-defun) (match-string 3 func-defun))))) + ((string-match "\s*\\([a-zA-Z0-9_]+\\)?\s*\\($\[a-zA-Z0-9_\]+\\)\s*\\(=\[^;\]*\\)?" line) + (php-doc-block-var-or-attr "var" "" (match-string 2 line) (match-string 3 line) "")) + ((string-match "\\(class\\|interface\\|trait\\|abstract class\\)\s+\\(\[a-zA-Z0-9_\]+\\)" line) + (php-doc-block-class (match-string 1 line) (match-string 2 line)))) + (insert-to-next-line-and-indent "*/"))) + +(provide 'php-doc-block) +;;; php-doc-block.el ends here diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..372a5a6 --- /dev/null +++ b/readme.md @@ -0,0 +1,61 @@ +# Configuración de Emacs actual + +Esta configuración para emacs se podría decir que es la heredera de mi [configuración de emacs inicial](https://git.kj2.me/kj/confi-emacs-inicial), la cual ya llevaba tiempo necesitando una manita de gato para arreglar y mejorar algunas cosas que me resultan cómodas para el uso, ademas de comenzar a utilizar `evil-mode`. Esta configuración bien podría haber sido una rama de la inicial, pero he decidido hacer uno nuevo y si es neceario hacer aquí las ramas. + +## Instalación + +Si deseas clonar mi configuración, puedes clonar este repositorio: + +`git clone --depth 1 https://git.kj2.me/kj/confi-emacs-actual.git ~/.emacs.d` + +Instalación de fonts necesarios: + +`sudo apt install fonts-firacode fonts-cantarell` + +Al igual que la versión anterior, puede ser necesario ejecutar el siguiente comando en el minibuffer para tener bien los íconos de neotree: + +`all-the-icons-install-fonts` + +Y eso sería todo. + +## Usar el modo daemon + +El modo daemon permite a emacs cargar mucho más rápido, puesto que con ello evitas volver a cargar la configuración cada vez que abres un nuevo archivo. Si quieres aprender mas sobre esto, puedes revisarlo en la [dococumentación de emacs](https://www.emacswiki.org/emacs/EmacsAsDaemon). + +Para iniciar el daemon, puedes hacerlo desde la terminal ejecutando: + +`sudo systemctl --user start emacs` + +Del mismo modo, igual es recomendable habilitar el autoinicio de este servicio junto con el sistema: + +`sudo systemctl --user enable emacs` + +Finalmente, para abrirlo, es necesaria la usar `emacsclient` en lugar de `emacs`, para hacer que eso suceda en todo el sistema se puede realizar el siguiente hack copiando el archivo `emacs-client-runner.sh` a `/usr/local/bin/` con el nombre `emacs` de la siguiente manera: + +`sudo cp ~/.emacs.d/emacs-client-runner.sh /usr/local/bin/emacs` + +**🔴 Advertencia:** Esto reemplazará emacs por emacsclient, si deseas usar emacs podrás hacerlo mediante: `/bin/emacs` + +**Extra:** Con este hack, para abrir emacs en modo terminal puedes ejecutar: `emacsclient -t`, `emacs -t` o `emacs -nw`. + +## Consideraciones + +- Toda la configuración la he realizado en los archivos que están en los archivos de la carpeta config, el archivo `init.el` solo los llama y no guarda nada más aparte de eso. +- Puede tener activado `evil-mode` (A veces lo activo, pues quiero terminar usándolo siempre), por lo que si no lo quieres tener, recomiendo comentar la línea que lo activa (`(evil-mode 1)`) o directamente toda la sección en `base-extensions.el` que cofigura evil. +- Se puede activar/desactivar `cua-mode` (`configs/base.el`, línea 49) activado para poder copiar, cortar, pegar y deshacer cambios con las combinaciones típicas en lugar de las de emacs. +- Con F9 puedes abrir y cerrar neotree. +- Con C-F11 puedes maximizar/restaurar. +- Con C-F6 se generan/regenera el archivo TAGs. +- Con C-F5 se abre una terminal en la carpeta del archivo actual. +- Con M-c se puede comentar / descomentar un región. +- Por defecto he configurado que al presionar TAB se usen 2 espacios en su lugar. +- Cuando usas `C-s` (buscar), busca el texto actualmente seleccionado. + +Recuerda que si alguna cosa no te gusta, puedes cambiarla a gusto. Esta configuración fue hecha para mi uso personal y puede que tenga cosas que solo a mi me parecen cómodas/útiles. + +## Contacto + +Si se tiene alguna pregunta o quieres comentarme alguna corrección, puesto que este git no está abierto a registro, puedes contactarme mediante: + +E-mail: webmaster@outcontol.net +Telegram: [https://t.me/keyjay](https://t.me/keyjay) diff --git a/snippets/css-mode/import b/snippets/css-mode/import new file mode 100644 index 0000000..e8faaf8 --- /dev/null +++ b/snippets/css-mode/import @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: @import +# key: imp +# uuid: imp +# -- +@import "`(doom-snippets-text nil t)`$0"; \ No newline at end of file diff --git a/snippets/css-mode/importfont b/snippets/css-mode/importfont new file mode 100644 index 0000000..39faa2b --- /dev/null +++ b/snippets/css-mode/importfont @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: @import url("//fonts.googleapis...") +# key: impfont +# uuid: impfont +# -- +@import url("http://fonts.googleapis.com/css?family=${1:Open+Sans}"); \ No newline at end of file diff --git a/snippets/css-mode/importurl b/snippets/css-mode/importurl new file mode 100644 index 0000000..d91fc86 --- /dev/null +++ b/snippets/css-mode/importurl @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: @import url(...) +# key: impurl +# uuid: impurl +# -- +@import url("`(doom-snippets-text nil t)`$0"); \ No newline at end of file diff --git a/snippets/css-mode/margin b/snippets/css-mode/margin new file mode 100644 index 0000000..6431e56 --- /dev/null +++ b/snippets/css-mode/margin @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: margin: ...; +# key: mar +# uuid: mar +# -- +margin: ${1:0 auto}; \ No newline at end of file diff --git a/snippets/css-mode/media b/snippets/css-mode/media new file mode 100644 index 0000000..18b8dae --- /dev/null +++ b/snippets/css-mode/media @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: @media +# key: med +# uuid: med +# -- +@media ${1:screen} { + `%`$0 +} \ No newline at end of file diff --git a/snippets/css-mode/media_orientation b/snippets/css-mode/media_orientation new file mode 100644 index 0000000..2aea9e0 --- /dev/null +++ b/snippets/css-mode/media_orientation @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: @media (orientation: ?) +# condition: (looking-back "@media " (line-beginning-position)) +# -- +(orientation: ${1:landscape}) \ No newline at end of file diff --git a/snippets/css-mode/media_print b/snippets/css-mode/media_print new file mode 100644 index 0000000..66d1f20 --- /dev/null +++ b/snippets/css-mode/media_print @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: @media print { ... } +# -- +@media print { + `%`$0 +} \ No newline at end of file diff --git a/snippets/css-mode/padding b/snippets/css-mode/padding new file mode 100644 index 0000000..e667956 --- /dev/null +++ b/snippets/css-mode/padding @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: padding: ...; +# key: pad +# uuid: pad +# -- +padding: ${1:10px}; \ No newline at end of file diff --git a/snippets/css-mode/property b/snippets/css-mode/property new file mode 100644 index 0000000..c2f4c1e --- /dev/null +++ b/snippets/css-mode/property @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: ...: ...; +# key: : +# uuid: : +# -- +${1:prop}: ${2:`%`}; \ No newline at end of file diff --git a/snippets/go-mode/append b/snippets/go-mode/append new file mode 100644 index 0000000..c818d27 --- /dev/null +++ b/snippets/go-mode/append @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: append +# -- +${1:type} = append($1, ${2:elems}) diff --git a/snippets/go-mode/coloneq b/snippets/go-mode/coloneq new file mode 100644 index 0000000..25f482c --- /dev/null +++ b/snippets/go-mode/coloneq @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: ... := ... +# key: := +# uuid: := +# -- +${1:x} := ${2:`%`} \ No newline at end of file diff --git a/snippets/go-mode/const b/snippets/go-mode/const new file mode 100644 index 0000000..229dbc2 --- /dev/null +++ b/snippets/go-mode/const @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: const ... = ... +# -- +const ${1:name}${2: type} = ${3:value}$0 \ No newline at end of file diff --git a/snippets/go-mode/ctxc b/snippets/go-mode/ctxc new file mode 100644 index 0000000..4948a5e --- /dev/null +++ b/snippets/go-mode/ctxc @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: ctx context.Context +# -- +ctx context.Context \ No newline at end of file diff --git a/snippets/go-mode/f b/snippets/go-mode/f new file mode 100644 index 0000000..4a1175c --- /dev/null +++ b/snippets/go-mode/f @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: func ...(...) ... { ... } +# -- +func ${1:name}(${2:args})${3: return type} { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/fm b/snippets/go-mode/fm new file mode 100644 index 0000000..a35ace1 --- /dev/null +++ b/snippets/go-mode/fm @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: func (target) name(args) (results) { ... } +# -- +func (${1:target}) ${2:name}(${3:args})${4: return type} { + $0 +} \ No newline at end of file diff --git a/snippets/go-mode/for b/snippets/go-mode/for new file mode 100644 index 0000000..b9814ff --- /dev/null +++ b/snippets/go-mode/for @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: for ... { ... } +# -- +for $1 { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/fore b/snippets/go-mode/fore new file mode 100644 index 0000000..33b28ba --- /dev/null +++ b/snippets/go-mode/fore @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: for key, value := range ... { ... } +# -- +for ${1:key}, ${2:value} := range ${3:target} { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/foreach b/snippets/go-mode/foreach new file mode 100644 index 0000000..33b28ba --- /dev/null +++ b/snippets/go-mode/foreach @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: for key, value := range ... { ... } +# -- +for ${1:key}, ${2:value} := range ${3:target} { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/fori b/snippets/go-mode/fori new file mode 100644 index 0000000..4a3c7c9 --- /dev/null +++ b/snippets/go-mode/fori @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: for i := 0; i < n; i++ { ... } +# -- +for ${1:i} := ${2:0}; $1 < ${3:10}; $1++ { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/forw b/snippets/go-mode/forw new file mode 100644 index 0000000..b9814ff --- /dev/null +++ b/snippets/go-mode/forw @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: for ... { ... } +# -- +for $1 { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/func b/snippets/go-mode/func new file mode 100644 index 0000000..4a1175c --- /dev/null +++ b/snippets/go-mode/func @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: func ...(...) ... { ... } +# -- +func ${1:name}(${2:args})${3: return type} { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/go b/snippets/go-mode/go new file mode 100644 index 0000000..5dda00e --- /dev/null +++ b/snippets/go-mode/go @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: go +# -- +go ${1:func}(${2:args})$0 diff --git a/snippets/go-mode/gof b/snippets/go-mode/gof new file mode 100644 index 0000000..fff6834 --- /dev/null +++ b/snippets/go-mode/gof @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: go func +# -- +go func (${1:args}) { + $0 +}(${2:values}) diff --git a/snippets/go-mode/gofunc b/snippets/go-mode/gofunc new file mode 100644 index 0000000..fceed67 --- /dev/null +++ b/snippets/go-mode/gofunc @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: go func (short) +# -- +go func (${1:args}) { + $0 +}(${2:values}) diff --git a/snippets/go-mode/if b/snippets/go-mode/if new file mode 100644 index 0000000..0c90e1d --- /dev/null +++ b/snippets/go-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: if ... { ... } +# -- +if ${1:condition} { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/ife b/snippets/go-mode/ife new file mode 100644 index 0000000..e8af1d1 --- /dev/null +++ b/snippets/go-mode/ife @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: if ... { ... } else { ... } +# -- +if ${1:condition} { + `%`$2 +} else { + $0 +} \ No newline at end of file diff --git a/snippets/go-mode/iferr b/snippets/go-mode/iferr new file mode 100644 index 0000000..87922f0 --- /dev/null +++ b/snippets/go-mode/iferr @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: if err != nil { ... } +# -- +if err != nil { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/imp b/snippets/go-mode/imp new file mode 100644 index 0000000..d23663e --- /dev/null +++ b/snippets/go-mode/imp @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: import +# -- +import ${1:package}$0 \ No newline at end of file diff --git a/snippets/go-mode/import b/snippets/go-mode/import new file mode 100644 index 0000000..d23663e --- /dev/null +++ b/snippets/go-mode/import @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: import +# -- +import ${1:package}$0 \ No newline at end of file diff --git a/snippets/go-mode/interface b/snippets/go-mode/interface new file mode 100644 index 0000000..da4108a --- /dev/null +++ b/snippets/go-mode/interface @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: type ... interface { ... } +# -- +type $1 interface { + `%`$0 +} diff --git a/snippets/go-mode/main b/snippets/go-mode/main new file mode 100644 index 0000000..0b042c2 --- /dev/null +++ b/snippets/go-mode/main @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: func main() { ... } +# -- +func main() { + $0 +} \ No newline at end of file diff --git a/snippets/go-mode/map b/snippets/go-mode/map new file mode 100644 index 0000000..e3f3244 --- /dev/null +++ b/snippets/go-mode/map @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: map +# -- +map[${1:KeyType}]${2:ValueType} \ No newline at end of file diff --git a/snippets/go-mode/method b/snippets/go-mode/method new file mode 100644 index 0000000..a35ace1 --- /dev/null +++ b/snippets/go-mode/method @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: func (target) name(args) (results) { ... } +# -- +func (${1:target}) ${2:name}(${3:args})${4: return type} { + $0 +} \ No newline at end of file diff --git a/snippets/go-mode/package b/snippets/go-mode/package new file mode 100644 index 0000000..86eb150 --- /dev/null +++ b/snippets/go-mode/package @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: package +# -- +package ${1:`(car (last (split-string (file-name-directory buffer-file-name) "/") 2))`} \ No newline at end of file diff --git a/snippets/go-mode/pkg b/snippets/go-mode/pkg new file mode 100644 index 0000000..88c1d01 --- /dev/null +++ b/snippets/go-mode/pkg @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: package (short) +# -- +package ${1:`(car (last (split-string (file-name-directory buffer-file-name) "/") 2))`} \ No newline at end of file diff --git a/snippets/go-mode/pr b/snippets/go-mode/pr new file mode 100644 index 0000000..7baa73c --- /dev/null +++ b/snippets/go-mode/pr @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: printf +# -- +fmt.Printf("$1\n"${2:, ${3:str}}) \ No newline at end of file diff --git a/snippets/go-mode/printf b/snippets/go-mode/printf new file mode 100644 index 0000000..7baa73c --- /dev/null +++ b/snippets/go-mode/printf @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: printf +# -- +fmt.Printf("$1\n"${2:, ${3:str}}) \ No newline at end of file diff --git a/snippets/go-mode/println b/snippets/go-mode/println new file mode 100644 index 0000000..7aefc53 --- /dev/null +++ b/snippets/go-mode/println @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: println +# -- +fmt.Println("${1:msg}")$0 diff --git a/snippets/go-mode/prln b/snippets/go-mode/prln new file mode 100644 index 0000000..67b1e1e --- /dev/null +++ b/snippets/go-mode/prln @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: println (short) +# -- +fmt.Println("${1:msg}")$0 diff --git a/snippets/go-mode/select b/snippets/go-mode/select new file mode 100644 index 0000000..6198e78 --- /dev/null +++ b/snippets/go-mode/select @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: select +# -- +select { + case ${1:cond}: + $0 +} diff --git a/snippets/go-mode/struct b/snippets/go-mode/struct new file mode 100644 index 0000000..d0aa7cd --- /dev/null +++ b/snippets/go-mode/struct @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: type ... struct { ... } +# -- +type $1 struct { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/switch b/snippets/go-mode/switch new file mode 100644 index 0000000..29ef0e8 --- /dev/null +++ b/snippets/go-mode/switch @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: switch +# key: switch +# uuid: switch +# -- +switch { + case ${1:cond}: + $0 +} \ No newline at end of file diff --git a/snippets/go-mode/test b/snippets/go-mode/test new file mode 100644 index 0000000..02c6d82 --- /dev/null +++ b/snippets/go-mode/test @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: func Test...() { ... } +# -- +func Test${1:Name}(${2:t *testing.T}) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/var b/snippets/go-mode/var new file mode 100644 index 0000000..51a7245 --- /dev/null +++ b/snippets/go-mode/var @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: var +# -- +var ${1:name} ${2:type} = ${3:value}$0 \ No newline at end of file diff --git a/snippets/go-mode/while b/snippets/go-mode/while new file mode 100644 index 0000000..ee71ddb --- /dev/null +++ b/snippets/go-mode/while @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name : for ... { ... } +# -- +for $1 { + `%`$0 +} \ No newline at end of file diff --git a/snippets/go-mode/wr b/snippets/go-mode/wr new file mode 100644 index 0000000..432fbee --- /dev/null +++ b/snippets/go-mode/wr @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: http request writer +# -- +w http.ResponseWriter, r *http.Request \ No newline at end of file diff --git a/snippets/html-mode/dd b/snippets/html-mode/dd new file mode 100644 index 0000000..30cbeb5 --- /dev/null +++ b/snippets/html-mode/dd @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Rodrigo Setti +# name:
...
+# group: list +# -- +
$1
\ No newline at end of file diff --git a/snippets/html-mode/dl b/snippets/html-mode/dl new file mode 100644 index 0000000..1753361 --- /dev/null +++ b/snippets/html-mode/dl @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Rodrigo Setti +# name:
...
+# group: list +# -- +
+ $0 +
diff --git a/snippets/html-mode/doctype b/snippets/html-mode/doctype new file mode 100644 index 0000000..7bffad7 --- /dev/null +++ b/snippets/html-mode/doctype @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: Doctype HTML 5 +# group: meta +# -- + diff --git a/snippets/html-mode/doctype.xhml1 b/snippets/html-mode/doctype.xhml1 new file mode 100644 index 0000000..b94dbf4 --- /dev/null +++ b/snippets/html-mode/doctype.xhml1 @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: DocType XHTML 1.0 frameset +# group: meta +# -- + \ No newline at end of file diff --git a/snippets/html-mode/doctype.xhtml1_1 b/snippets/html-mode/doctype.xhtml1_1 new file mode 100644 index 0000000..875547d --- /dev/null +++ b/snippets/html-mode/doctype.xhtml1_1 @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: DocType XHTML 1.1 +# group: meta +# -- + \ No newline at end of file diff --git a/snippets/html-mode/doctype.xhtml1_strict b/snippets/html-mode/doctype.xhtml1_strict new file mode 100644 index 0000000..8ddc158 --- /dev/null +++ b/snippets/html-mode/doctype.xhtml1_strict @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: DocType XHTML 1.0 Strict +# group: meta +# -- + \ No newline at end of file diff --git a/snippets/html-mode/doctype.xhtml1_transitional b/snippets/html-mode/doctype.xhtml1_transitional new file mode 100644 index 0000000..144bc43 --- /dev/null +++ b/snippets/html-mode/doctype.xhtml1_transitional @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: DocType XHTML 1.0 Transitional +# group: meta +# -- + \ No newline at end of file diff --git a/snippets/html-mode/dt b/snippets/html-mode/dt new file mode 100644 index 0000000..7641c8e --- /dev/null +++ b/snippets/html-mode/dt @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Rodrigo Setti +# name:
...
+# group: list +# -- +
$1
\ No newline at end of file diff --git a/snippets/html-mode/form b/snippets/html-mode/form new file mode 100644 index 0000000..5511388 --- /dev/null +++ b/snippets/html-mode/form @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Jimmy Wu +# name:
+# -- +
+ $0 +
\ No newline at end of file diff --git a/snippets/html-mode/html b/snippets/html-mode/html new file mode 100644 index 0000000..8600a33 --- /dev/null +++ b/snippets/html-mode/html @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Jimmy Wu +# name: ... +# -- + + $0 + diff --git a/snippets/html-mode/html.xmlns b/snippets/html-mode/html.xmlns new file mode 100644 index 0000000..a85689b --- /dev/null +++ b/snippets/html-mode/html.xmlns @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# contributor: Jimmy Wu +# name: ... +# -- + + $0 + diff --git a/snippets/html-mode/link b/snippets/html-mode/link new file mode 100644 index 0000000..3f97d00 --- /dev/null +++ b/snippets/html-mode/link @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: +# key: link +# uuid: link +# -- + \ No newline at end of file diff --git a/snippets/html-mode/linkie b/snippets/html-mode/linkie new file mode 100644 index 0000000..6e2c2ee --- /dev/null +++ b/snippets/html-mode/linkie @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: +# -- + diff --git a/snippets/html-mode/mailto b/snippets/html-mode/mailto new file mode 100644 index 0000000..afdd485 --- /dev/null +++ b/snippets/html-mode/mailto @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name:
... +# -- +`(doom-snippets-format "%n%s%n")`$0 \ No newline at end of file diff --git a/snippets/html-mode/meta b/snippets/html-mode/meta new file mode 100644 index 0000000..6cad73a --- /dev/null +++ b/snippets/html-mode/meta @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor : Jimmy Wu +# group: meta +# name: +# -- + \ No newline at end of file diff --git a/snippets/html-mode/meta.http-equiv b/snippets/html-mode/meta.http-equiv new file mode 100644 index 0000000..a7a5a50 --- /dev/null +++ b/snippets/html-mode/meta.http-equiv @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Jimmy Wu +# name: +# group: meta +# -- + \ No newline at end of file diff --git a/snippets/html-mode/script b/snippets/html-mode/script new file mode 100644 index 0000000..d36430e --- /dev/null +++ b/snippets/html-mode/script @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: +# -- + \ No newline at end of file diff --git a/snippets/html-mode/scriptsrc b/snippets/html-mode/scriptsrc new file mode 100644 index 0000000..db4dbe5 --- /dev/null +++ b/snippets/html-mode/scriptsrc @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: +# -- + \ No newline at end of file diff --git a/snippets/html-mode/textarea b/snippets/html-mode/textarea new file mode 100644 index 0000000..d3f5c7a --- /dev/null +++ b/snippets/html-mode/textarea @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# contributor: Jimmy Wu +# name: +# -- + \ No newline at end of file diff --git a/snippets/html-mode/th b/snippets/html-mode/th new file mode 100644 index 0000000..6d3e21a --- /dev/null +++ b/snippets/html-mode/th @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Jimmy Wu +# name: ... +# group: table +# -- +$2 \ No newline at end of file diff --git a/snippets/java-mode/@param b/snippets/java-mode/@param new file mode 100644 index 0000000..9c7ed49 --- /dev/null +++ b/snippets/java-mode/@param @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: param +# key: @param +# uuid: @param +# condition: (sp-point-in-comment) +# -- +@param ${1:paramater} $0 \ No newline at end of file diff --git a/snippets/java-mode/@return b/snippets/java-mode/@return new file mode 100644 index 0000000..f59a873 --- /dev/null +++ b/snippets/java-mode/@return @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: return +# key: @return +# uuid: @return +# condition: (sp-point-in-comment) +# -- +@return ${1:description} \ No newline at end of file diff --git a/snippets/java-mode/apr_assert b/snippets/java-mode/apr_assert new file mode 100644 index 0000000..dca9f95 --- /dev/null +++ b/snippets/java-mode/apr_assert @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: apr_assert +# key: apr_assert +# uuid: apr_assert +# -- +if (Globals.useAssertions) { + ${1:assert ..}; +} diff --git a/snippets/java-mode/class b/snippets/java-mode/class new file mode 100644 index 0000000..4b23f00 --- /dev/null +++ b/snippets/java-mode/class @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: class +# key: class +# uuid: class +# -- +${1:public }class ${2:`(f-base buffer-file-name)`} { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/constructor b/snippets/java-mode/constructor new file mode 100644 index 0000000..7a379cd --- /dev/null +++ b/snippets/java-mode/constructor @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: constructor +# key: __init__ +# uuid: __init__ +# -- +public ${1:`(f-base buffer-file-name)`}($2) { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/doc b/snippets/java-mode/doc new file mode 100644 index 0000000..7108ccf --- /dev/null +++ b/snippets/java-mode/doc @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: doc +# key: /* +# uuid: /* +# condition: (not (use-region-p)) +# -- +/** + * $0 + */ \ No newline at end of file diff --git a/snippets/java-mode/equals b/snippets/java-mode/equals new file mode 100644 index 0000000..9b66be5 --- /dev/null +++ b/snippets/java-mode/equals @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: equals +# key: eq +# uuid: eq +# -- +public boolean equals(${1:Class} other) { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/file_class b/snippets/java-mode/file_class new file mode 100644 index 0000000..a0685b3 --- /dev/null +++ b/snippets/java-mode/file_class @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: file_class +# key: file +# uuid: file +# -- +public class ${1:`(file-name-base + (or (buffer-file-name) + (buffer-name)))`} { + $0 +} diff --git a/snippets/java-mode/for b/snippets/java-mode/for new file mode 100644 index 0000000..8f304a3 --- /dev/null +++ b/snippets/java-mode/for @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# uuid: for +# -- +for (${1:int i = 0}; ${2:i < N}; ${3:i++}) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/java-mode/foreach b/snippets/java-mode/foreach new file mode 100644 index 0000000..236a446 --- /dev/null +++ b/snippets/java-mode/foreach @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: foreach +# key: fore +# uuid: fore +# -- +for (${1:Object} ${2:var} : ${3:iterator}) { + $0 +} diff --git a/snippets/java-mode/if b/snippets/java-mode/if new file mode 100644 index 0000000..bddbdd5 --- /dev/null +++ b/snippets/java-mode/if @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# uuid: if +# condition: (not (sp-point-in-string-or-comment)) +# -- +if (${1:true}) { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/ife b/snippets/java-mode/ife new file mode 100644 index 0000000..2aa4c60 --- /dev/null +++ b/snippets/java-mode/ife @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: ife +# key: ife +# uuid: ife +# -- +if (${1:true}) { + `%`$2 +} else { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/import b/snippets/java-mode/import new file mode 100644 index 0000000..f863d97 --- /dev/null +++ b/snippets/java-mode/import @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: import +# -- +import ${1:System.}; +$0 \ No newline at end of file diff --git a/snippets/java-mode/interface b/snippets/java-mode/interface new file mode 100644 index 0000000..b5cac51 --- /dev/null +++ b/snippets/java-mode/interface @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: interface +# key: interface +# uuid: interface +# -- +interface ${1:`(f-base buffer-file-name)`} { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/iterator b/snippets/java-mode/iterator new file mode 100644 index 0000000..523310c --- /dev/null +++ b/snippets/java-mode/iterator @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: iterator +# key: iterator +# uuid: iterator +# -- +public Iterator<${1:type}> iterator() { + $0 +} diff --git a/snippets/java-mode/javadoc b/snippets/java-mode/javadoc new file mode 100644 index 0000000..af9c339 --- /dev/null +++ b/snippets/java-mode/javadoc @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: javadoc +# key: doc +# uuid: doc +# -- +/** + * $0 + * + */ \ No newline at end of file diff --git a/snippets/java-mode/main b/snippets/java-mode/main new file mode 100644 index 0000000..7b51d33 --- /dev/null +++ b/snippets/java-mode/main @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: main +# key: main +# uuid: main +# -- +public static void main(String[] args) { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/method b/snippets/java-mode/method new file mode 100644 index 0000000..d7159d4 --- /dev/null +++ b/snippets/java-mode/method @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: method +# key: method +# uuid: method +# condition: (not (sp-point-in-string-or-comment)) +# -- +${1:void} ${2:name}($3) { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/method@ b/snippets/java-mode/method@ new file mode 100644 index 0000000..697dbcb --- /dev/null +++ b/snippets/java-mode/method@ @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: @Override method +# key: method@ +# uuid: method@ +# condition: (not (sp-point-in-string-or-comment)) +# -- +@Override ${1:public} ${2:void} ${3:methodName}($4) { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/new b/snippets/java-mode/new new file mode 100644 index 0000000..6c811c7 --- /dev/null +++ b/snippets/java-mode/new @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: new +# key: new +# uuid: new +# -- +${1:Type} ${2:obj} = new ${3:$1}($4);$0 \ No newline at end of file diff --git a/snippets/java-mode/paintComponent b/snippets/java-mode/paintComponent new file mode 100644 index 0000000..ef1b36d --- /dev/null +++ b/snippets/java-mode/paintComponent @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: paintComponent (Swing) +# key: paintComponent +# uuid: paintComponent +# condition: (not (sp-point-in-string-or-comment)) +# -- +@Override public void paintComponent(Graphics g) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/java-mode/printf b/snippets/java-mode/printf new file mode 100644 index 0000000..9d49a47 --- /dev/null +++ b/snippets/java-mode/printf @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: printf +# key: printf +# uuid: printf +# -- +System.out.printf("`%`$0%n"); \ No newline at end of file diff --git a/snippets/java-mode/println b/snippets/java-mode/println new file mode 100644 index 0000000..5749c6a --- /dev/null +++ b/snippets/java-mode/println @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: println +# key: println +# uuid: println +# -- +System.out.println("`%`$0"); \ No newline at end of file diff --git a/snippets/java-mode/private b/snippets/java-mode/private new file mode 100644 index 0000000..32e58fe --- /dev/null +++ b/snippets/java-mode/private @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: private +# key: pri +# uuid: pri +# -- +private $0 \ No newline at end of file diff --git a/snippets/java-mode/protected b/snippets/java-mode/protected new file mode 100644 index 0000000..cdc4c24 --- /dev/null +++ b/snippets/java-mode/protected @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: protected +# key: pr +# uuid: pr +# -- +protected $0 \ No newline at end of file diff --git a/snippets/java-mode/public b/snippets/java-mode/public new file mode 100644 index 0000000..378b360 --- /dev/null +++ b/snippets/java-mode/public @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: public +# key: p +# uuid: p +# -- +public $0 \ No newline at end of file diff --git a/snippets/java-mode/return b/snippets/java-mode/return new file mode 100644 index 0000000..b7e80e8 --- /dev/null +++ b/snippets/java-mode/return @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: return +# key: ret +# uuid: ret +# condition: (not (sp-point-in-string-or-comment)) +# -- +return `%`$0; \ No newline at end of file diff --git a/snippets/java-mode/test b/snippets/java-mode/test new file mode 100644 index 0000000..2aa4d2d --- /dev/null +++ b/snippets/java-mode/test @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: test +# key: test +# uuid: test +# -- +@Test +public void test_${1:Case}() { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/testClass b/snippets/java-mode/testClass new file mode 100644 index 0000000..6bdeb91 --- /dev/null +++ b/snippets/java-mode/testClass @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +# name: testClass +# key: tc +# uuid: tc +# -- +import junit.framework.*; +import junit.textui.*; + +public class Test${1:Class} extends TestCase { + protected void setUp() { + $0 + } +} \ No newline at end of file diff --git a/snippets/java-mode/this b/snippets/java-mode/this new file mode 100644 index 0000000..2f67688 --- /dev/null +++ b/snippets/java-mode/this @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: this +# key: . +# uuid: . +# -- +this.$0 \ No newline at end of file diff --git a/snippets/java-mode/toString b/snippets/java-mode/toString new file mode 100644 index 0000000..2e60c9d --- /dev/null +++ b/snippets/java-mode/toString @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: toString +# key: toStr +# uuid: toStr +# -- +public String toString() { + $0 +} \ No newline at end of file diff --git a/snippets/java-mode/try b/snippets/java-mode/try new file mode 100644 index 0000000..b659b66 --- /dev/null +++ b/snippets/java-mode/try @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# name: try +# key: try +# uuid: try +# condition: (not (sp-point-in-string-or-comment)) +# -- +try { + `%`$0 +} catch (${1:Throwable} e) { + ${2:System.out.println("Error " + e.getMessage()); + e.printStackTrace();} +} \ No newline at end of file diff --git a/snippets/java-mode/var b/snippets/java-mode/var new file mode 100644 index 0000000..7d9a3c6 --- /dev/null +++ b/snippets/java-mode/var @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: variable declaration +# key: var +# uuid: var +# condition: (not (sp-point-in-string-or-comment)) +# -- +${1:int} ${2:variable} \ No newline at end of file diff --git a/snippets/java-mode/var= b/snippets/java-mode/var= new file mode 100644 index 0000000..1583c12 --- /dev/null +++ b/snippets/java-mode/var= @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: variable declaration & assignment +# key: var= +# uuid: var= +# condition: (not (sp-point-in-string-or-comment)) +# -- +${1:int} ${2:variable} = `%`$0; \ No newline at end of file diff --git a/snippets/java-mode/void b/snippets/java-mode/void new file mode 100644 index 0000000..71d7e81 --- /dev/null +++ b/snippets/java-mode/void @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: void +# key: v +# uuid: v +# -- +void $0 \ No newline at end of file diff --git a/snippets/java-mode/while b/snippets/java-mode/while new file mode 100644 index 0000000..42dbb9b --- /dev/null +++ b/snippets/java-mode/while @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: while loop +# key: while +# uuid: while +# condition: (not (sp-point-in-string-or-comment)) +# -- +while (${1:true}) { + $0 +} \ No newline at end of file diff --git a/snippets/js-mode/Math b/snippets/js-mode/Math new file mode 100644 index 0000000..e9d54e4 --- /dev/null +++ b/snippets/js-mode/Math @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: Math. +# key: M +# uuid: M +# -- +Math.$0 \ No newline at end of file diff --git a/snippets/js-mode/addEventListener b/snippets/js-mode/addEventListener new file mode 100644 index 0000000..54e3d64 --- /dev/null +++ b/snippets/js-mode/addEventListener @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: addEventListener +# key: ael +# uuid: ael +# -- +`(unless (eq (char-before) ?.) ".")`addEventListener('${1:DOMContentLoaded}', () => { + `%`$0 +})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/alert b/snippets/js-mode/alert new file mode 100644 index 0000000..5f7bcf6 --- /dev/null +++ b/snippets/js-mode/alert @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: alert +# key: al +# uuid: al +# -- +alert(${0:`%`}); \ No newline at end of file diff --git a/snippets/js-mode/arrow b/snippets/js-mode/arrow new file mode 100644 index 0000000..57532e6 --- /dev/null +++ b/snippets/js-mode/arrow @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: arrow function +# key: => +# uuid: => +# -- +$1 => `(if (> (doom-snippets-count-lines %) 1) (concat "{ " (doom-snippets-format "%n%s%n") " }") %)`$0 \ No newline at end of file diff --git a/snippets/js-mode/cl b/snippets/js-mode/cl new file mode 100644 index 0000000..2886e0d --- /dev/null +++ b/snippets/js-mode/cl @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: class +# uuid: cl +# type: command +# -- +(doom-snippets-expand :uuid "class") \ No newline at end of file diff --git a/snippets/js-mode/class b/snippets/js-mode/class new file mode 100644 index 0000000..ebb45b9 --- /dev/null +++ b/snippets/js-mode/class @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: class +# -- +class ${1:Name} { + $0 +} \ No newline at end of file diff --git a/snippets/js-mode/const b/snippets/js-mode/const new file mode 100644 index 0000000..a323bc9 --- /dev/null +++ b/snippets/js-mode/const @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: const ... = ...; +# key: con +# uuid: con +# -- +const ${1:name} = ${0:`%`}; \ No newline at end of file diff --git a/snippets/js-mode/constructor b/snippets/js-mode/constructor new file mode 100644 index 0000000..7526a0e --- /dev/null +++ b/snippets/js-mode/constructor @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: constructor() { ... } +# -- +constructor($1) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/js-mode/decodeURI b/snippets/js-mode/decodeURI new file mode 100644 index 0000000..c187778 --- /dev/null +++ b/snippets/js-mode/decodeURI @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: decodeURI +# key: du +# uuid: du +# -- +decodeURI(${1:`%`})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/decodeURIComponent b/snippets/js-mode/decodeURIComponent new file mode 100644 index 0000000..b4cd915 --- /dev/null +++ b/snippets/js-mode/decodeURIComponent @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: decodeURIComponent +# key: duc +# uuid: duc +# -- +decodeURIComponent(${1:`%`})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/document b/snippets/js-mode/document new file mode 100644 index 0000000..dadf032 --- /dev/null +++ b/snippets/js-mode/document @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: document +# key: doc +# uuid: doc +# -- +document. \ No newline at end of file diff --git a/snippets/js-mode/else b/snippets/js-mode/else new file mode 100644 index 0000000..d39dac5 --- /dev/null +++ b/snippets/js-mode/else @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: else +# -- +else { + `%`$0 +} \ No newline at end of file diff --git a/snippets/js-mode/encodeURI b/snippets/js-mode/encodeURI new file mode 100644 index 0000000..8f81408 --- /dev/null +++ b/snippets/js-mode/encodeURI @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: encodeURI +# key: eu +# uuid: eu +# -- +encodeURI(${1:`%`})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/encodeURIComponent b/snippets/js-mode/encodeURIComponent new file mode 100644 index 0000000..c04008d --- /dev/null +++ b/snippets/js-mode/encodeURIComponent @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: encodeURIComponent +# key: euc +# uuid: euc +# -- +encodeURIComponent(${1:`%`})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/exports b/snippets/js-mode/exports new file mode 100644 index 0000000..2816e1c --- /dev/null +++ b/snippets/js-mode/exports @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: module.exports = ... +# uuid: exports +# key: exp +# -- +module.exports = `%`$0`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/filter b/snippets/js-mode/filter new file mode 100644 index 0000000..414f9c4 --- /dev/null +++ b/snippets/js-mode/filter @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arr.filter(...) +# key: fil +# uuid: fil +# -- +`(unless (eq (char-before) ?.) ".")`filter($0)`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/filter-arrow b/snippets/js-mode/filter-arrow new file mode 100644 index 0000000..e7e6de3 --- /dev/null +++ b/snippets/js-mode/filter-arrow @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arr.filter(item => {...}) +# key: fil=> +# uuid: fil=> +# -- +`(unless (eq (char-before) ?.) ".")`filter(${1:item} => `(if (> (doom-snippets-count-lines %) 1) (concat "{ " (doom-snippets-format "%n%s%n") " }") %)`$0)`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/filter-function b/snippets/js-mode/filter-function new file mode 100644 index 0000000..bf86a6b --- /dev/null +++ b/snippets/js-mode/filter-function @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: arr.filter(function(item) {...}) +# key: filfu +# uuid: filfu +# -- +`(unless (eq (char-before) ?.) ".")`filter(function(${1:item}) { + `(doom-snippets-format "%n%s%n")`$0 +})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/fireEvent b/snippets/js-mode/fireEvent new file mode 100644 index 0000000..806fc20 --- /dev/null +++ b/snippets/js-mode/fireEvent @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: fireEvent +# -- +fireEvent('$0') \ No newline at end of file diff --git a/snippets/js-mode/for b/snippets/js-mode/for new file mode 100644 index 0000000..f044761 --- /dev/null +++ b/snippets/js-mode/for @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: for (;;) +# key: for +# uuid: for +# -- +for ($1;$2;$3) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/js-mode/forEach b/snippets/js-mode/forEach new file mode 100644 index 0000000..a4167b3 --- /dev/null +++ b/snippets/js-mode/forEach @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arr.forEach(...) +# key: fore +# uuid: fore +# -- +`(unless (eq (char-before) ?.) ".")`forEach(`%`$0)`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/forEach-arrow b/snippets/js-mode/forEach-arrow new file mode 100644 index 0000000..5fd1752 --- /dev/null +++ b/snippets/js-mode/forEach-arrow @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arr.forEach((item) => {...}) +# key: fore=> +# uuid: fore=> +# -- +`(unless (eq (char-before) ?.) ".")`forEach(${1:item} => `(if (> (doom-snippets-count-lines %) 1) (concat "{ " (doom-snippets-format "%n%s%n") " }") %)`$0)`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/forEach-function b/snippets/js-mode/forEach-function new file mode 100644 index 0000000..f9e1838 --- /dev/null +++ b/snippets/js-mode/forEach-function @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: arr.forEach(function(item) {...}) +# key: forefu +# uuid: forefu +# -- +`(unless (eq (char-before) ?.) ".")`forEach(function(${1:item}) { + `(doom-snippets-format "%n%s%n")`$0 +})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/fori b/snippets/js-mode/fori new file mode 100644 index 0000000..a5b0e78 --- /dev/null +++ b/snippets/js-mode/fori @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: for (var i = 0; i < arr.length; ++i) { ... } +# key: fori +# uuid: fori +# -- +for (var ${1:i} = ${2:0}; $1 < ${3:${4:arr}.length}; ++$1) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/js-mode/forin b/snippets/js-mode/forin new file mode 100644 index 0000000..b0b6141 --- /dev/null +++ b/snippets/js-mode/forin @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: for (key in list) { ... } +# key: forin +# uuid: forin +# -- +for (${1:key} in ${2:list}) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/js-mode/fu b/snippets/js-mode/fu new file mode 100644 index 0000000..57324d7 --- /dev/null +++ b/snippets/js-mode/fu @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: anonymous/named function +# key: fu +# type: command +# -- +(doom-snippets-expand :uuid (if (doom-snippets-bolp) "function_block" "function_inline")) \ No newline at end of file diff --git a/snippets/js-mode/function b/snippets/js-mode/function new file mode 100644 index 0000000..e804e29 --- /dev/null +++ b/snippets/js-mode/function @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: named function +# key: function +# uuid: function_block +# condition: (or (doom-snippets-bolp) (region-active-p)) +# -- +function ${1:name}($2) { + `(doom-snippets-format "%n%s%n")`$0 +} \ No newline at end of file diff --git a/snippets/js-mode/function_inline b/snippets/js-mode/function_inline new file mode 100644 index 0000000..a142695 --- /dev/null +++ b/snippets/js-mode/function_inline @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: anonymous function +# key: function +# uuid: function_inline +# condition: (or (not (doom-snippets-bolp)) (region-active-p)) +# -- +function ($1) { `(doom-snippets-format "%n%s%n")`$0 }`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/getElementById b/snippets/js-mode/getElementById new file mode 100644 index 0000000..caf9a63 --- /dev/null +++ b/snippets/js-mode/getElementById @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: getElementById +# key: gebi +# uuid: gebi +# -- +`(unless (eq (char-before) ?.) ".")`getElementById(${1:id})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/if b/snippets/js-mode/if new file mode 100644 index 0000000..82dd612 --- /dev/null +++ b/snippets/js-mode/if @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: if +# -- +if (${1:true}) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/js-mode/imp b/snippets/js-mode/imp new file mode 100644 index 0000000..19eb526 --- /dev/null +++ b/snippets/js-mode/imp @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: import ... from ...; +# uuid: imp +# type: command +# -- +(doom-snippets-expand :uuid "import") \ No newline at end of file diff --git a/snippets/js-mode/import b/snippets/js-mode/import new file mode 100644 index 0000000..055df76 --- /dev/null +++ b/snippets/js-mode/import @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: import ... from ...; +# uuid: import +# -- +import ${1:Object} from '${2:./$3}'; \ No newline at end of file diff --git a/snippets/js-mode/indexOf b/snippets/js-mode/indexOf new file mode 100644 index 0000000..a50f364 --- /dev/null +++ b/snippets/js-mode/indexOf @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arr.indexOf(elt, fromIndex) +# key: iof +# uuid: iof +# -- +`(unless (eq (char-before) ?.) ".")`indexOf(${1:`(or (doom-snippets-text nil t) "elt")`}${2: ${3:fromIndex}})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/jsdoc b/snippets/js-mode/jsdoc new file mode 100644 index 0000000..bddb7eb --- /dev/null +++ b/snippets/js-mode/jsdoc @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: /** ... */ +# key: /** +# uuid: /** +# -- +/** + * ${0:`(if % (s-replace "\n" "\n * " %))`} + */ \ No newline at end of file diff --git a/snippets/js-mode/let b/snippets/js-mode/let new file mode 100644 index 0000000..a68ce7f --- /dev/null +++ b/snippets/js-mode/let @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: let ... = ...; +# -- +let ${1:name} = ${0:`%`}; \ No newline at end of file diff --git a/snippets/js-mode/log b/snippets/js-mode/log new file mode 100644 index 0000000..8fa62fa --- /dev/null +++ b/snippets/js-mode/log @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: console.log("..."); +# -- +console.log(`(doom-snippets-text nil t)`$0)`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/map b/snippets/js-mode/map new file mode 100644 index 0000000..ff6cd45 --- /dev/null +++ b/snippets/js-mode/map @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arr.map(...) +# key: map +# uuid: map +# -- +`(unless (eq (char-before) ?.) ".")`map($0)`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/map-arrow b/snippets/js-mode/map-arrow new file mode 100644 index 0000000..92f1f72 --- /dev/null +++ b/snippets/js-mode/map-arrow @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arr.map((item, i, arr) => {...}) +# key: map=> +# uuid: map=> +# -- +`(unless (eq (char-before) ?.) ".")`map((${1:item}, ${2:i}, ${3:arr}) => `(if (> (doom-snippets-count-lines %) 1) (concat "{ " (doom-snippets-format "%n%s%n") " }") %)`$0)`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/map-function b/snippets/js-mode/map-function new file mode 100644 index 0000000..991b64d --- /dev/null +++ b/snippets/js-mode/map-function @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: arr.map(function(item, i, arr) {...}) +# key: mapfu +# uuid: mapfu +# -- +`(unless (eq (char-before) ?.) ".")`map(function(${1:item}, ${2:i}, ${3:arr}) { + `(doom-snippets-format "%n%s%n")`$0 +})`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/method b/snippets/js-mode/method new file mode 100644 index 0000000..f08ed46 --- /dev/null +++ b/snippets/js-mode/method @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: method() { ... } +# key: m +# uuid: m +# -- +${1:method}($2) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/js-mode/property b/snippets/js-mode/property new file mode 100644 index 0000000..d1f8f6f --- /dev/null +++ b/snippets/js-mode/property @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: ...: ... +# key: : +# uuid: : +# -- +${1:key}: ${0:value} \ No newline at end of file diff --git a/snippets/js-mode/push b/snippets/js-mode/push new file mode 100644 index 0000000..e30ab16 --- /dev/null +++ b/snippets/js-mode/push @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arr.push(elt) +# key: pu +# uuid: pu +# -- +`(unless (eq (char-before) ?.) ".")`push(`(doom-snippets-text nil t)`$0)`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/req b/snippets/js-mode/req new file mode 100644 index 0000000..1054803 --- /dev/null +++ b/snippets/js-mode/req @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: require("...") +# uuid: req +# type: command +# -- +(doom-snippets-expand :uuid "require") \ No newline at end of file diff --git a/snippets/js-mode/require b/snippets/js-mode/require new file mode 100644 index 0000000..0b0f7ee --- /dev/null +++ b/snippets/js-mode/require @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: require("...") +# uuid: require +# -- +require(`%`$0)`(if (eolp) ";")` \ No newline at end of file diff --git a/snippets/js-mode/return b/snippets/js-mode/return new file mode 100644 index 0000000..07e1701 --- /dev/null +++ b/snippets/js-mode/return @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: return ... +# key: r +# uuid: r +# -- +return $0; \ No newline at end of file diff --git a/snippets/js-mode/try b/snippets/js-mode/try new file mode 100644 index 0000000..6021320 --- /dev/null +++ b/snippets/js-mode/try @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: try-catch block +# -- +try { + `%`$0 +} catch (${1:err}) { + ${2:// Do something} +} \ No newline at end of file diff --git a/snippets/js-mode/var b/snippets/js-mode/var new file mode 100644 index 0000000..25e3fad --- /dev/null +++ b/snippets/js-mode/var @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: var ... = ...; +# key: var +# uuid: var +# -- +var ${1:name} = ${0:`%`}; \ No newline at end of file diff --git a/snippets/js-mode/while b/snippets/js-mode/while new file mode 100644 index 0000000..f4c1219 --- /dev/null +++ b/snippets/js-mode/while @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: while +# -- +while (${1:true}) { ${0:`(doom-snippets-format "%n%s%n")`} } \ No newline at end of file diff --git a/snippets/json-mode/eslintConfig b/snippets/json-mode/eslintConfig new file mode 100644 index 0000000..8c9d2c4 --- /dev/null +++ b/snippets/json-mode/eslintConfig @@ -0,0 +1,19 @@ +# -*- mode: snippet -*- +# name: eslintConfig +# key: eslint +# uuid: eslint +# condition: (equal (file-name-nondirectory buffer-file-name) "package.json") +# -- +"eslintConfig": { + "env": { + "es6": true, + "browser": true, + "commonjs": true, + "node": true + }, + "parserOptions": { + "ecmaFeatures": { + "jsx": true + } + } +} \ No newline at end of file diff --git a/snippets/kotlin-mode/class b/snippets/kotlin-mode/class new file mode 100644 index 0000000..fb05d03 --- /dev/null +++ b/snippets/kotlin-mode/class @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: class +# key: class +# -- +class ${1:name}${2:($3)}${4: : $5}${6: { + $0 +}} diff --git a/snippets/kotlin-mode/file_class b/snippets/kotlin-mode/file_class new file mode 100644 index 0000000..86a0f59 --- /dev/null +++ b/snippets/kotlin-mode/file_class @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: file_class +# key: file_class +# -- +class `(f-base buffer-file-name)`${1:($2)}${3: { + $0 +}} diff --git a/snippets/kotlin-mode/forin b/snippets/kotlin-mode/forin new file mode 100644 index 0000000..7d682a5 --- /dev/null +++ b/snippets/kotlin-mode/forin @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: for (key in iterable) { ... } +# key: forin +# -- +for (${1:key} in ${2:iterable}) { + `%`$0 +} diff --git a/snippets/kotlin-mode/fun b/snippets/kotlin-mode/fun new file mode 100644 index 0000000..e86af00 --- /dev/null +++ b/snippets/kotlin-mode/fun @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: fun +# key: fun +# -- +fun ${1:name}($2)${3:: ${4:Unit}} { + ${0:TODO('Not yet implemented')} +} diff --git a/snippets/kotlin-mode/if b/snippets/kotlin-mode/if new file mode 100644 index 0000000..5b20653 --- /dev/null +++ b/snippets/kotlin-mode/if @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: if +# key: if +# -- +if (${1:true}) { + $0 +} diff --git a/snippets/kotlin-mode/ife b/snippets/kotlin-mode/ife new file mode 100644 index 0000000..9421802 --- /dev/null +++ b/snippets/kotlin-mode/ife @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: ife +# key: ife +# -- +if (${1:true}) { + `%`$2 +} else { + $0 +} diff --git a/snippets/kotlin-mode/interface b/snippets/kotlin-mode/interface new file mode 100644 index 0000000..6fc8af2 --- /dev/null +++ b/snippets/kotlin-mode/interface @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: interface +# key: interface +# -- +interface ${1:name} { + $0 +} diff --git a/snippets/kotlin-mode/main b/snippets/kotlin-mode/main new file mode 100644 index 0000000..b3bd052 --- /dev/null +++ b/snippets/kotlin-mode/main @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: main +# key: main +# -- +fun main(args: Array) { + $0 +} diff --git a/snippets/kotlin-mode/todo b/snippets/kotlin-mode/todo new file mode 100644 index 0000000..125539c --- /dev/null +++ b/snippets/kotlin-mode/todo @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: todo +# key: todo +# -- +TODO('Not yet implemented') diff --git a/snippets/kotlin-mode/val b/snippets/kotlin-mode/val new file mode 100644 index 0000000..96f2729 --- /dev/null +++ b/snippets/kotlin-mode/val @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: val +# key: val +# -- +val ${1:name}: ${2:Int} \ No newline at end of file diff --git a/snippets/kotlin-mode/val= b/snippets/kotlin-mode/val= new file mode 100644 index 0000000..09c92d3 --- /dev/null +++ b/snippets/kotlin-mode/val= @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: val= +# key: val= +# -- +val ${1:name}${2:: ${3:Int}} = `%`$0 \ No newline at end of file diff --git a/snippets/kotlin-mode/var b/snippets/kotlin-mode/var new file mode 100644 index 0000000..6b9159d --- /dev/null +++ b/snippets/kotlin-mode/var @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: var +# key: var +# -- +var ${1:variable}: ${2:Int} diff --git a/snippets/kotlin-mode/var= b/snippets/kotlin-mode/var= new file mode 100644 index 0000000..2b69358 --- /dev/null +++ b/snippets/kotlin-mode/var= @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: var= +# key: var= +# -- +var ${1:variable}${2:: ${3:Int}} = `%`$0 diff --git a/snippets/kotlin-mode/while b/snippets/kotlin-mode/while new file mode 100644 index 0000000..88d0117 --- /dev/null +++ b/snippets/kotlin-mode/while @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Seong Yong-ju +# name: while +# key: while +# -- +while ($true) { + $0 +} diff --git a/snippets/markdown-mode/code b/snippets/markdown-mode/code new file mode 100644 index 0000000..d08dad8 --- /dev/null +++ b/snippets/markdown-mode/code @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Code block +# -- +\`\`\`${1:lang} +`%`$0 +\`\`\` \ No newline at end of file diff --git a/snippets/markdown-mode/h1 b/snippets/markdown-mode/h1 new file mode 100644 index 0000000..f5c5194 --- /dev/null +++ b/snippets/markdown-mode/h1 @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Header 1 (#) +# key: h1 +# uuid: h1 +# -- +# ${1:Header 1}`(unless markdown-asymmetric-header " #")` \ No newline at end of file diff --git a/snippets/markdown-mode/h2 b/snippets/markdown-mode/h2 new file mode 100644 index 0000000..f1edaf5 --- /dev/null +++ b/snippets/markdown-mode/h2 @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Header 2 (##) +# key: h2 +# uuid: h2 +# -- +## ${1:Header 2}`(unless markdown-asymmetric-header " ##")` \ No newline at end of file diff --git a/snippets/markdown-mode/h3 b/snippets/markdown-mode/h3 new file mode 100644 index 0000000..0b36721 --- /dev/null +++ b/snippets/markdown-mode/h3 @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Header 3 +# key: h3 +# uuid: h3 +# -- +### ${1:Header 3}`(unless markdown-asymmetric-header " ###")` \ No newline at end of file diff --git a/snippets/markdown-mode/h4 b/snippets/markdown-mode/h4 new file mode 100644 index 0000000..df69bfd --- /dev/null +++ b/snippets/markdown-mode/h4 @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Header 4 +# key: h4 +# uuid: h4 +# -- +#### ${1:Header 4}`(unless markdown-asymmetric-header " ####")` \ No newline at end of file diff --git a/snippets/markdown-mode/h5 b/snippets/markdown-mode/h5 new file mode 100644 index 0000000..8d5408d --- /dev/null +++ b/snippets/markdown-mode/h5 @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Header 5 +# key: h5 +# uuid: h5 +# -- +##### ${1:Header 5}`(unless markdown-asymmetric-header " #####")` \ No newline at end of file diff --git a/snippets/markdown-mode/h6 b/snippets/markdown-mode/h6 new file mode 100644 index 0000000..59ba638 --- /dev/null +++ b/snippets/markdown-mode/h6 @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Header 6 +# key: h6 +# uuid: h6 +# -- +###### ${1:Header 6}`(unless markdown-asymmetric-header " ######")` \ No newline at end of file diff --git a/snippets/markdown-mode/hr b/snippets/markdown-mode/hr new file mode 100644 index 0000000..a1a48f6 --- /dev/null +++ b/snippets/markdown-mode/hr @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: hr +# key: --- +# uuid: --- +# binding: direct-keybinding +# -- +------------------------------------------------------------------------------- \ No newline at end of file diff --git a/snippets/markdown-mode/img b/snippets/markdown-mode/img new file mode 100644 index 0000000..5121481 --- /dev/null +++ b/snippets/markdown-mode/img @@ -0,0 +1,4 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Image +# -- +![${1:Alt Text}](${2:`%`URL})$0 \ No newline at end of file diff --git a/snippets/markdown-mode/kbd b/snippets/markdown-mode/kbd new file mode 100644 index 0000000..4817324 --- /dev/null +++ b/snippets/markdown-mode/kbd @@ -0,0 +1,4 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: ... +# -- +$0 \ No newline at end of file diff --git a/snippets/markdown-mode/link b/snippets/markdown-mode/link new file mode 100644 index 0000000..2c12223 --- /dev/null +++ b/snippets/markdown-mode/link @@ -0,0 +1,4 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Link +# -- +[${1:`(or % "text")`}](${2:http://$3})$0 \ No newline at end of file diff --git a/snippets/markdown-mode/ol b/snippets/markdown-mode/ol new file mode 100644 index 0000000..cf8e31a --- /dev/null +++ b/snippets/markdown-mode/ol @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Ordered List +# -- +${1:1}. ${2:Text} +${1:$(number-to-string (1+ (string-to-number %)))}. $0 \ No newline at end of file diff --git a/snippets/markdown-mode/rimg b/snippets/markdown-mode/rimg new file mode 100644 index 0000000..e14964d --- /dev/null +++ b/snippets/markdown-mode/rimg @@ -0,0 +1,4 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Referenced Image +# -- +![${1:Alt Text}][$2]$0 \ No newline at end of file diff --git a/snippets/markdown-mode/rlb b/snippets/markdown-mode/rlb new file mode 100644 index 0000000..44b5f5e --- /dev/null +++ b/snippets/markdown-mode/rlb @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: Reference Label +# contributor: Peng Deng +# -- +[${1:Reference}]: ${2:URL} $3 +$0 diff --git a/snippets/markdown-mode/rlink b/snippets/markdown-mode/rlink new file mode 100644 index 0000000..a79758d --- /dev/null +++ b/snippets/markdown-mode/rlink @@ -0,0 +1,4 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Reference Link +# -- +[${1:`%`Link Text}][$2]$0 \ No newline at end of file diff --git a/snippets/markdown-mode/utf8 b/snippets/markdown-mode/utf8 new file mode 100644 index 0000000..f21e9a6 --- /dev/null +++ b/snippets/markdown-mode/utf8 @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: utf-8 encoding +# -- + +$0 \ No newline at end of file diff --git a/snippets/org-mode/begin_center b/snippets/org-mode/begin_center new file mode 100644 index 0000000..f370989 --- /dev/null +++ b/snippets/org-mode/begin_center @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: #+begin_center block +# key: ... +# key: -> +# uuid: -> +# -- +\$${1:obj_name}->${2:var} \ No newline at end of file diff --git a/snippets/php-mode/parent b/snippets/php-mode/parent new file mode 100644 index 0000000..bfbc4ed --- /dev/null +++ b/snippets/php-mode/parent @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: parent::... +# key: par +# uuid: par +# -- +parent::$0 \ No newline at end of file diff --git a/snippets/php-mode/php b/snippets/php-mode/php new file mode 100644 index 0000000..f5f8352 --- /dev/null +++ b/snippets/php-mode/php @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: +# key: php +# uuid: php +# -- + \ No newline at end of file diff --git a/snippets/php-mode/phpdoc b/snippets/php-mode/phpdoc new file mode 100644 index 0000000..bddb7eb --- /dev/null +++ b/snippets/php-mode/phpdoc @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: /** ... */ +# key: /** +# uuid: /** +# -- +/** + * ${0:`(if % (s-replace "\n" "\n * " %))`} + */ \ No newline at end of file diff --git a/snippets/php-mode/require b/snippets/php-mode/require new file mode 100644 index 0000000..85ae6d9 --- /dev/null +++ b/snippets/php-mode/require @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: require("..."); +# key: req +# uuid: req +# -- +require("${1:...}"); \ No newline at end of file diff --git a/snippets/php-mode/require_once b/snippets/php-mode/require_once new file mode 100644 index 0000000..913de65 --- /dev/null +++ b/snippets/php-mode/require_once @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: require_once("..."); +# key: reqo +# uuid: reqo +# -- +require_once("${1:...}"); \ No newline at end of file diff --git a/snippets/php-mode/self b/snippets/php-mode/self new file mode 100644 index 0000000..5ce60ab --- /dev/null +++ b/snippets/php-mode/self @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: self::... +# key: sel +# uuid: sel +# -- +self::$0 \ No newline at end of file diff --git a/snippets/php-mode/shebang b/snippets/php-mode/shebang new file mode 100644 index 0000000..a278904 --- /dev/null +++ b/snippets/php-mode/shebang @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: #!/usr/bin/env php +# key: #! +# uuid: #! +# -- +#!/usr/bin/env php + +# key: p= +# uuid: p= +# -- + \ No newline at end of file diff --git a/snippets/php-mode/switch b/snippets/php-mode/switch new file mode 100644 index 0000000..31d465c --- /dev/null +++ b/snippets/php-mode/switch @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: switch (...) {...} +# -- +switch (${on}) { + $0 +} \ No newline at end of file diff --git a/snippets/php-mode/this b/snippets/php-mode/this new file mode 100644 index 0000000..8e547c3 --- /dev/null +++ b/snippets/php-mode/this @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: $this->... +# key: thi +# uuid: thi +# -- +\$this->$0 \ No newline at end of file diff --git a/snippets/php-mode/urldecode b/snippets/php-mode/urldecode new file mode 100644 index 0000000..b83189d --- /dev/null +++ b/snippets/php-mode/urldecode @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: urldecode(...) +# key: urld +# uuid: urld +# -- +urldecode(${1:`%`})$0 \ No newline at end of file diff --git a/snippets/php-mode/urlencode b/snippets/php-mode/urlencode new file mode 100644 index 0000000..3878566 --- /dev/null +++ b/snippets/php-mode/urlencode @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: urlencode(...) +# key: urle +# uuid: urle +# -- +urlencode(${1:`%`})$0 \ No newline at end of file diff --git a/snippets/php-mode/var_dump b/snippets/php-mode/var_dump new file mode 100644 index 0000000..9cb675c --- /dev/null +++ b/snippets/php-mode/var_dump @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: var_dump(...) +# key: dump +# uuid: dump +# -- +var_dump(`%`$1); \ No newline at end of file diff --git a/snippets/php-mode/while b/snippets/php-mode/while new file mode 100644 index 0000000..7bdf9dc --- /dev/null +++ b/snippets/php-mode/while @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: while loop +# -- +while (${1:condition}) { + `%`$0 +} diff --git a/snippets/scala-mode/List b/snippets/scala-mode/List new file mode 100644 index 0000000..8ede259 --- /dev/null +++ b/snippets/scala-mode/List @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: List(...) +# -- +List(${1:args}) $0 \ No newline at end of file diff --git a/snippets/scala-mode/app b/snippets/scala-mode/app new file mode 100644 index 0000000..d301f20 --- /dev/null +++ b/snippets/scala-mode/app @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: object ... extends App { ... } +# -- +object ${1:name} extends App { + `%`$0 +} \ No newline at end of file diff --git a/snippets/scala-mode/case b/snippets/scala-mode/case new file mode 100644 index 0000000..487779a --- /dev/null +++ b/snippets/scala-mode/case @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: case ... => ... +# -- +case ${1:_} => $0 \ No newline at end of file diff --git a/snippets/scala-mode/cons b/snippets/scala-mode/cons new file mode 100644 index 0000000..d4b5f2d --- /dev/null +++ b/snippets/scala-mode/cons @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: element1 :: element2 +# -- +${1:element1} :: ${2:element2} $0 \ No newline at end of file diff --git a/snippets/scala-mode/def b/snippets/scala-mode/def new file mode 100644 index 0000000..7d3d694 --- /dev/null +++ b/snippets/scala-mode/def @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: def fn(args): R = { ... } +# -- +def ${1:name}(${2:args}): ${3:Unit} = { + `%`$0 +} \ No newline at end of file diff --git a/snippets/scala-mode/if b/snippets/scala-mode/if new file mode 100644 index 0000000..13745db --- /dev/null +++ b/snippets/scala-mode/if @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: if (...) { ... } +# -- +if (${1:condition}) { + `%`$0 +} \ No newline at end of file diff --git a/snippets/scala-mode/main b/snippets/scala-mode/main new file mode 100644 index 0000000..6e34c0c --- /dev/null +++ b/snippets/scala-mode/main @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: def main(args: Array[String]) = { ... } +# -- +def main(args: Array[String]) = { + `%`$0 +} \ No newline at end of file diff --git a/snippets/scala-mode/throw b/snippets/scala-mode/throw new file mode 100644 index 0000000..ad9a455 --- /dev/null +++ b/snippets/scala-mode/throw @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name : throw new Exception +# -- +throw new ${1:Exception}($2) $0 \ No newline at end of file diff --git a/snippets/scala-mode/try b/snippets/scala-mode/try new file mode 100644 index 0000000..3b742f1 --- /dev/null +++ b/snippets/scala-mode/try @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: try { ... } catch { case e => ... } +# -- +try { + `%`$0 +} catch { + case e: ${1:Throwable} => + ${2:// TODO: handle exception} +} \ No newline at end of file diff --git a/snippets/sh-mode/alias b/snippets/sh-mode/alias new file mode 100644 index 0000000..4dc30ef --- /dev/null +++ b/snippets/sh-mode/alias @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: alias +# key: alias +# uuid: alias +# -- +alias ${1:cmd}=$0 \ No newline at end of file diff --git a/snippets/sh-mode/args b/snippets/sh-mode/args new file mode 100644 index 0000000..196973f --- /dev/null +++ b/snippets/sh-mode/args @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: args +# key: args +# uuid: args +# -- +[ $# -lt ${1:2} ] \ No newline at end of file diff --git a/snippets/sh-mode/bang b/snippets/sh-mode/bang new file mode 100644 index 0000000..9c825e4 --- /dev/null +++ b/snippets/sh-mode/bang @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: bang +# key: #! +# uuid: #! +# -- +#!${1:/usr/bin/env `(symbol-name sh-shell)`} +$0 \ No newline at end of file diff --git a/snippets/sh-mode/case b/snippets/sh-mode/case new file mode 100644 index 0000000..276cdae --- /dev/null +++ b/snippets/sh-mode/case @@ -0,0 +1,8 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: case +# key: case +# uuid: case +# -- +case ${1:var} in + ${2:match}) $0 ;; +esac \ No newline at end of file diff --git a/snippets/sh-mode/elif b/snippets/sh-mode/elif new file mode 100644 index 0000000..70c9caf --- /dev/null +++ b/snippets/sh-mode/elif @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: elif +# key: elif +# uuid: elif +# -- +elif ${1:condition}; then + `%`$0 \ No newline at end of file diff --git a/snippets/sh-mode/else b/snippets/sh-mode/else new file mode 100644 index 0000000..e1763a3 --- /dev/null +++ b/snippets/sh-mode/else @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: else +# key: else +# uuid: else +# -- +else + `%`$0 \ No newline at end of file diff --git a/snippets/sh-mode/f b/snippets/sh-mode/f new file mode 100644 index 0000000..683037d --- /dev/null +++ b/snippets/sh-mode/f @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: short function +# key: f +# uuid: f +# -- +${1:name}() { + `%`$0 +} diff --git a/snippets/sh-mode/for b/snippets/sh-mode/for new file mode 100644 index 0000000..e7004ca --- /dev/null +++ b/snippets/sh-mode/for @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: for loop +# key: for +# uuid: for +# -- +for ${1:var} in ${2:stuff}; do + `%`$0 +done \ No newline at end of file diff --git a/snippets/sh-mode/for-one-line b/snippets/sh-mode/for-one-line new file mode 100644 index 0000000..41b282f --- /dev/null +++ b/snippets/sh-mode/for-one-line @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: for loop (one line) +# key: for; +# uuid: for; +# -- +for ${1:var} in ${2:stuff}; do `(doom-snippets-format "%n%s%n")`$0; done diff --git a/snippets/sh-mode/function b/snippets/sh-mode/function new file mode 100644 index 0000000..d5456ba --- /dev/null +++ b/snippets/sh-mode/function @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: function +# -- +function ${1:name} { + `%`$0 +} \ No newline at end of file diff --git a/snippets/sh-mode/function-one-line b/snippets/sh-mode/function-one-line new file mode 100644 index 0000000..4c736d3 --- /dev/null +++ b/snippets/sh-mode/function-one-line @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: one-line function +# key: f; +# uuid: f; +# -- +${1:name}() { `(doom-snippets-format "%n%s%n")`$0; } \ No newline at end of file diff --git a/snippets/sh-mode/getopts b/snippets/sh-mode/getopts new file mode 100644 index 0000000..e0f1fed --- /dev/null +++ b/snippets/sh-mode/getopts @@ -0,0 +1,13 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: getopts +# key: getopts +# uuid: getopts +# -- +while getopts "${1:s:h:}" o; do + case "$o" in + ${2:X}) `(doom-snippets-format "%n%s")`$0 + ;; + *) usage + ;; + esac +done \ No newline at end of file diff --git a/snippets/sh-mode/gt b/snippets/sh-mode/gt new file mode 100644 index 0000000..0a59165 --- /dev/null +++ b/snippets/sh-mode/gt @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: Greater than +# key: > +# uuid: > +# -- +"$1" -gt "$2" diff --git a/snippets/sh-mode/if b/snippets/sh-mode/if new file mode 100644 index 0000000..4956a9f --- /dev/null +++ b/snippets/sh-mode/if @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: if +# -- +if $1; then + `%`$0 +fi diff --git a/snippets/sh-mode/if-one-line b/snippets/sh-mode/if-one-line new file mode 100644 index 0000000..9c038b0 --- /dev/null +++ b/snippets/sh-mode/if-one-line @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: if ...; then ...; fi +# key: if; +# uuid: if; +# -- +${1:condition} && ${0:echo 1} diff --git a/snippets/sh-mode/ife b/snippets/sh-mode/ife new file mode 100644 index 0000000..2b22e96 --- /dev/null +++ b/snippets/sh-mode/ife @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: ife +# key: ife +# uuid: ife +# -- +if ${1:condition}; then + `%`${2:# code} +else + $0 +fi \ No newline at end of file diff --git a/snippets/sh-mode/local b/snippets/sh-mode/local new file mode 100644 index 0000000..cd789e7 --- /dev/null +++ b/snippets/sh-mode/local @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +# name: local var=value +# -- +local ${1:var}=${0:value} diff --git a/snippets/sh-mode/lt b/snippets/sh-mode/lt new file mode 100644 index 0000000..22c70eb --- /dev/null +++ b/snippets/sh-mode/lt @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: Less than +# key: < +# uuid: < +# -- +"$1" -lt "$2" diff --git a/snippets/sh-mode/var b/snippets/sh-mode/var new file mode 100644 index 0000000..4f803e6 --- /dev/null +++ b/snippets/sh-mode/var @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: VAR=value +# key: = +# uuid: = +# -- +${1:VAR}=${0:VALUE} \ No newline at end of file diff --git a/snippets/sql-mode/column b/snippets/sql-mode/column new file mode 100644 index 0000000..849b43d --- /dev/null +++ b/snippets/sql-mode/column @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# contributor: Alejandro Espinoza Esparza +# name: , ColumnName ColumnType NOT NULL... +# -- + , ${1:Name} ${2:Type} ${3:NOT NULL} diff --git a/snippets/sql-mode/constraint b/snippets/sql-mode/constraint new file mode 100644 index 0000000..312190c --- /dev/null +++ b/snippets/sql-mode/constraint @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# contributor: Alejandro Espinoza Esparza +# name: CONSTRAINT [..] PRIMARY KEY ... +# -- +CONSTRAINT [${1:PK_Name}] PRIMARY KEY ${2:CLUSTERED} ([${3:ColumnName}]) diff --git a/snippets/sql-mode/constraint.1 b/snippets/sql-mode/constraint.1 new file mode 100644 index 0000000..f54ea0a --- /dev/null +++ b/snippets/sql-mode/constraint.1 @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# contributor: Alejandro Espinoza Esparza +# name: CONSTRAINT [..] FOREIGN KEY ... +# -- +CONSTRAINT [${1:FK_Name}] FOREIGN KEY ${2:CLUSTERED} ([${3:ColumnName}]) diff --git a/snippets/sql-mode/create b/snippets/sql-mode/create new file mode 100644 index 0000000..2d0ed21 --- /dev/null +++ b/snippets/sql-mode/create @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# contributor: Alejandro Espinoza Esparza +# name: create table ... +# -- +CREATE TABLE [${1:dbo}].[${2:TableName}] +( + ${3:Id} ${4:INT IDENTITY(1,1)} ${5:NOT NULL} +$0 + CONSTRAINT [${6:PK_}] PRIMARY KEY ${7:CLUSTERED} ([$3]) +) +GO diff --git a/snippets/sql-mode/create.1 b/snippets/sql-mode/create.1 new file mode 100644 index 0000000..fb8b1ae --- /dev/null +++ b/snippets/sql-mode/create.1 @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +# contributor: Alejandro Espinoza Esparza +# name: create procedure ... +# -- +CREATE PROCEDURE [${1:dbo}].[${2:Name}] +( + $3 $4 = ${5:NULL} ${6:OUTPUT} +) +AS +BEGIN +$0 +END +GO diff --git a/snippets/sql-mode/references b/snippets/sql-mode/references new file mode 100644 index 0000000..ec3e58f --- /dev/null +++ b/snippets/sql-mode/references @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# contributor: Alejandro Espinoza Esparza +# name: REFERENCES ... +# -- +REFERENCES ${1:TableName}([${2:ColumnName}])