;;; oni-yasnippet.el --- Yasnippet configuration -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Tom Willemse ;; Author: Tom Willemse ;; Keywords: local ;; Version: 2023.1212.085307 ;; Package-Requires: (yasnippet yasnippet-snippets diminish) ;; 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: ;; Yasnippet configuration. To use this configuratin you should put the ;; following two lines in your init file: ;; ;; (with-eval-after-load 'yasnippet (require 'oni-yasnippet)) ;; (yas-global-mode) ;;; Code: (require 'yasnippet) (require 'diminish) (defun oni-yasnippet-remove-snippet-by-name (name mode) "Remove the snippet NAME from MODE's snippet tables." (and-let* ((mode-table (gethash mode yas--tables)) (uuidhash-table (yas--table-uuidhash mode-table)) (hash-table (yas--table-hash mode-table)) (snippet (gethash name uuidhash-table)) (key (yas--template-key snippet))) (remhash key hash-table) (remhash name uuidhash-table))) (defun oni-yasnippet-cleanup-snippets () "Remove some snippets that I don't like." (oni-yasnippet-remove-snippet-by-name "defun" 'lisp-interaction-mode)) (with-eval-after-load 'yasnippet (diminish 'yas-minor-mode)) (setq-default yas-buffer-local-condition yas-not-string-or-comment-condition) (define-key yas-minor-mode-map (kbd "") nil) (define-key yas-minor-mode-map (kbd "C-\\") 'yas-expand) (define-key yas-minor-mode-map (kbd "SPC") yas-maybe-expand) (define-key yas-minor-mode-map (kbd "TAB") nil) (add-hook 'yas-after-reload-hook #'oni-yasnippet-cleanup-snippets) (provide 'oni-yasnippet) ;;; oni-yasnippet.el ends here