diff --git a/doc/DOCUMENTATION.md b/doc/DOCUMENTATION.md
index 9a0ef7ec5..040b8d33b 100644
--- a/doc/DOCUMENTATION.md
+++ b/doc/DOCUMENTATION.md
@@ -77,6 +77,7 @@
- [Key bindings](#key-bindings)
- [Staying in insert state](#staying-in-insert-state)
- [Bookmarks](#bookmarks)
+ - [DocView mode](#docview-mode)
- [Searching](#searching)
- [Project Searching](#project-searching)
- [Persistent highlighting](#persistent-highlighting)
@@ -1209,6 +1210,36 @@ Key Binding | Description
To save a new bookmark, just type the name of the bookmark and press `RET`.
+### DocView mode
+
+`doc-view-mode` is a built-in major mode to view DVI, PostScript (PS), PDF,
+OpenDocument, and Microsoft Office documents.
+
+Key Binding | Description
+-------------------|----------------------------------------------------------------
+/ | search forward
+? | search backward
++ | enlarge
+- | shrink
+gg | go to first page
+G | go to last page
+h | previous page
+H | adjust to height
+j | next line
+k | previous line
+K | kill proc and buffer
+l | next page
+n | go to next search occurrence
+N | go to previous search occurrence
+P | fit page to window
+r | revert
+W | adjust to width
+C-d | scroll down
+C-k | kill proc
+C-u | scroll up
+C-c C-c | toggle display text and image display
+C-c C-t | open new buffer with doc's text contents
+
## Searching
### Project Searching
diff --git a/spacemacs/packages.el b/spacemacs/packages.el
index 9ee3cf4c5..5f29073c2 100644
--- a/spacemacs/packages.el
+++ b/spacemacs/packages.el
@@ -27,6 +27,7 @@
dash
diminish
dired+
+ doc-view
elisp-slime-nav
eldoc
evil
@@ -445,6 +446,51 @@ which require an initialization must be listed explicitly in the list.")
(use-package dired+
:defer t))
+(defun spacemacs/init-doc-view ()
+ (use-package doc-view
+ :defer t
+ :config
+ (progn
+ (add-to-list 'evil-emacs-state-modes 'doc-view-mode)
+
+ (defun spacemacs/doc-view-search-new-query ()
+ "Initiate a new query."
+ (interactive)
+ (doc-view-search 'newquery))
+
+ (defun spacemacs/doc-view-search-new-query-backward ()
+ "Initiate a new query."
+ (interactive)
+ (doc-view-search 'newquery t))
+
+ ;; fixed a weird issue where toggling display does not
+ ;; swtich to text mode
+ (defadvice doc-view-toggle-display
+ (around spacemacs/doc-view-toggle-display activate)
+ (if (eq major-mode 'doc-view-mode)
+ (progn
+ ad-do-it
+ (text-mode)
+ (doc-view-minor-mode))
+ ad-do-it))
+
+ (spacemacs|evilify doc-view-mode-map
+ "/" 'spacemacs/doc-view-search-new-query
+ "?" 'spacemacs/doc-view-search-new-query-backward
+ "gg" 'doc-view-first-page
+ "G" 'doc-view-last-page
+ "h" 'doc-view-previous-page
+ "j" 'doc-view-next-line-or-next-page
+ "k" 'doc-view-previous-line-or-previous-page
+ "K" 'doc-view-kill-proc-and-buffer
+ "l" 'doc-view-next-page
+ "n" 'doc-view-search
+ "N" 'doc-view-search-backward
+ (kbd "C-d") 'doc-view-scroll-up-or-next-page
+ (kbd "C-k") 'doc-view-kill-proc
+ (kbd "C-u") 'doc-view-scroll-down-or-previous-page)
+ (spacemacs/activate-evil-leader-for-map 'doc-view-mode-map))))
+
(defun spacemacs/init-elisp-slime-nav ()
;; Elisp go-to-definition with M-. and back again with M-,
(use-package elisp-slime-nav