From 9e7749cf1d0c5812ef921b26d3160d6659b443b2 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 26 May 2016 18:43:22 -0400 Subject: [PATCH] Back to dash-at-point! (and zeal-at-point) --- Cask | 4 ++- core/core-docs.el | 24 +++++++++++++ core/core-helm.el | 7 ---- core/core-os-osx.el | 2 +- core/defuns/defuns-dash.el | 66 ------------------------------------ core/defuns/defuns-docs.el | 17 ++++++++++ core/defuns/macros-dash.el | 8 ----- init.el | 1 + modules/module-cc.el | 2 -- modules/module-crystal.el | 2 +- modules/module-css.el | 3 +- modules/module-data.el | 2 +- modules/module-elisp.el | 1 - modules/module-go.el | 1 - modules/module-haskell.el | 1 - modules/module-java.el | 2 +- modules/module-js.el | 5 +-- modules/module-julia.el | 2 +- modules/module-lua.el | 1 - modules/module-php.el | 1 - modules/module-processing.el | 1 - modules/module-python.el | 6 +--- modules/module-ruby.el | 7 +--- modules/module-rust.el | 3 +- modules/module-scala.el | 4 +-- modules/module-swift.el | 2 +- modules/module-text.el | 1 - private/my-bindings.el | 2 +- 28 files changed, 58 insertions(+), 120 deletions(-) create mode 100644 core/core-docs.el delete mode 100644 core/defuns/defuns-dash.el create mode 100644 core/defuns/defuns-docs.el delete mode 100644 core/defuns/macros-dash.el diff --git a/Cask b/Cask index d1ef747e2..9e71aa509 100644 --- a/Cask +++ b/Cask @@ -74,6 +74,9 @@ (depends-on "smart-forward") (depends-on "smartparens") +;; Documentation --- core/core-docs.el +(depends-on "dash-at-point") + ;; Completion --- core/core-company.el (depends-on "company") (depends-on "company-dict") @@ -111,7 +114,6 @@ (depends-on "helm-c-yasnippet") (depends-on "helm-company") (depends-on "helm-css-scss") -(depends-on "helm-dash") (depends-on "helm-describe-modes" :git "https://github.com/emacs-helm/helm-describe-modes") (depends-on "helm-projectile") (depends-on "helm-swoop") diff --git a/core/core-docs.el b/core/core-docs.el new file mode 100644 index 000000000..e8f3b8122 --- /dev/null +++ b/core/core-docs.el @@ -0,0 +1,24 @@ +;;; core-docs.el + +(use-package dash-at-point + :when IS-MAC + :commands (dash-at-point dash-at-point-with-docset dash-at-point-run-search + dash-at-point-guess-docset) + :init + (defmacro def-docset! (mode docset) + `(add-hook! ,mode (setq-local dash-at-point-docset ,docset))) + (defun doom-docs-lookup (&optional search docset) + (dash-at-point-run-search search docset))) + +(use-package zeal-at-point + :when (not IS-MAC) + :commands (zeal-at-point zeal-at-point-set-docset) + :init + (defmacro def-docset! (mode docset) + `(add-hook! ,mode (setq-local zeal-at-point-docset ,docset))) + (defun doom-docs-lookup (&optional search docset) + (let ((zeal-at-point-docset (or docset zeal-at-point-docset))) + (zeal-at-point search)))) + +(provide 'core-docs) +;;; core-docs.el ends here diff --git a/core/core-helm.el b/core/core-helm.el index 9bd1ed8c1..43fdf8efb 100644 --- a/core/core-helm.el +++ b/core/core-helm.el @@ -73,13 +73,6 @@ (defun helm*buffer-list (&rest _) (doom/get-buffer-names doom-helm-force-project-buffers)) (advice-add 'helm-buffer-list :override 'helm*buffer-list)) -(use-package helm-dash - :when (not IS-WINDOWS) - :commands (helm-dash helm-dash-at-point helm-dash-install-docset) - :config - (setq helm-dash-browser-func 'doom/dash-open - helm-dash-candidate-format "%d → %n (%t)")) - (use-package helm-tags :commands (helm-tags-get-tag-file helm-etags-select)) diff --git a/core/core-os-osx.el b/core/core-os-osx.el index 615ef8b91..31de3264f 100644 --- a/core/core-os-osx.el +++ b/core/core-os-osx.el @@ -46,7 +46,7 @@ (use-package applescript-mode :mode "\\.applescript$" - :config (def-docset! applescript-mode ("AppleScript"))) + :config (def-docset! applescript-mode "applescript")) (def-project-type! lb6 "lb6" :match "\\.lb\\(action\\|ext\\)/.+$" diff --git a/core/defuns/defuns-dash.el b/core/defuns/defuns-dash.el deleted file mode 100644 index b69b70ebd..000000000 --- a/core/defuns/defuns-dash.el +++ /dev/null @@ -1,66 +0,0 @@ -;;; defuns-dash.el --- helm-dash integration - -;;;###autoload -(defun doom/dash-at-pt () - (interactive) - (let (helm-dash-common-docsets) - (call-interactively 'helm-dash-at-point))) - -;;;###autoload -(defun doom/dash-open (url) - "Open url in an *eww* popup." - (interactive) - (save-window-excursion (eww url)) - (doom/popup-buffer "*eww*")) - -;;;###autoload (autoload 'doom:dash "defuns-dash" nil t) -(evil-define-command doom:dash (&optional bang input) - "" - (interactive "") - (let ((helm-dash-common-docsets (when bang (helm-dash-installed-docsets)))) - (helm-dash-initialize-debugging-buffer) - (helm-dash-create-common-connections) - (helm-dash-create-buffer-connections) - (helm :sources (helm-dash-sources--narrowed-docsets) - :buffer "*helm-dash*" - :prompt "Doc for: " - :history 'helm-dash-history-input - :input (or input "") - :helm-candidate-number-limit 500))) - -(defvar doom--dash-docsets nil) -(defvar doom--dash-user-docsets nil) -;;;###autoload (autoload 'doom:dash-install "defuns-dash" nil t) -(evil-define-command doom:dash-install (&optional docset) - "Async docset install." - (interactive "") - (let ((docsets (or doom--dash-docsets - (setq doom--dash-docsets (helm-dash-available-docsets)))) - (user-docsets (or doom--dash-user-docsets - (setq doom--dash-user-docsets (helm-dash-search-all-user-docsets))))) - (unless docset - (setq docset (helm-dash-read-docset - "Install docset" - (append docsets (mapcar 'car user-docsets))))) - (message "Installing ...") - (async-start `(lambda () - ,(async-inject-variables "\\`\\(load-path\\|helm-dash-*\\)$") - (require 'f) - (require 'helm) - (require 'helm-dash) - (cond ((member ,docset ',docsets) - (helm-dash-install-docset ,docset) - ,docset) - ((assoc ,docset ',user-docsets) - (helm-dash-install-user-docset ,docset) - (f-no-ext (f-base (car-safe (cdr-safe (assoc ,docset ',user-docsets)))))))) - (lambda (doc) - (unless doc - (error "Invalid docset id" doc)) - (message "Installing docset %s ..." doc) - (helm-dash-activate-docset doc) - (setq helm-dash-common-docsets nil) - (message "Docset %s installed" doc))))) - -(provide 'defuns-dash) -;;; defuns-dash.el ends here diff --git a/core/defuns/defuns-docs.el b/core/defuns/defuns-docs.el new file mode 100644 index 000000000..d5f804d50 --- /dev/null +++ b/core/defuns/defuns-docs.el @@ -0,0 +1,17 @@ +;;; defuns-docs.el + +;;;###autoload (autoload 'doom:docs-lookup "defuns-docs" nil t) +(evil-define-command doom:docs-lookup (&optional bang input) + "Look up INPUT (otherwise the current selection) in Dash or Zeal." + (interactive "") + (let ((docset (unless bang (dash-at-point-guess-docset))) + (query input)) + (when (evil-visual-state-p) + (setq query (concat (buffer-substring-no-properties (region-beginning) (region-end)) + " " query))) + (when (or (not query) (zerop (length query))) + (setq query (thing-at-point 'symbol))) + (doom-docs-lookup query docset))) + +(provide 'defuns-docs) +;;; defuns-docs.el ends here diff --git a/core/defuns/macros-dash.el b/core/defuns/macros-dash.el deleted file mode 100644 index b06aa3dee..000000000 --- a/core/defuns/macros-dash.el +++ /dev/null @@ -1,8 +0,0 @@ -;;; macros-dash.el - -;;;###autoload -(defmacro def-docset! (mode docsets) - `(add-hook! ,mode (setq-local helm-dash-docsets ',docsets))) - -(provide 'macros-dash) -;;; macros-dash.el ends here diff --git a/init.el b/init.el index 9fd5ccbff..e84f482a5 100644 --- a/init.el +++ b/init.el @@ -42,6 +42,7 @@ core-ui ; draw me like one of your French editors core-evil ; come to the dark side, we have cookies core-editor ; filling the editor-shaped hole in the emacs OS + core-docs ; getting to the documentation core-company ; auto-completion, for the lazy typist core-yasnippet ; snippets, for the lazier typist core-autoinsert ; file templates, for the laziest typist diff --git a/modules/module-cc.el b/modules/module-cc.el index 19e815f5f..ddb40f347 100644 --- a/modules/module-cc.el +++ b/modules/module-cc.el @@ -24,8 +24,6 @@ :config (def-electric! (c-mode c++-mode objc-mode) :chars (?\n ?\})) (def-company-backend! (c-mode c++-mode objc-mode) (irony-c-headers irony)) - (def-docset! c-mode ("C" "org.libsdl.sdl20")) - (def-docset! c++-mode ("C++" "C" "Boost" "Qt_4" "Qt_5" "Cocos2D" "Cocos2D-X" "org.libsdl.sdl20")) (setq c-tab-always-indent nil c-electric-flag nil) diff --git a/modules/module-crystal.el b/modules/module-crystal.el index bc5f3ff12..2bd103459 100644 --- a/modules/module-crystal.el +++ b/modules/module-crystal.el @@ -4,7 +4,7 @@ :mode "\\.cr$" :interpreter "crystal" :config - (def-docset! crystal-mode ("crystal")) + (def-docset! crystal-mode "crystal") (after! quickrun (quickrun-add-command "crystal" '((:command . "crystal") diff --git a/modules/module-css.el b/modules/module-css.el index 72bb277cf..f50bcd31f 100644 --- a/modules/module-css.el +++ b/modules/module-css.el @@ -37,7 +37,6 @@ :config (def-builder! sass-mode doom/sass-build) (def-company-backend! sass-mode (css yasnippet)) - (def-docset! sass-mode ("CSS" "Sass" "Bourbon")) (push '("sass" "css") projectile-other-file-alist)) (use-package scss-mode @@ -45,7 +44,7 @@ :config (def-builder! scss-mode doom/scss-build) (def-company-backend! scss-mode (css yasnippet)) - (def-docset! scss-mode ("CSS" "Sass" "Bourbon")) + (def-docset! scss-mode "sass,bourbon,compass,neat,css") (push '("scss" "css") projectile-other-file-alist) (setq scss-compile-at-save nil)) diff --git a/modules/module-data.el b/modules/module-data.el index 0f1097f58..f96a58736 100644 --- a/modules/module-data.el +++ b/modules/module-data.el @@ -16,7 +16,7 @@ (use-package dockerfile-mode :mode "/Dockerfile$" :config - (def-docset! dockerfile-mode ("Docker")) + (def-docset! dockerfile-mode "docker") (def-builder! dockerfile-mode dockerfile-build-buffer "Dockerfile")) ;; For ROM hacking or debugging diff --git a/modules/module-elisp.el b/modules/module-elisp.el index d3d45e8f8..36868fa2e 100644 --- a/modules/module-elisp.el +++ b/modules/module-elisp.el @@ -9,7 +9,6 @@ (add-hook 'emacs-lisp-mode-hook 'doom/elisp-init) (defun doom/elisp-init () (def-company-backend! emacs-lisp-mode (elisp yasnippet)) - (def-docset! emacs-lisp-mode ("Emacs Lisp")) (def-repl! emacs-lisp-mode doom/elisp-inf-ielm) (def-rotate! emacs-lisp-mode :symbols (("t" "nil") diff --git a/modules/module-go.el b/modules/module-go.el index 66ffa3b5d..268063c6d 100644 --- a/modules/module-go.el +++ b/modules/module-go.el @@ -9,7 +9,6 @@ :config (def-builder! go-mode "go build") (def-company-backend! go-mode (go yasnippet)) - (def-docset! go-mode ("Go")) (def-repl! go-mode gorepl-run) (map! :map go-mode-map :n "gd" 'godef-jump diff --git a/modules/module-haskell.el b/modules/module-haskell.el index f01f34839..b100b7718 100644 --- a/modules/module-haskell.el +++ b/modules/module-haskell.el @@ -8,7 +8,6 @@ ("runhaskell" . haskell-mode)) :init (add-hook! haskell-mode '(interactive-haskell-mode flycheck-mode)) :config - (def-docset! haskell-mode ("Haskell")) (def-popup! "*debug:haskell*" :size 20) (def-repl! haskell-mode switch-to-haskell) (push ".hi" completion-ignored-extensions)) diff --git a/modules/module-java.el b/modules/module-java.el index 9ca523696..5e3e4bdc6 100644 --- a/modules/module-java.el +++ b/modules/module-java.el @@ -1,7 +1,7 @@ ;;; module-java.el (after! c-initialization - (def-docset! java-mode ("Java" "Android" "JavaFX"))) + (def-docset! java-mode "java,javafx,grails,groovy,playjava,spring,cvj,processing,javadoc")) (defvar eclim-eclipse-dirs '("/Applications/eclipse")) (defvar eclim-executable "/Applications/eclipse/eclim") diff --git a/modules/module-js.el b/modules/module-js.el index 13925710b..c00372e1a 100644 --- a/modules/module-js.el +++ b/modules/module-js.el @@ -7,10 +7,7 @@ :config (def-repl! js2-mode nodejs-repl) (def-company-backend! js2-mode (tern yasnippet)) - (def-docset! js2-mode - ("JavaScript" "jQuery" "jQuery_Mobile" "jQuery_UI" "AngularJS" "BackboneJS" - "D3JS" "EmberJS" "ExtJS" "KnockoutJS" "MarionetteJS" "MomentJS" "NodeJS" - "PrototypeJS" "RequireJS" "SailsJS" "UnderscoreJS" "VueJS" "ZeptoJS")) + (def-docset! js2-mode "js,jquery,nodejs,angularjs,express") (def-electric! js2-mode :chars (?\} ?\) ?.) :words ("||" "&&")) (setq-default js2-skip-preprocessor-directives t diff --git a/modules/module-julia.el b/modules/module-julia.el index bb22e4ecc..876f798f8 100644 --- a/modules/module-julia.el +++ b/modules/module-julia.el @@ -4,7 +4,7 @@ :mode "\\.jl$" :interpreter "julia" :config - (def-docset! julia-mode ("Julia")) + (def-docset! julia-mode "julia") (def-repl! julia-mode doom/julia-repl)) (provide 'module-julia) diff --git a/modules/module-lua.el b/modules/module-lua.el index 69ded8a90..9d739ea20 100644 --- a/modules/module-lua.el +++ b/modules/module-lua.el @@ -6,7 +6,6 @@ :init (add-hook 'lua-mode-hook 'flycheck-mode) :config (def-company-backend! lua-mode (lua yasnippet)) - (def-docset! lua-mode ("Lua_5.2" "Lua_5.3")) (def-electric! lua-mode :words ("else" "end")) (def-repl! lua-mode doom/inf-lua) (sp-with-modes '(lua-mode) diff --git a/modules/module-php.el b/modules/module-php.el index d58e0e52b..eb1d75184 100644 --- a/modules/module-php.el +++ b/modules/module-php.el @@ -14,7 +14,6 @@ :config (def-repl! php-mode php-boris) - (def-docset! php-mode ("PHP" "Laravel" "PHPUnit")) (def-company-backend! php-mode '(php-extras-company company-yasnippet)) (map! :map php-mode-map (:localleader :nv ";" 'doom/append-semicolon)) diff --git a/modules/module-processing.el b/modules/module-processing.el index 98e22cde5..cee659f39 100644 --- a/modules/module-processing.el +++ b/modules/module-processing.el @@ -7,7 +7,6 @@ :init (add-hook 'processing-compilation-mode-hook 'doom|hide-mode-line) :config (def-builder! processing-mode processing-sketch-build) - (def-docset! processing-mode ("Processing")) (def-popup! "*processing-compilation*" :align below :size 10 :noselect t) (setq processing-location "/usr/local/bin/processing-java" processing-application-dir "/Applications/Processing.app" diff --git a/modules/module-python.el b/modules/module-python.el index 908093133..567a92301 100644 --- a/modules/module-python.el +++ b/modules/module-python.el @@ -21,13 +21,9 @@ :config (def-company-backend! python-mode (anaconda)) - (def-docset! python-mode ("OpenCV_Python")) (def-repl! python-mode doom/inf-python) (def-version-cmd! python-mode "python --version 2>&1 | cut -d' ' -f2") - (define-key python-mode-map (kbd "DEL") nil) ; interferes with smartparens - (add-hook 'doom-env-version-hook - (lambda (v) (when (eq major-mode 'python-mode) - (push (if (string-prefix-p "2" v) "Python_2" "Python_3") helm-dash-docsets))))) + (define-key python-mode-map (kbd "DEL") nil)) ; interferes with smartparens (use-package anaconda-mode :after python diff --git a/modules/module-ruby.el b/modules/module-ruby.el index 7069b4a7e..56d006bd7 100644 --- a/modules/module-ruby.el +++ b/modules/module-ruby.el @@ -8,17 +8,12 @@ :config (def-builder! ruby-mode "rake %s" "Rakefile") (def-company-backend! ruby-mode (dabbrev-code)) - (def-docset! ruby-mode ("Ruby_2" "Ruby_on_Rails_5")) (def-electric! ruby-mode :words ("else" "end" "elseif")) (def-repl! ruby-mode inf-ruby) (def-version-cmd! ruby-mode "ruby --version | cut -d' ' -f2") (setq ruby-deep-indent-paren t) ;; Don't interfere with my custom RET behavior - (define-key ruby-mode-map [?\n] nil) - - (add-hook 'doom-env-version-hook - (lambda (v) (when (eq major-mode 'ruby-mode) - (push (if (string-prefix-p "2" v) "Ruby_2" "Ruby") helm-dash-docsets))))) + (define-key ruby-mode-map [?\n] nil)) (use-package ruby-refactor :after ruby-mode diff --git a/modules/module-rust.el b/modules/module-rust.el index aee7f3d97..e8cd639c6 100644 --- a/modules/module-rust.el +++ b/modules/module-rust.el @@ -5,8 +5,7 @@ :init (add-hook 'rust-mode-hook 'flycheck-mode) :config (def-builder! rust-mode "cargo run" "Cargo.toml") - (def-builder! toml-mode "cargo run" "Cargo.toml") - (def-docset! rust-mode ("Rust"))) + (def-builder! toml-mode "cargo run" "Cargo.toml")) (use-package flycheck-rust :after rust-mode) diff --git a/modules/module-scala.el b/modules/module-scala.el index 065ab2353..fdd91fe23 100644 --- a/modules/module-scala.el +++ b/modules/module-scala.el @@ -3,9 +3,7 @@ (use-package scala-mode :mode "\\.s\\(cala\\|bt\\)$" :init (add-hook 'scala-mode-hook 'turn-on-eldoc-mode) - :config - (def-company-backend! scala-mode '(ensime-company (company-yasnippet))) - (def-docset! scala-mode ("Scala"))) + :config (def-company-backend! scala-mode '(ensime-company (company-yasnippet)))) (use-package sbt-mode :after scala-mode) diff --git a/modules/module-swift.el b/modules/module-swift.el index 97e9fbeb2..fa39ec8fb 100644 --- a/modules/module-swift.el +++ b/modules/module-swift.el @@ -6,7 +6,7 @@ :init (add-hook 'swift-mode-hook 'flycheck-mode) :config (def-company-backend! swift-mode (sourcekit yasnippet)) - (def-docset! swift-mode ("Swift")) + (def-docset! swift-mode "swift") (def-repl! swift-mode swift-mode-run-repl) ; TODO test this (after! flycheck (push 'swift flycheck-checkers))) diff --git a/modules/module-text.el b/modules/module-text.el index 4884e4b10..2bd617cf2 100644 --- a/modules/module-text.el +++ b/modules/module-text.el @@ -12,7 +12,6 @@ markdown-gfm-additional-languages '("sh")) :config - (def-docset! markdown-mode ("Markdown")) (map! :map markdown-mode-map "" nil "" nil diff --git a/private/my-bindings.el b/private/my-bindings.el index 9716bd5bb..95db3347c 100644 --- a/private/my-bindings.el +++ b/private/my-bindings.el @@ -63,7 +63,7 @@ :m "M-k" 'doom/multi-previous-line :n "M-r" 'doom:eval-buffer :v "M-r" 'doom:eval-region - :ni "" 'doom/dash-at-pt + :ni "" 'doom:docs-lookup ;; Textmate-esque indent shift left/right :i "M-]" 'doom/smart-indent :i "M-[" 'doom/dumb-dedent