Emacs: Move skeletons patch to a dedicated file

master
Pierre Neidhardt 2019-03-03 13:26:09 +01:00
parent 5183b7124e
commit 223348d554
3 changed files with 43 additions and 40 deletions

View File

@ -192,41 +192,6 @@ If DIR-LEFT is t, then move left, otherwise move right."
"Reset `fill-column' to its default value."
(setq fill-column (default-value 'fill-column)))
(defun ambrevar/skeleton-make-markers ()
"Save last skeleton markers in a list.
Hook function for skeletons."
(while skeleton-markers
(set-marker (pop skeleton-markers) nil))
(setq skeleton-markers
(mapcar 'copy-marker (reverse skeleton-positions))))
(defvar skeleton-markers nil
"Markers for locations saved in `skeleton-positions'.")
(defun ambrevar/skeleton-previous-position ()
"Move to previous skeleton placeholder.
See `skeleton-next-position'."
(skeleton-next-position t))
(defun ambrevar/skeleton-next-position (&optional reverse)
"Move to next skeleton placeholder.
If REVERSE it t, move to previous placeholder."
(interactive "P")
(let ((positions (mapcar 'marker-position skeleton-markers))
(comp (if reverse '< '<=))
pos
prev)
(when positions
(setq pos (pop positions))
(while (and pos (funcall comp pos (point)))
(setq prev pos)
(setq pos (pop positions)))
(cond
((and reverse prev) (goto-char prev))
(reverse (goto-char (car (last skeleton-markers))))
(pos (goto-char pos))
(t (goto-char (car skeleton-markers)))))))
(defun ambrevar/sort-lines-unique (arg)
"Remove trailing white space, then duplicate lines, then sort the result.
Do not fold case with \\[universal-argument] or non-nil ARG."
@ -453,6 +418,7 @@ This does not affect .csv files."
(defun ambrevar/turn-on-skeleton-markers ()
"Allow skeletons to make markers to ease field navigation."
(require 'patch-skeletons)
(add-hook 'skeleton-end-hook 'ambrevar/skeleton-make-markers))
(defun ambrevar/turn-on-tab-width-to-4 ()

View File

@ -293,12 +293,13 @@
(setq uniquify-buffer-name-style 'forward)
;;; Skeleton settings
(when (require 'patch-skeletons nil 'noerror)
;;; Do not expand abbrevs in skeletons.
(setq-default skeleton-further-elements '((abbrev-mode nil)))
(ambrevar/turn-on-skeleton-markers)
(ambrevar/global-set-keys
"C->" 'skeleton-next-position
"C-<" 'skeleton-previous-position)
(setq-default skeleton-further-elements '((abbrev-mode nil)))
(ambrevar/turn-on-skeleton-markers)
(ambrevar/global-set-keys
"C->" 'skeleton-next-position
"C-<" 'skeleton-previous-position))
;;; Disable prompt (but leave warning) on git symlink.
(setq vc-follow-symlinks t)

View File

@ -0,0 +1,36 @@
(defun ambrevar/skeleton-make-markers ()
"Save last skeleton markers in a list.
Hook function for skeletons."
(while skeleton-markers
(set-marker (pop skeleton-markers) nil))
(setq skeleton-markers
(mapcar 'copy-marker (reverse skeleton-positions))))
(defvar skeleton-markers nil
"Markers for locations saved in `skeleton-positions'.")
(defun ambrevar/skeleton-previous-position ()
"Move to previous skeleton placeholder.
See `skeleton-next-position'."
(skeleton-next-position t))
(defun ambrevar/skeleton-next-position (&optional reverse)
"Move to next skeleton placeholder.
If REVERSE it t, move to previous placeholder."
(interactive "P")
(let ((positions (mapcar 'marker-position skeleton-markers))
(comp (if reverse '< '<=))
pos
prev)
(when positions
(setq pos (pop positions))
(while (and pos (funcall comp pos (point)))
(setq prev pos)
(setq pos (pop positions)))
(cond
((and reverse prev) (goto-char prev))
(reverse (goto-char (car (last skeleton-markers))))
(pos (goto-char pos))
(t (goto-char (car skeleton-markers)))))))
(provide 'patch-skeletons)