;;; feature/snippets/autoload/snippets.el ;;;###autoload (defun +snippets/goto-start-of-field () "Go to the beginning of the current field." (interactive) (let* ((snippet (car (yas--snippets-at-point))) (position (yas--field-start (yas--snippet-active-field snippet)))) (if (= (point) position) (move-beginning-of-line 1) (goto-char position)))) ;;;###autoload (defun +snippets/goto-end-of-field () "Go to the end of the current field." (interactive) (let* ((snippet (car (yas--snippets-at-point))) (position (yas--field-end (yas--snippet-active-field snippet)))) (if (= (point) position) (move-end-of-line 1) (goto-char position)))) ;;;###autoload (defun +snippets/delete-backward-char (&optional field) "Prevents Yas from interfering with backspace deletion." (interactive) (let ((field (or field (and yas--active-field-overlay (overlay-buffer yas--active-field-overlay) (overlay-get yas--active-field-overlay 'yas--field))))) (cond ((eq (point) (marker-position (yas--field-start field))) nil) (t (delete-char -1))))) ;;;###autoload (defun +snippets/delete-forward-char-or-field (&optional field) "Delete forward, or skip the current field if it's empty. This is to prevent buggy behavior when is pressed in an empty field." (interactive) (let ((field (or field (and yas--active-field-overlay (overlay-buffer yas--active-field-overlay) (overlay-get yas--active-field-overlay 'yas--field))))) (cond ((and field (not (yas--field-modified-p field)) (eq (point) (marker-position (yas--field-start field)))) (yas--skip-and-clear field) (yas-next-field 1)) ((eq (point) (marker-position (yas--field-end field))) nil) (t (delete-char 1))))) ;;;###autoload (defun +snippets/delete-to-start-of-field (&optional field) "Delete to start-of-field." (interactive) (let* ((field (or field (and yas--active-field-overlay (overlay-buffer yas--active-field-overlay) (overlay-get yas--active-field-overlay 'yas--field)))) (sof (marker-position (yas--field-start field)))) (when (and field (> (point) sof)) (delete-region sof (point))))) ;; TODO move this to ivy ;;;###autoload (defun +snippets/ivy-prompt (prompt choices &optional display-fn) (yas-completing-prompt prompt choices display-fn #'ivy-completing-read))