;;; -*- lexical-binding: t -*- ;; ;; -------------------------------------------------------------------------- (require 'luki-lisp) ;; -------------------------------------------------------------------------- (-> 'll-close) (-> 'll-scroll) (-> 'man) ;; -------------------------------------------------------------------------- (setq Man-notify-method 'pushy) (setq Man-support-remote-systems t) ;; -------------------------------------------------------------------------- (defun man-kill-reference () (i) (when-let* ((page (1st (split-string Man-page-mode-string))) (page-dc (downcase page))) (kill-new page-dc) ($ page-dc))) ;; -------------------------------------------------------------------------- (defun man-find-source () (i) (let* ((Man-argument-list (split-string Man-arguments)) (sec-or-name (1st Man-argument-list)) (sec (if (n sec-or-name) sec-or-name 1)) (name (1st (last Man-argument-list))) (filename (substring (shell-command-to-string (@f "whereis -m %s.%s | cut -d' ' -f 2" name sec)) 0 -1))) (find-file filename))) ;; -------------------------------------------------------------------------- (defun man-set-keys () (let ((kmap Man-mode-map)) (set-bury-keys kmap) (set-scroll-keys kmap 'hori) (keymap-set kmap "r" #'Man-update-manpage) (keymap-set kmap ";" #'man-find-source) (keymap-set kmap "s" #'man-kill-reference) (keymap-set kmap "P" #'scroll-up-pane) (keymap-set kmap "N" #'scroll-down-pane) (keymap-set kmap "C-M-n" #'Man-next-manpage) (keymap-set kmap "C-M-p" #'Man-previous-manpage) (keymap-set kmap "b" #'Man-previous-manpage))) ;; -------------------------------------------------------------------------- (defun Man-mode-hook-f () (man-set-keys)) (add-hook 'Man-mode-hook #'Man-mode-hook-f) ;; -------------------------------------------------------------------------- (<- 'll-man)