-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup-yasnippet.el
31 lines (27 loc) · 1 KB
/
setup-yasnippet.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
(require 'yasnippet)
(setq yas/snippet-dirs '("~/.emacs.d/snippets"))
(yas/global-mode 1)
(diminish 'yas-minor-mode)
(defun yas-ido-expand ()
"Lets you select (and expand) a yasnippet key"
(interactive)
(let ((original-point (point)))
(while (and
(not (= (point) (point-min) ))
(not
(string-match "[[:space:]\n]" (char-to-string (char-before)))))
(backward-word 1))
(let* ((init-word (point))
(word (buffer-substring init-word original-point))
(list (yas-active-keys)))
(goto-char original-point)
(let ((key (remove-if-not
(lambda (s) (string-match (concat "^" word) s)) list)))
(if (= (length key) 1)
(setq key (pop key))
(setq key (ido-completing-read "key: " list nil nil word)))
(delete-char (- init-word original-point))
(insert key)
(yas-expand)))))
(define-key yas-minor-mode-map (kbd "<C-tab>") 'yas-ido-expand)
(provide 'setup-yasnippet)