Guest User

Untitled

a guest
May 26th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. ;; view-mode
  2. (setq view-read-only t)
  3. (defvar pager-keybind
  4. `( ;; vi-like
  5. ;; ("h" . backward-word)
  6. ;; ("l" . forward-word)
  7. ;; ("j" . next-window-line)
  8. ;; ("k" . previous-window-line)
  9. ("h" . backward-char)
  10. ("l" . forward-char)
  11. ("j" . next-line)
  12. ("k" . previous-line)
  13. ;; (";" . gene-word)
  14. ("b" . scroll-down)
  15. (" " . scroll-up)
  16. ;; w3m-like
  17. ;; ("m" . gene-word)
  18. ;; ("i" . win-delete-current-window-and-squeeze)
  19. ("w" . forward-word)
  20. ("e" . backward-word)
  21. ;; ("(" . point-undo)
  22. ;; (")" . point-redo)
  23. ;; ("J" . ,(lambda () (interactive) (scroll-up 1)))
  24. ;; ("K" . ,(lambda () (interactive) (scroll-down 1)))
  25. ("n" . ,(lambda () (interactive) (scroll-up 1)))
  26. ("p" . ,(lambda () (interactive) (scroll-down 1)))
  27. ;; bm-easy
  28. ;; ("." . bm-toggle)
  29. ;; ("[" . bm-previous)
  30. ;; ("]" . bm-next)
  31. ;; langhelp-like
  32. ;; ("c" . scroll-other-window-down)
  33. ;; ("v" . scroll-other-window)
  34. ))
  35. (defun define-many-keys (keymap key-table &optional includes)
  36. (let (key cmd)
  37. (dolist (key-cmd key-table)
  38. (setq key (car key-cmd)
  39. cmd (cdr key-cmd))
  40. (if (or (not includes) (member key includes))
  41. (define-key keymap key cmd))))
  42. keymap)
  43.  
  44. (defun view-mode-hook0 ()
  45. (define-many-keys view-mode-map pager-keybind)
  46. (hl-line-mode 1)
  47. (define-key view-mode-map " " 'scroll-up))
  48. (add-hook 'view-mode-hook 'view-mode-hook0)
  49.  
  50. (defadvice find-file
  51. (around find-file-switch-to-view-file (file &optional wild) activate)
  52. (if (and (not (file-writable-p file))
  53. (not (file-directory-p file)))
  54. (view-file file)
  55. ad-do-it))
  56.  
  57. (defvar view-mode-force-exit nil)
  58. (defmacro do-not-exit-view-mode-unless-writable-advice (f)
  59. `(defadvice ,f (around do-not-exit-view-mode-unless-writable activate)
  60. (if (and (buffer-file-name)
  61. (not view-mode-force-exit)
  62. (not (file-writable-p (buffer-file-name))))
  63. (message "File is unwritable, so stay in view-mode.")
  64. ad-do-it)))
  65.  
  66. (do-not-exit-view-mode-unless-writable-advice view-mode-exit)
  67. (do-not-exit-view-mode-unless-writable-advice view-mode-disable)
  68.  
  69.  
  70. (require 'key-chord)
  71. (setq key-chord-two-keys-delay 0.04)
  72. (key-chord-mode 1)
  73. (key-chord-define-global "jk" 'view-mode)
Add Comment
Please, Sign In to add comment