diff options
Diffstat (limited to 'emacs/.emacs.d')
78 files changed, 1098 insertions, 71 deletions
diff --git a/emacs/.emacs.d/init.org b/emacs/.emacs.d/init.org index 71ca9cc..10e1a98 100644 --- a/emacs/.emacs.d/init.org +++ b/emacs/.emacs.d/init.org @@ -74,12 +74,12 @@ Add MELPA to package archives, this lets me install more packages. Also my own o (add-to-list 'package-archives '("oni" . "https://ryuslash.srht.site/emacs-config/packages/"))) #+end_src -Make use-package default to ensuring everything. This way each =use-package= doesn't need to have its own ~:ensure t~ and when I use Guix to install these modules they don't try to download everything from everywhere else. +Make use-package default to ensuring everything on macos. This way each =use-package= doesn't need to have its own ~:ensure t~ and when I use Guix to install these modules they don't try to download everything from everywhere else. #+begin_src emacs-lisp (eval-and-compile (require 'use-package-ensure) - (setq use-package-always-ensure t)) + (setq use-package-always-ensure (eq system-type 'darwin))) #+end_src * exec-path-from-shell @@ -98,8 +98,10 @@ This is necessary to make sure that packages installed through bundle and such a Add the =use-package-ensure-system-package= extension for =use-package=. #+begin_src emacs-lisp - (use-package use-package-ensure-system-package) - (use-package system-packages) + (use-package use-package-ensure-system-package + :when (eq system-type 'darwin)) + (use-package system-packages + :when (eq system-type 'darwin)) #+end_src * Docker @@ -116,7 +118,357 @@ I currently develop in PHP. #+begin_src emacs-lisp (use-package php-mode - :ensure-system-package php) + :ensure-system-package php + :config + (require 'align) + (require 'grep) + (require 'hydra) + (require 'map) + (require 'php-mode) + (require 'project) + (require 'whitespace) + + (defconst oni-php-scripts-dir + (expand-file-name "scripts" user-emacs-directory) + "The directory where I store scripts.") + + (defun oni-php--set-require-final-newline () + "Set `require-final-newline' to t. + This is necessary because the PHP mode configuration sets this to nil + for some reason." + (setq require-final-newline t)) + + (defun oni-php--whitespace-mode () + "Enable whitespace mode with only tabs showing." + (setq-local whitespace-style '(face tabs)) + (whitespace-mode)) + + (defun oni-php--auto-fill-mode () + "Enable ‘auto-fill-mode’ only for comments." + (setq-local comment-auto-fill-only-comments t) + (auto-fill-mode)) + + (defun oni-php-set-rainbow-identifier-faces () + "Set the faces to override for ‘rainbow-identifiers-mode’." + (setq-local rainbow-identifiers-faces-to-override + '(font-lock-type-face php-property-name php-function-call-traditional + php-doc-variable-sigil php-method-call-traditional + php-variable-sigil php-variable-name))) + + (defun oni-php-add-use (class) + "Try to add a use statement for CLASS under point." + (interactive (list (thing-at-point 'symbol))) + (let* ((default-directory (project-root (project-current))) + (classes (read (shell-command-to-string (concat (expand-file-name "find-php-class" oni-php-scripts-dir) " " class)))) + (class (cond + ((null classes) + (user-error "Class ‘%s’ not found" class)) + ((> (length classes) 1) + (completing-read "Use: " classes nil t)) + (t (car classes))))) + (save-excursion + (goto-char (point-min)) + + (if (search-forward "use " nil t) + (forward-paragraph) + (search-forward "namespace ") + (forward-line) + (insert "\n")) + + (unless (re-search-backward (rx "use " (literal class) ";") nil t) + (let ((start (point))) + (insert "use " class ";\n") + (pulse-momentary-highlight-region start (point))))))) + + (defun oni-php--syntax-in-string-p (syntax) + "Does SYNTAX indicate point is inside a string?" + (nth 3 syntax)) + + (defun oni-php--syntax-in-comment-p (syntax) + "Does SYNTAX indicate point is inside a comment?" + (nth 4 syntax)) + + (defun oni-php--in-string-or-comment-p () + "Return whether or not point is within a string or comment." + (let ((syntax (syntax-ppss))) + (or (oni-php--syntax-in-string-p syntax) + (oni-php--syntax-in-comment-p syntax)))) + + (defun oni-php-insert-dot-dwim (N) + "Insert either a concatenation or access operator depending on context. + + Do the insert N times." + (interactive "p") + (if (or (oni-php--in-string-or-comment-p) + (save-excursion + (skip-syntax-backward " ") + (nth 3 (syntax-ppss (1- (point))))) + (save-excursion + (skip-syntax-forward " ") + (nth 3 (syntax-ppss (1+ (point)))))) + (self-insert-command N) + (let ((op (if (looking-back (rx (or "$" ")") (zero-or-more (any whitespace "\n" alnum "(" ")" "->"))) + (save-excursion (backward-up-list) (1+ (point)))) + "->" + "::"))) + (dotimes (_ N) (insert op))))) + + (defun oni-php-doc-comment () + "Insert a PHP documentation comment at point." + (interactive) + (let ((start (point))) + (insert "/**\n * ") + (let ((insert-marker (point-marker))) + (insert "\n */") + (indent-region start (point)) + (goto-char insert-marker)))) + + (defun oni-php-doc-use-comment () + "Insert a PHP documentation comment for a use statement." + (interactive) + (let ((start (point)) + (class (save-excursion + (save-match-data + (search-forward-regexp (rx "use " (group (minimal-match (zero-or-more alnum))) ";")) + (match-string 1))))) + (insert "/**\n * @use " class) + (let ((insert-marker (point-marker))) + (insert "\n */") + (indent-region start (point)) + (goto-char insert-marker)))) + + (defun oni-php-return-belongs-to-comment () + "Insert a PHP documentation comment for a BelongsTo return type." + (interactive) + (let ((start (point))) + (insert "/**\n * @return BelongsTo<") + (save-excursion + (insert ", $this>\n */") + (indent-region start (point))))) + + (defun oni-php-comment-dwim (func &rest args) + "See if a PHP documentation comment should be added and add it. + Otherwise call FUNC with ARGS. This is meant as advice around + ‘comment-dwim’ to make it smarter for PHP code." + (cond ((looking-at (rx (minimal-match (zero-or-more (any whitespace "\n"))) + "use ")) + (oni-php-doc-use-comment)) + ((looking-at (rx (minimal-match (zero-or-more (any whitespace "\n"))) + (one-or-more nonl) ": BelongsTo" eol)) + (oni-php-return-belongs-to-comment)) + ((and (derived-mode-p 'php-mode) + (not (region-active-p)) + (looking-back (rx (minimal-match (zero-or-more blank))) (line-beginning-position)) + (looking-at (rx (minimal-match (zero-or-more (any whitespace "\n"))) + (or (regexp php-beginning-of-defun-regexp) + (regexp php--re-classlike-pattern))))) + (oni-php-doc-comment)) + (t (apply func args)))) + + (defun oni-php-generate-namespace () + (string-join + (mapcar + (lambda (s) + (let ((case-fold-search nil)) + (if (string-match-p (rx upper-case) s) + s + (capitalize s)))) + (cdr (split-string + (directory-file-name + (file-name-directory + (file-relative-name + buffer-file-name + (project-root (project-current))))) + "/"))) + "\\")) + + (defun oni-php-set-dabbrev-settings () + "Set any settings for dabbrev that make sense for PHP code." + (setq-local dabbrev-abbrev-skip-leading-regexp (rx "$"))) + + (defun oni-php-ignore-error-at-point (error-type) + (interactive + (list (let* ((error-types + (seq-uniq + (mapcar (lambda (e) + (let ((str (flycheck-error-message e))) + (string-match (rx "🪪" (one-or-more whitespace) (group (one-or-more (any alnum ".")))) str) + (match-string 1 str))) + (seq-filter (lambda (e) (not (flycheck-error-checker e))) + (flycheck-overlay-errors-at (point)))) + 'string=))) + (if (> 1 (length error-types)) + (completing-read "Ignore type: " error-types) + (car error-types))))) + (save-excursion + (goto-char (line-beginning-position)) + (indent-for-tab-command) + (insert "/** @phpstan-ignore " error-type " */\n") + (indent-for-tab-command))) + + (defconst +oni-php-import-display+ "…" + "What to display instead of imports.") + + (defun oni-php-toggle-import-display () + (interactive) + (let* ((overlay (seq-find (lambda (o) (overlay-get o 'oni-php-hidden-imports)) + (overlays-at (point)))) + (visiblep (not (string= +oni-php-import-display+ + (overlay-get overlay 'display))))) + (overlay-put overlay 'display (if visiblep +oni-php-import-display+ nil)))) + + (defvar oni-php-hidden-imports-keymap + (let ((keymap (make-sparse-keymap))) + (define-key keymap (kbd "TAB") 'oni-php-toggle-import-display) + keymap)) + + (defun oni-php-hide-imports () + "Hide the imports at the start of the file." + (save-excursion + (let (start end) + (goto-char (point-min)) + (when (re-search-forward (rx bol "use ") nil t) + (setq start (point)) + (while (re-search-forward (rx bol "use ") nil t)) + (setq end (line-end-position)) + (dolist (o (overlays-in start end)) + (when (overlay-get o 'oni-php-hidden-imports) + (delete-overlay o))) + (let ((overlay (make-overlay start end nil t t))) + (overlay-put overlay 'oni-php-hidden-imports t) + (overlay-put overlay 'display +oni-php-import-display+) + (overlay-put overlay 'keymap oni-php-hidden-imports-keymap)))))) + + (defhydra php-mode-hydra (:color blue) + ("a" align-current "Align current selection")) + + (advice-add 'comment-dwim :around #'oni-php-comment-dwim) + + (add-hook 'php-mode-hook #'oni-php--set-require-final-newline) + (add-hook 'php-mode-hook #'oni-php--whitespace-mode) + (add-hook 'php-mode-hook 'corfu-mode) + (add-hook 'php-mode-hook 'display-fill-column-indicator-mode) + (add-hook 'php-mode-hook 'electric-indent-local-mode) + (add-hook 'php-mode-hook 'fic-mode) + (add-hook 'php-mode-hook 'flycheck-mode) + (add-hook 'php-mode-hook 'oni-php--auto-fill-mode) + (add-hook 'php-mode-hook 'oni-php-hide-imports) + (add-hook 'php-mode-hook 'oni-php-set-dabbrev-settings) + (add-hook 'php-mode-hook 'oni-php-set-rainbow-identifier-faces) + (add-hook 'php-mode-hook 'rainbow-delimiters-mode) + (add-hook 'php-mode-hook 'rainbow-identifiers-mode) + (add-hook 'php-mode-hook 'smartparens-mode) + (add-hook 'php-mode-hook 'subword-mode) + (add-hook 'php-mode-hook 'yas-minor-mode) + + (define-key php-mode-map (kbd "C-c m") #'php-mode-hydra/body) + (define-key php-mode-map (kbd ".") #'oni-php-insert-dot-dwim) + + ;; In PHP code it's nice to have any ~=>~ aligned. + + ;; <?php + ;; array( + ;; 'foo' => 'bar', + ;; 'frob' => 'baz' + ;; ); + ;; ?> + + (add-to-list 'align-rules-list + `(php-array-arrow + (regexp . ,(rx any (group (zero-or-more whitespace)) "=>" any)) + (group . (1)) + (modes . '(php-mode web-mode php-mode)) + (repeat . t))) + + ;; The WordPress coding standards specify that multiple assignments + ;; should have their assignment operators aligned. + + ;; <?php + ;; $variable = "value"; + ;; $other_variable = "other value"; + ;; $one_more_variable = "one more variable"; + + (add-to-list 'align-rules-list + `(php-assignment-equals + (regexp . ,(rx any (group (zero-or-more whitespace)) "=" + (zero-or-more whitespace) any)) + (group . (1)) + (modes . '(php-mode web-mode php-ts-mode)) + (repeat . t))) + + ;;;###autoload + (add-to-list 'auto-mode-alist '("\\.inc\\'" . php-mode)) + + ;;;###autoload + (add-to-list 'auto-mode-alist '("\\.module\\'" . php-mode)) + + ;;;###autoload + (with-eval-after-load 'grep + (add-to-list 'grep-files-aliases '("php" . "*.php *.inc *.module"))) + + (with-eval-after-load 'autoinsert + (setf (map-elt auto-insert-alist (rx ".php" eos)) + '(nil + "<?php\n" + "\n" + "declare(strict_types=1);\n" + "\n" + "namespace " (oni-php-generate-namespace) ";\n" + "\n" + "class " (file-name-sans-extension (file-name-nondirectory (buffer-file-name))) "\n" + "{\n" + > _ "\n" + "}\n") + (map-elt auto-insert-alist (rx "Test.php" eos)) + '(nil + "<?php\n" + "\n" + "declare(strict_types=1);\n" + "\n" + "namespace " (oni-php-generate-namespace) ";\n" + "\n" + "use Illuminate\\Foundation\\Testing\\RefreshDatabase;\n" + "use Illuminate\\Foundation\\Testing\\WithFaker;\n" + "use Tests\\TestCase;\n" + "\n" + "class " (file-name-sans-extension (file-name-nondirectory (buffer-file-name))) " extends TestCase\n" + "{\n" + > "use RefreshDatabase;\n" + > "use WithFaker;\n" + "\n" + > "/** @test */\n" + > "public function " (replace-regexp-in-string (rx whitespace) "_" (downcase (skeleton-read "Test function name: "))) "(): void\n" + "{" > "\n" + > _ "\n" + "}" > "\n" + "}"))) + + (defun oni-php-in-expression-context-p () + (not (oni-php-in-static-call-context-p))) + + (defun oni-php-in-test-file () + (string-suffix-p "Test.php" buffer-file-name)) + + (defun oni-php-in-static-call-context-p () + (looking-back "::\\w+" (- (point) (line-beginning-position)))) + + (defun oni-php-grep-symbol (symbol) + "Use ‘rgrep’ to find SYMBOL. + If there is an active region when this command is called interactively + SYMBOL will be the text in the region. Otherwise it's the symbol at + point." + (interactive (list + (if (region-active-p) + (buffer-substring-no-properties (region-beginning) (region-end)) + (thing-at-point 'symbol)))) + (rgrep (rx (literal symbol)) + (map-elt grep-files-aliases "php") + (project-root (project-current)))) + + (define-key php-mode-map (kbd "C-c .") nil t) + (define-key php-mode-map (kbd "C-c . g") '("Search for symbol at point" . oni-php-grep-symbol)) + (define-key php-mode-map (kbd "C-c . a") '("Import symbol at point" . oni-php-add-use)) + (define-key php-mode-map (kbd "C-c . i") '("Ignore error at point" . oni-php-ignore-error-at-point))) #+end_src * Magit @@ -164,39 +516,40 @@ Also install =markdown-indent-mode= which is very much like =org-indent-mode= (b * Org Mode #+begin_src emacs-lisp - (use-package org - :bind (("C-c o c" . org-capture) - ("C-c o a" . org-agenda) - ("C-c o l" . org-store-link) - ("C-c o b" . org-switchb)) - :config - (add-hook 'org-mode-hook 'visual-line-mode) - (add-hook 'org-mode-hook 'org-indent-mode)) + (use-package org + :init (define-key global-map (kbd "C-c o") (make-sparse-keymap)) + :bind (("C-c o c" . org-capture) + ("C-c o a" . org-agenda) + ("C-c o l" . org-store-link) + ("C-c o b" . org-switchb)) + :config + (add-hook 'org-mode-hook 'visual-line-mode) + (add-hook 'org-mode-hook 'org-indent-mode)) - (use-package org-capture - :config - (map-put org-capture-templates "t" - '("A simple TODO item" entry (file "") "* TODO %? + (use-package org-capture + :config + (map-put org-capture-templates "t" + '("A simple TODO item" entry (file "") "* TODO %? :PROPERTIES: :CREATED: %U :END:")) - (map-put org-capture-templates "d" - '("A simple DONE item" entry (file "") "* DONE %? + (map-put org-capture-templates "d" + '("A simple DONE item" entry (file "") "* DONE %? :PROPERTIES: :CREATED: %U :END:")) - (map-put org-capture-templates "n" - '("A simple note" entry (file "") "* Note taken on %U + (map-put org-capture-templates "n" + '("A simple note" entry (file "") "* Note taken on %U :PROPERTIES: :CREATED: %U :END: %?")) - (map-put org-capture-templates "N" - '("A simple note (on current task)" item (clock) "- Note taken on %U: \\\\ + (map-put org-capture-templates "N" + '("A simple note (on current task)" item (clock) "- Note taken on %U: \\\\ %?")) - (map-put org-capture-templates "r" - '("An Operational Request came in" entry (file "") "* TODO Operation Request %^U + (map-put org-capture-templates "r" + '("An Operational Request came in" entry (file "") "* TODO Operation Request %^U :PROPERTIES: :CREATED: %U :END: @@ -831,7 +1184,7 @@ Highlight diffs in the fringe. #+begin_src emacs-lisp (use-package rainbow-delimiters - :hook (php-mode emacs-lisp-mode)) + :hook (prog-mode)) #+end_src * Mixed Pitch Mode @@ -928,6 +1281,39 @@ Now the pull app. 'pull-app)) #+end_src +social api: + +#+begin_src emacs-lisp + (use-package files + :ensure nil + :config + (dir-locals-set-class-variables + 'social-api + '((nil . ((grep-find-ignored-directories . (".git" "vendor" "cdk.out" "storage" "punt/tmp" "chanced/tmp")) + (eglot-workspace-configuration + . (:language_server_phpstan (:enabled t + :mem_limit "2G" + :bin "chanced/vendor/bin/phpstan"))))) + (php-mode . ((fill-column . 80) + (eglot-server-programs . (((php-mode phps-mode php-ts-mode) + "localhost" 4564))) + (php-project-root . git) + (phpstan-executable . (root . "../chanced-scripts/phpstan")) + (phpstan-config-file . "/app/chanced/phpstan.neon") + (phpstan-memory-limit . "4G") + (phpstan-level . 9) + (eval . (setq-local flycheck-phpstan-executable (expand-file-name "../chanced-scripts/phpstan" (project-root (project-current))))) + (php-ts-mode-php-executable . "docker exec -it chanced-backend php artisan tinker"))) + (typescript-mode . ((typescript-indent-level . 2))) + ("punt" + . ((php-mode . ((phpstan-config-file . "/app/punt/phpstan.neon"))))) + ("filament" + . ((php-mode . ((phpstan-config-file . "/app/filament/phpstan.neon"))))))) + (dir-locals-set-directory-class + (expand-file-name "~/code/diamond-interactive/social-api") + 'social-api)) +#+end_src + * Eglot Set up a server program for Eglot for org-mode. @@ -959,6 +1345,7 @@ This includes cape for extra completion-at-point functions, and corfu-prescient #+begin_src emacs-lisp (use-package corfu + :hook (prog-mode) :config (setq corfu-auto t)) @@ -996,3 +1383,86 @@ Phel is a Clojure-inspired lisp that compiles to PHP. (use-package phel-mode :mode (rx ".phel" eos)) #+end_src + +* Paredit + +The only way to edit lispy languages. This turns Emacs into a structural editor for s-expression-based languages. + +#+begin_src emacs-lisp + (use-package paredit + :hook (lisp-data-mode fennel-mode clojure-mode)) +#+end_src + +* Yasnippet + +Snippets! + +#+begin_src emacs-lisp + (use-package yasnippet + :diminish yasnippet-minor-mode + :init + (yas-global-mode) + :bind (:map yas-minor-mode-map + ("<tab>") + ("C-\\" . yas-expand) + ("TAB")) + :config + (define-key yas-minor-mode-map (kbd "SPC") yas-maybe-expand) + (setq-default yas-buffer-local-condition + yas-not-string-or-comment-condition)) +#+end_src + +* Help + +I've always been annoyed that calling any of the help functions never select the help buffer. Thankfully due to [[https://irreal.org/blog/?p=13752][Irreal: A Short Report On Help Focus]] I know how to fix that now. + +That got me looking at [[elisp:(customize-group "help")]] and discover [[help:help-enable-variable-value-editing]]. + +#+begin_src emacs-lisp + (use-package help + :custom + (help-window-select t) + (help-enable-variable-value-editing t)) +#+end_src + +* Denote + +I need to try taking notes with Denote. + +#+begin_src emacs-lisp + (use-package denote + :hook (dired-mode . denote-dired-mode) + :bind + (("C-c n n" . denote) + ("C-c n r" . denote-rename-file) + ("C-c n l" . denote-link) + ("C-c n b" . denote-backlinks) + ("C-c n d" . denote-dired) + ("C-c n g" . denote-grep)) + :config + (setq denote-directory (expand-file-name "~/Documents/denote-notes/")) + (denote-rename-buffer-mode 1)) +#+end_src + +* Dabbrev + +Dynamic abbreviations are one of the completion mechanisms that Emacs supports. I mainly use this with corfu and cape-dabbrev, but when I'm looking for completions I want to see any variant with different letter casings, and also maintain the letter casing of which option I pick. + +#+begin_src emacs-lisp + (use-package dabbrev + :ensure nil + :config + (setq dabbrev-case-replace nil) + (setq dabbrev-case-distinction nil) + (setq dabbrev-case-fold-search t)) +#+end_src + +* Typescript + +Emacs comes with built-in typescript mode. + +#+begin_src emacs-lisp + (use-package typescript-ts-mode + :ensure nil + :mode (rx ".ts" eos)) +#+end_src diff --git a/emacs/.emacs.d/scripts/find-php-class b/emacs/.emacs.d/scripts/find-php-class index 4268dcf..3564f00 100755 --- a/emacs/.emacs.d/scripts/find-php-class +++ b/emacs/.emacs.d/scripts/find-php-class @@ -1,48 +1,32 @@ -#!/usr/bin/env bash -# ;; #!/usr/bin/env -S scsh -e main -o srfi-1 -s -# ;; !# +#!/usr/bin/env -S scsh -e main -o srfi-1 -s +;; -*- mode: scheme; -*- +!# -# ;; (define (main args) -# ;; (let* ((class-name (cadr args)) -# ;; (file-names -# ;; (run/strings (find "." -# ;; -path "./cdk.out" -prune -o -# ;; -type f -# ;; -name ,(string-append class-name ".php") -# ;; -exec grep "^namespace" "{}" ";") -# ;; (> 2 "/dev/null")))) -# ;; (format #t "~s" -# ;; (delete-duplicates -# ;; (map (lambda (n) -# ;; (string-append -# ;; (match:substring -# ;; (regexp-search (rx "namespace " (submatch (+ any)) ";") n) -# ;; 1) -# ;; "\\" -# ;; class-name)) -# ;; file-names))))) +(define (find-class class-name) + (run/strings (find "." "(" + -path "./cdk.out" + -o -path "./*/tmp" + -o -path "./*/node_modules" + -o -path "./*/.phpunit.cache" + -o -path "./*/storage" + -o -path "./.git" + -o -path "./data" + ")" -prune + -o -type f -name ,(string-append class-name ".php") + -exec grep "^namespace" "{}" ";") + (> 2 "/dev/null"))) -main() { - local classname=$1 - find . \( \ - -path "./cdk.out" \ - -o -path "./punt/tmp" \ - -o -path "./punt/vendor" \ - -o -path "./filament/storage/larastan/cache" \ - -o -path "./filament/vendor" \ - -o -path "./chanced/tmp" \ - -o -path "./chanced/node_modules" \ - -o -path "./chanced/.phpunit.cache" \ - -o -path "./.git" \ - -o -path "./chanced/storage" \ - \) -prune \ - -o -type f -name "${classname}.php" \ - -exec grep '^namespace' '{}' \; \ - | awk "{ print substr(\$0, 11, length(\$0) - 11) \"\\\\${classname}\" }" - # for f in "$(git ls-files | grep "${classname}.php")"; do - # grep '^namespace' "$f" | awk '{ print substr($0, 11, length($0) - 11) }' - # done -} - -main "$@" +(define (main args) + (let* ((class-name (cadr args)) + (file-names (find-class class-name))) + (format #t "~s" + (delete-duplicates + (map (lambda (n) + (string-append + (match:substring + (regexp-search (rx "namespace " (submatch (+ any)) ";") n) + 1) + "\\" + class-name)) + file-names))))) diff --git a/emacs/.emacs.d/snippets/bats-mode/test b/emacs/.emacs.d/snippets/bats-mode/test new file mode 100644 index 0000000..8a2f028 --- /dev/null +++ b/emacs/.emacs.d/snippets/bats-mode/test @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: test +# key: test +# -- +@test "$1" { + $0 +}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/conf-mode/section b/emacs/.emacs.d/snippets/conf-mode/section new file mode 100644 index 0000000..496e4fd --- /dev/null +++ b/emacs/.emacs.d/snippets/conf-mode/section @@ -0,0 +1,8 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Xorg Section +# key: Section +# -- +Section "$1" + Identifier "$2" + $0 +EndSection diff --git a/emacs/.emacs.d/snippets/csharp-mode/testm b/emacs/.emacs.d/snippets/csharp-mode/testm new file mode 100644 index 0000000..4bd243d --- /dev/null +++ b/emacs/.emacs.d/snippets/csharp-mode/testm @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: Test Method +# key: testm +# -- +[TestMethod] +public void ${1:TestMethod}() +{ + $0 +}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/css-mode/box-shadow b/emacs/.emacs.d/snippets/css-mode/box-shadow new file mode 100644 index 0000000..82fe9d5 --- /dev/null +++ b/emacs/.emacs.d/snippets/css-mode/box-shadow @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: box-shadow +# key: boxshadow +# -- +box-shadow: ${1:offset-x} ${2:offset-y}${3: [blur-radius]}${4: [spread-radius]}${5: [color]};
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/emacs-lisp-mode/cookie b/emacs/.emacs.d/snippets/emacs-lisp-mode/cookie new file mode 100644 index 0000000..6fafd3c --- /dev/null +++ b/emacs/.emacs.d/snippets/emacs-lisp-mode/cookie @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: with-eval-after-load-cookie +# key: cookie +# -- +;;;###autoload(with-eval-after-load '${1:`(string-remove-prefix "oni-" (string-remove-suffix ".el" (buffer-name)))`-mode} (require '`(string-remove-suffix ".el" (buffer-name))`))
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/emacs-lisp-mode/depends-on b/emacs/.emacs.d/snippets/emacs-lisp-mode/depends-on new file mode 100644 index 0000000..4f99d92 --- /dev/null +++ b/emacs/.emacs.d/snippets/emacs-lisp-mode/depends-on @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: depends-on +# key: do +# -- +(depends-on "$1")$0
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/emacs-lisp-mode/depends-on-git b/emacs/.emacs.d/snippets/emacs-lisp-mode/depends-on-git new file mode 100644 index 0000000..1da2f31 --- /dev/null +++ b/emacs/.emacs.d/snippets/emacs-lisp-mode/depends-on-git @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: depends-on-git +# key: do +# -- +(depends-on "$1" :git "../" :files ("$1.el"))$0
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/emacs-lisp-mode/face b/emacs/.emacs.d/snippets/emacs-lisp-mode/face new file mode 100644 index 0000000..9fdbbb2 --- /dev/null +++ b/emacs/.emacs.d/snippets/emacs-lisp-mode/face @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: face +# key: face +# -- + `($1 ((t (${2::foreground} $0))))
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/haml-mode/faq b/emacs/.emacs.d/snippets/haml-mode/faq new file mode 100644 index 0000000..4d1a9e2 --- /dev/null +++ b/emacs/.emacs.d/snippets/haml-mode/faq @@ -0,0 +1,12 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: FAQ Question & Answer +# key: faq +# expand-env: ((yas-indent-line 'fixed)) +# -- +%dt + = link_to '#' do + .expand_icon + $1 +%dd + %p + $0
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/html-mode/block b/emacs/.emacs.d/snippets/html-mode/block new file mode 100644 index 0000000..6510011 --- /dev/null +++ b/emacs/.emacs.d/snippets/html-mode/block @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: block +# key: block +# -- +{% block $1 %} + $0 +{% endblock %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/html-mode/for b/emacs/.emacs.d/snippets/html-mode/for new file mode 100644 index 0000000..01d9c44 --- /dev/null +++ b/emacs/.emacs.d/snippets/html-mode/for @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# condition: pony-tpl-minor-mode +# -- +{% for $1 in $2 %} + $0 +{% endfor %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/html-mode/generic-block b/emacs/.emacs.d/snippets/html-mode/generic-block new file mode 100644 index 0000000..82d40c7 --- /dev/null +++ b/emacs/.emacs.d/snippets/html-mode/generic-block @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: Template Block +# key: % +# condition: pony-tpl-minor-mode +# -- +{% $1 %} + $0 +{% end$1 %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/html-mode/script b/emacs/.emacs.d/snippets/html-mode/script new file mode 100644 index 0000000..e50dbf5 --- /dev/null +++ b/emacs/.emacs.d/snippets/html-mode/script @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: script +# key: script +# -- +<script src="$1" type="${2:text/javascript}" language="${3:javascript}"></script>
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/html-mode/trans-with-cap b/emacs/.emacs.d/snippets/html-mode/trans-with-cap new file mode 100644 index 0000000..4f20a33 --- /dev/null +++ b/emacs/.emacs.d/snippets/html-mode/trans-with-cap @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: trans with cap +# key: trans +# condition: pony-tpl-minor-mode +# -- +{% trans "$1"|capfirst %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/nxml-mode/Import b/emacs/.emacs.d/snippets/nxml-mode/Import new file mode 100644 index 0000000..bddbf3f --- /dev/null +++ b/emacs/.emacs.d/snippets/nxml-mode/Import @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: Import +# key: imp +# condition: (string-suffix-p ".proj" (buffer-file-name)) +# -- +<Import Project="$1"/> diff --git a/emacs/.emacs.d/snippets/nxml-mode/pencil-property b/emacs/.emacs.d/snippets/nxml-mode/pencil-property new file mode 100644 index 0000000..7fafcb8 --- /dev/null +++ b/emacs/.emacs.d/snippets/nxml-mode/pencil-property @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: PencilProperty +# key: p +# -- +<Property name="$1" + displayName="$2" + type="$3">$4</Property>
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/nxml-mode/pencil-property-value b/emacs/.emacs.d/snippets/nxml-mode/pencil-property-value new file mode 100644 index 0000000..5da3d10 --- /dev/null +++ b/emacs/.emacs.d/snippets/nxml-mode/pencil-property-value @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: PropertyValue +# key: pv +# -- +<PropertyValue name="$1">$2</PropertyValue>
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/nxml-mode/pencil-shortcut b/emacs/.emacs.d/snippets/nxml-mode/pencil-shortcut new file mode 100644 index 0000000..e760d27 --- /dev/null +++ b/emacs/.emacs.d/snippets/nxml-mode/pencil-shortcut @@ -0,0 +1,9 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Shortcut +# key: s +# -- +<Shortcut displayName="$1" + icon="$2" + to="$3"> + $0 +</Shortcut>
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/org-mode/codeblock b/emacs/.emacs.d/snippets/org-mode/codeblock new file mode 100644 index 0000000..a200b08 --- /dev/null +++ b/emacs/.emacs.d/snippets/org-mode/codeblock @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: codeblock +# key: code +# -- +#+begin_src $1 + $0 +#+end_src
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/org-mode/heading b/emacs/.emacs.d/snippets/org-mode/heading new file mode 100644 index 0000000..a472f06 --- /dev/null +++ b/emacs/.emacs.d/snippets/org-mode/heading @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: Heading +# key: <t +# -- +${1:*} ${2:TODO$(upcase yas-text)} $3 +:PROPERTIES: +:CREATED: [`(format-time-string "%Y-%m-%d %a %H:%M")`] +:END: +$0
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/org-mode/project b/emacs/.emacs.d/snippets/org-mode/project new file mode 100644 index 0000000..269d655 --- /dev/null +++ b/emacs/.emacs.d/snippets/org-mode/project @@ -0,0 +1,51 @@ +# -*- mode: snippet -*- +# name: project +# key: project +# -- +#+TITLE: ${1:project_name} +#+LINK: src ${2:http://code.ryuslash.org/cgit.cgi/$3$1/} +#+LINK: tar_gz $2${4:snapshot/$1-master}.tar.gz +#+LINK: zip $2$4.zip +#+STARTUP: showall + +#+begin_html + <script src="/keyjs.js" type="text/javascript"></script> + <script type="text/javascript"> + keyjs_initialize({ "u": [ "keyjs_goto", "../index.html" ], + "h": [ "keyjs_goto", "http://ryuslash.org" ] }); + </script> +#+end_html + +#+INCLUDE: "dlmenu.inc" + +* About + + ${5:A short description about $1} + + | $0Status | $6 | + | Language | $7 | + | License | ${8:GPLv3} | + +* Why? + + ${9:Why did you even think of writing $1?} + +* Features + + ${10:$1 does...} + +* Dependencies + + ${11:$1 needs to have...} + +* Download + + ${12:To download $1...} + +* Install + + ${13:To install $1...} + +* Usage + + ${14:Using $1...}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/org-mode/snippet b/emacs/.emacs.d/snippets/org-mode/snippet new file mode 100644 index 0000000..67f15d5 --- /dev/null +++ b/emacs/.emacs.d/snippets/org-mode/snippet @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: snippet +# key: snippet +# -- +#+TITLE: ${1:snippet-name} +#+OPTIONS: toc:nil + +* $1 + + ${2:A short description abount $1} + + #+BEGIN_SRC $3 :tangle yes +$0 + #+END_SRC
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/org-mode/task b/emacs/.emacs.d/snippets/org-mode/task new file mode 100644 index 0000000..af229d1 --- /dev/null +++ b/emacs/.emacs.d/snippets/org-mode/task @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: task +# key: todo +# -- +* TODO ${1:What is the outcome?} +:PROPERTIES: +:CREATED: [`(format-time-string "%Y-%m-%d %a %H:%M")`] +:END: + +$0 diff --git a/emacs/.emacs.d/snippets/php-mode/arrow-function b/emacs/.emacs.d/snippets/php-mode/arrow-function new file mode 100644 index 0000000..3b44e01 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/arrow-function @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arrow-function +# key: f +# condition: (oni-php-in-expression-context-p) +# -- +fn($1): $2 => $3
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/casts b/emacs/.emacs.d/snippets/php-mode/casts new file mode 100644 index 0000000..2850d72 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/casts @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: casts +# key: casts +# -- +protected $casts = [ + '$1' => $0, +];
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/class b/emacs/.emacs.d/snippets/php-mode/class new file mode 100644 index 0000000..26a58a1 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/class @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: class +# key: cls +# -- +class ${1:`(file-name-nondirectory (file-name-sans-extension buffer-file-name))`} +{ + $0 +}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/constructor b/emacs/.emacs.d/snippets/php-mode/constructor new file mode 100644 index 0000000..f919e6c --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/constructor @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: constructor +# key: constructor +# -- +public function __construct($1) +{ + $0 +}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/factory b/emacs/.emacs.d/snippets/php-mode/factory new file mode 100644 index 0000000..534f227 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/factory @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: factory +# key: f +# condition: (and (oni-php-in-test-file) (oni-php-in-static-call-context-p)) +# -- +factory()->create([$0]);
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/for b/emacs/.emacs.d/snippets/php-mode/for new file mode 100644 index 0000000..1adae91 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# -- +for (${1:$i = 0}; ${2:$i < $3}; ${4:$i++}) { + $0 +}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/function-expression b/emacs/.emacs.d/snippets/php-mode/function-expression new file mode 100644 index 0000000..fa59b03 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/function-expression @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: function expression +# key: f +# condition: (oni-php-in-expression-context-p) +# -- +function ($1) ${2:use ($3)} { + $0 +}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/function-statement b/emacs/.emacs.d/snippets/php-mode/function-statement new file mode 100644 index 0000000..9c44aef --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/function-statement @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: function statement +# key: f +# condition: (oni-php-in-expression-context-p) +# -- +/** + * $5 + */ +${1:private} function $2($3): ${4:void} { + $0 +}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/if-statement b/emacs/.emacs.d/snippets/php-mode/if-statement new file mode 100644 index 0000000..6033e3a --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/if-statement @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: if statement +# key: ? +# -- +if ($1) { + $2 +}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/logger-debug b/emacs/.emacs.d/snippets/php-mode/logger-debug new file mode 100644 index 0000000..d0e0b7e --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/logger-debug @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: logger.debug +# key: ld +# -- +logger()->debug('$1'${2:, [ $3 ]});
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/logger-error b/emacs/.emacs.d/snippets/php-mode/logger-error new file mode 100644 index 0000000..19344aa --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/logger-error @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: logger-error +# key: le +# -- +logger()->error('$1'${2:, [ $3 ]});
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/logger-info b/emacs/.emacs.d/snippets/php-mode/logger-info new file mode 100644 index 0000000..9491d24 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/logger-info @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: logger.info +# key: li +# -- +logger()->info('$1'${2:, [ $3 ]});
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/logger-warning b/emacs/.emacs.d/snippets/php-mode/logger-warning new file mode 100644 index 0000000..3945490 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/logger-warning @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: logger.warning +# key: lw +# -- +logger()->warning('$1'${2, [ $3 ]});
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/mark-test-skipped b/emacs/.emacs.d/snippets/php-mode/mark-test-skipped new file mode 100644 index 0000000..ce4761d --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/mark-test-skipped @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: mark test skipped +# key: @s +# condition: (string-suffix-p "Test.php" buffer-file-name) +# -- +$this->markTestSkipped("${1:Don't skip your tests.}");
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/namespace b/emacs/.emacs.d/snippets/php-mode/namespace new file mode 100644 index 0000000..7a5b5e1 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/namespace @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: namespace +# key: ns +# -- +namespace ${1:`(oni-php-generate-namespace)`};
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/php b/emacs/.emacs.d/snippets/php-mode/php new file mode 100644 index 0000000..12f7492 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/php @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: <?php +# key: php +# -- +<?php diff --git a/emacs/.emacs.d/snippets/php-mode/phpstan-ignore b/emacs/.emacs.d/snippets/php-mode/phpstan-ignore new file mode 100644 index 0000000..91439ba --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/phpstan-ignore @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: phpstan-ignore +# key: @i +# -- +/** @phpstan-ignore $1 */
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/strict-types b/emacs/.emacs.d/snippets/php-mode/strict-types new file mode 100644 index 0000000..bdcf3f9 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/strict-types @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: strict-types +# key: strict-types +# -- +declare(strict_types=1);
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/test-class b/emacs/.emacs.d/snippets/php-mode/test-class new file mode 100644 index 0000000..de3bd3f --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/test-class @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: test-class +# key: test +# -- + +use Illuminate\Foundation\Testing\RefreshDatabase; +use Tests\TestCase; + +class ${1:`(file-name-sans-extension (file-name-nondirectory (buffer-file-name)))`} extends TestCase +{ + use RefreshDatabase; + + $0 +}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/test-comment b/emacs/.emacs.d/snippets/php-mode/test-comment new file mode 100644 index 0000000..b1c9dfb --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/test-comment @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: test-comment +# key: @t +# -- +#[Test] +public function $1(): void +{ + $0 +} diff --git a/emacs/.emacs.d/snippets/php-mode/test-name b/emacs/.emacs.d/snippets/php-mode/test-name new file mode 100644 index 0000000..2b9d72b --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/test-name @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: test-name +# key: test +# -- +public function test_$1(): void +{ + $0 +} diff --git a/emacs/.emacs.d/snippets/php-mode/todo-comment b/emacs/.emacs.d/snippets/php-mode/todo-comment new file mode 100644 index 0000000..a079ce8 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/todo-comment @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: todo-comment +# key: /t +# -- +`comment-start``(if (looking-back " " 2) " " "")`TODO: $0`comment-end`
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/var b/emacs/.emacs.d/snippets/php-mode/var new file mode 100644 index 0000000..ce2b8fc --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/var @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: var +# key: @v +# -- +/** @var $1 `(save-excursion (and (search-forward "$" nil t) (symbol-at-point)))` */`(unless (looking-at (rx "\n")) "\n")`
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-mode/wpheader.php b/emacs/.emacs.d/snippets/php-mode/wpheader.php new file mode 100644 index 0000000..2c70f93 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-mode/wpheader.php @@ -0,0 +1,13 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: WP Plugin Header +# key: header +# -- +/* + * Plugin Name: $1 + * Plugin URI: $2 + * Description: $3 + * Version: ${4:1.0} + * Author: ${5:Tom Willemse} + * Author URI: ${6:https://ryuslash.org} + * License: ${7:GPLv2} + */
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/php-ts-mode/.yas-parents b/emacs/.emacs.d/snippets/php-ts-mode/.yas-parents new file mode 100644 index 0000000..00d75e1 --- /dev/null +++ b/emacs/.emacs.d/snippets/php-ts-mode/.yas-parents @@ -0,0 +1 @@ +php-mode
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/python-mode/defm_empty b/emacs/.emacs.d/snippets/python-mode/defm_empty new file mode 100644 index 0000000..baa976e --- /dev/null +++ b/emacs/.emacs.d/snippets/python-mode/defm_empty @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# name: Empty Defmethod +# key: defm +# -- +def ${1:name}(self, *args, **kwargs): + '''$2''' + return super(${3:`(progn (re-search-backward "^[ \t]*class \\(.+\\)(") (match-string 1)))`}, self).$1(*args, **kwargs)
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/python-mode/form b/emacs/.emacs.d/snippets/python-mode/form new file mode 100644 index 0000000..225d5e4 --- /dev/null +++ b/emacs/.emacs.d/snippets/python-mode/form @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: Model Form +# key: form +# -- +class ${1:Model}Form(forms.ModelForm): + '''Form for the $1 model.''' + + class Meta: + model = $1
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/python-mode/form_valid b/emacs/.emacs.d/snippets/python-mode/form_valid new file mode 100644 index 0000000..c5a7e58 --- /dev/null +++ b/emacs/.emacs.d/snippets/python-mode/form_valid @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: Record form +# key: defm +# -- +@record_activity(model=${1:`(progn (re-search-backward "^[ \t]*model = \\([a-zA-Z_].*\\)$") (match-string 1))`}) +def form_valid(self, form): + '''Make sure any changes to the $1 model get logged.''' + return super(${2:`(progn (re-search-backward "^[ \t]*class \\(.+\\)(") (match-string 1)))`}, self).form_valid(form)
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/python-mode/form_valid_with_return b/emacs/.emacs.d/snippets/python-mode/form_valid_with_return new file mode 100644 index 0000000..fac23bc --- /dev/null +++ b/emacs/.emacs.d/snippets/python-mode/form_valid_with_return @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: form_valid with return +# key: formvalid +# -- +def form_valid(self, form): + rv = super(`(let ((name (python-info-current-defun))) (substring name 0 (cl-position ?. name)))`, self).form_valid(form) + $0 + return rv
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/python-mode/import_from b/emacs/.emacs.d/snippets/python-mode/import_from new file mode 100644 index 0000000..d9cc4e2 --- /dev/null +++ b/emacs/.emacs.d/snippets/python-mode/import_from @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# name: from ... import ... +# contributor: Tom Willemse +# key: from +# -- +from ${1:module} import ${2:class_or_module} diff --git a/emacs/.emacs.d/snippets/python-mode/method b/emacs/.emacs.d/snippets/python-mode/method new file mode 100644 index 0000000..7c033cf --- /dev/null +++ b/emacs/.emacs.d/snippets/python-mode/method @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: method +# key: defm +# -- +def $1(self$2): + '''$3''' + $0
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/python-mode/permission_guard b/emacs/.emacs.d/snippets/python-mode/permission_guard new file mode 100644 index 0000000..ab53895 --- /dev/null +++ b/emacs/.emacs.d/snippets/python-mode/permission_guard @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: Permission guard +# key: defm +# -- +@method_decorator(permission_required('$1', + raise_exception=True)) +def dispatch(self, *args, **kwargs): + '''Make sure the user has the $1 permission.''' + return super(${3:`(progn (re-search-backward "^[ \t]*class \\(.+\\)(") (match-string 1)))`}, self).dispatch(*args, **kwargs)
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/python-mode/url b/emacs/.emacs.d/snippets/python-mode/url new file mode 100644 index 0000000..00ade72 --- /dev/null +++ b/emacs/.emacs.d/snippets/python-mode/url @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: url +# key: url +# -- +url(r'^$1', $2, name='$3'),
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/ruby-mode/ProductSeed b/emacs/.emacs.d/snippets/ruby-mode/ProductSeed new file mode 100644 index 0000000..7e836c2 --- /dev/null +++ b/emacs/.emacs.d/snippets/ruby-mode/ProductSeed @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: ProductSeed +# key: pseed +# -- +Product.find_or_create_by_name(parent_id: $1, name: '$2', description: '$3', price: '$4')
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/ruby-mode/ProductSeedHW b/emacs/.emacs.d/snippets/ruby-mode/ProductSeedHW new file mode 100644 index 0000000..843b32e --- /dev/null +++ b/emacs/.emacs.d/snippets/ruby-mode/ProductSeedHW @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: ProductSeedWithHW +# key: pseed +# -- +Product.find_or_create_by_name(parent_id: $1, name: '$2', description: '$3', price: '$4', width_in_cm: '$5', height_in_cm: '$6', width_in_mm: '${5:$(round (* 10 (string-to-int yas-text)))}', height_in_mm: '${6:$(round (* 10 (string-to-int yas-text)))}')
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/ruby-mode/ProductSeedHWGroup b/emacs/.emacs.d/snippets/ruby-mode/ProductSeedHWGroup new file mode 100644 index 0000000..25594c5 --- /dev/null +++ b/emacs/.emacs.d/snippets/ruby-mode/ProductSeedHWGroup @@ -0,0 +1,8 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: ProductSeedWithHWGroup +# key: pseed +# -- +Product.find_or_create_by_name(parent_id: $1, name: '$2', description: 'Small', price: '20.00', width_in_cm: '25.00', height_in_cm: '21.00', width_in_mm: '250', height_in_mm: '210') +Product.find_or_create_by_name(parent_id: $1, name: '$2', description: 'Medium', price: '20.00', width_in_cm: '30.00', height_in_cm: '25.80', width_in_mm: '300', height_in_mm: '258') +Product.find_or_create_by_name(parent_id: $1, name: '$2', description: 'Large', price: '20.00', width_in_cm: '35.00', height_in_cm: '30.00', width_in_mm: '350', height_in_mm: '300') +Product.find_or_create_by_name(parent_id: $1, name: '$2', description: 'Extra large', price: '20.00', width_in_cm: '40.00', height_in_cm: '34.00', width_in_mm: '400', height_in_mm: '340') diff --git a/emacs/.emacs.d/snippets/ruby-mode/describe b/emacs/.emacs.d/snippets/ruby-mode/describe new file mode 100644 index 0000000..acd3a6b --- /dev/null +++ b/emacs/.emacs.d/snippets/ruby-mode/describe @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: describe +# key: desc +# -- +describe '$1' do + $0 +end
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/ruby-mode/do b/emacs/.emacs.d/snippets/ruby-mode/do new file mode 100644 index 0000000..3c556fc --- /dev/null +++ b/emacs/.emacs.d/snippets/ruby-mode/do @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: do +# key: do +# -- +do$0 +end
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/ruby-mode/factory b/emacs/.emacs.d/snippets/ruby-mode/factory new file mode 100644 index 0000000..619b2e5 --- /dev/null +++ b/emacs/.emacs.d/snippets/ruby-mode/factory @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: factory +# key: factory +# -- +FactoryGirl.define do + factory :${1:`(file-name-sans-extension (file-name-nondirectory buffer-file-name))`} do + $0 + end +end
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/ruby-mode/fill_in b/emacs/.emacs.d/snippets/ruby-mode/fill_in new file mode 100644 index 0000000..854b029 --- /dev/null +++ b/emacs/.emacs.d/snippets/ruby-mode/fill_in @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: fill_in +# key: fin +# -- +fill_in '$1', with: $2
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/ruby-mode/mod b/emacs/.emacs.d/snippets/ruby-mode/mod new file mode 100644 index 0000000..9af7d23 --- /dev/null +++ b/emacs/.emacs.d/snippets/ruby-mode/mod @@ -0,0 +1,11 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: module ... end +# key: mod +# group: definitions +# -- +module ${1:`(let ((fn (capitalize (file-name-nondirectory + (directory-file-name + default-directory))))) + (replace-regexp-in-string "_" "" fn t t))`} + $0 +end
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/ruby-mode/reduce b/emacs/.emacs.d/snippets/ruby-mode/reduce new file mode 100644 index 0000000..3d4bfe4 --- /dev/null +++ b/emacs/.emacs.d/snippets/ruby-mode/reduce @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: reduce +# key: reduce +# -- +reduce { |a, e| $0 }
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/_self b/emacs/.emacs.d/snippets/twig-mode/_self new file mode 100644 index 0000000..c441690 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/_self @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: _self +# key: _self +# -- +{% import _self as ${1:`(file-name-nondirectory (file-name-sans-extension buffer-file-name))`} %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/blk b/emacs/.emacs.d/snippets/twig-mode/blk new file mode 100644 index 0000000..bb100a3 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/blk @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: block +# key: blk +# -- +{% block $1 %} + $0 +{% endblock %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/def b/emacs/.emacs.d/snippets/twig-mode/def new file mode 100644 index 0000000..78dead4 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/def @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: default value +# key: def +# -- +{% if $1 is not defined %} + {% set $1 = $2 %} +{% endif %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/ext b/emacs/.emacs.d/snippets/twig-mode/ext new file mode 100644 index 0000000..501cae8 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/ext @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: extends +# key: ext +# -- +{% extends "$1" %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/for b/emacs/.emacs.d/snippets/twig-mode/for new file mode 100644 index 0000000..01c0cc5 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: for +# key: for +# -- +{% for $1 in $2 %} + `yas-selected-text`$0 +{% endfor %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/if b/emacs/.emacs.d/snippets/twig-mode/if new file mode 100644 index 0000000..a9385d9 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: if +# key: if +# -- +{% if $1 %} + $0 +{% endif %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/ife b/emacs/.emacs.d/snippets/twig-mode/ife new file mode 100644 index 0000000..a4d18f3 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/ife @@ -0,0 +1,9 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: if...else +# key: ife +# -- +{% if $1 %} + $0 +{% else %} + +{% endif %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/iif b/emacs/.emacs.d/snippets/twig-mode/iif new file mode 100644 index 0000000..df26b61 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/iif @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: Inline if +# key: iif +# -- +{% if $1 %}$0{% endif %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/imp b/emacs/.emacs.d/snippets/twig-mode/imp new file mode 100644 index 0000000..01ceb69 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/imp @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: import +# key: imp +# -- +{% import "${1:module}" as ${1:$(if (string-match "/\\\\([^/]*\\\\)$" yas-text) + (match-string 1 yas-text) + yas-text)} %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/mac b/emacs/.emacs.d/snippets/twig-mode/mac new file mode 100644 index 0000000..d4e480a --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/mac @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: macro +# key: mac +# -- +{% macro ${1:name}(${2:args}) %} + $0 +{% endmacro %}
\ No newline at end of file diff --git a/emacs/.emacs.d/snippets/twig-mode/set b/emacs/.emacs.d/snippets/twig-mode/set new file mode 100644 index 0000000..715c828 --- /dev/null +++ b/emacs/.emacs.d/snippets/twig-mode/set @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: set +# key: set +# -- +{% set $1 = $2 %}
\ No newline at end of file |
