(easy-mmode-define-minor-mode
test-mode
"This is Test Mode."
nil
" TestMode"
'(
("\C-o" . test-function)
("\r" . test-mode)
))
(add-hook 'test-mode-on-hook 'test-mode-init)
(add-hook 'test-mode-off-hook 'test-mode-finish)
(defun my-bounds-list()
(sort
(mapcar 'assoc
(cons (my-bounds-of-defun)
(mapcar 'bounds-of-thing-at-point '(line word symbol sentence sexp)))
'(lambda(a b) (> (car a) (car b)))
)
)
(defun test-mode-init()
(setq my-hoge-bounds-list (my-bounds-list))
(if my-hoge-bounds-list
(progn
(message "%s" my-hoge-bounds-list)
(setq test-mode-count 0)
(setq my-overlay-list
(mapcar '(lambda(bounds)
(make-overlay (car bounds) (1+ (car bounds))))
my-hoge-bounds-list))
(mapcar '(lambda(my-ov)
(overlay-put my-ov 'face 'region))my-overlay-list)
)))
(defun test-mode-finish()
(mapcar '(lambda(my-ov)
(delete-overlay my-ov))my-overlay-list))
(defvar test-mode-count 0)
(defvar my-hoge-bounds-list nil)
(defvar my-overlay-list nil)
(defun test-function ()
(interactive)
(goto-char
(car (nth (mod test-mode-count
(length my-hoge-bounds-list))
my-hoge-bounds-list)))
(setq test-mode-count (1+ test-mode-count))
)
(global-set-key (kbd "C-o") 'test-mode)
(defun my-bounds-of-defun()
(cons
(save-excursion (beginning-of-defun)
(point))
(save-excursion (end-of-defun)
(point))
))
(defun test-function ()
(interactive)
(goto-char
(car (nth (mod test-mode-count
(length my-hoge-bounds-list))
my-hoge-bounds-list)))
(setq test-mode-count (1+ test-mode-count))
)