Last active
April 6, 2016 06:38
-
-
Save timcharper/6200774 to your computer and use it in GitHub Desktop.
Tell ensime to use dash-at-point for scala-doc lookup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(add-to-list 'load-path "~/.emacs.d/vendor/dash-at-point/") | |
(require 'dash-at-point) | |
(defun dash-at-point/make-url (docset type member &optional delimiter) | |
"Returns dash url given docset (scala, java?), an ensime type and an ensime member" | |
(let ((member-suffix (if member (format "%s%s" (or delimiter ".") member) ""))) | |
(format "dash://%s:%s%s" docset type member-suffix))) | |
(defun dash-at-point/ensime-make-java-doc-url (ensime-type &optional member) | |
(let* ((type (ensime-type-full-name ensime-type)) | |
(sanitized-type (replace-regexp-in-string "^java\\.lang\\." "" type))) | |
(dash-at-point/make-url "java" | |
sanitized-type | |
(ensime-member-name member) | |
"%20"))) ;; dash javadoc sets do not index methods with owner Class prefix | |
(defun dash-at-point/ensime-make-scala-doc-url (type &optional member) | |
(dash-at-point/make-url "scala" | |
(ensime-type-full-name type) | |
(ensime-member-name member))) | |
(defun dash-at-point/browsable-url-p (s) | |
"Returns true if a url should be opened via OS url handler" | |
(cond ((not (stringp s)) nil) | |
((string-match "^file://" s) nil) | |
((string-match "^[a-z]+://" s) t))) | |
(defun dash-at-point/alist-replace (list name new-value) | |
"Replaces value for name in list. Does not mutate original list" | |
(let ((list-with-item-removed (delq (assoc name list) list))) | |
(append list-with-item-removed | |
(list (cons name new-value))))) | |
(eval-after-load 'ensime | |
'(progn | |
(setq ensime-doc-lookup-map | |
(dash-at-point/alist-replace ensime-doc-lookup-map | |
"^java\\." | |
'dash-at-point/ensime-make-java-doc-url)) | |
(setq ensime-doc-lookup-map | |
(dash-at-point/alist-replace ensime-doc-lookup-map | |
"^scala\\." | |
'dash-at-point/ensime-make-scala-doc-url)) | |
(defun ensime-http-url-p (s) | |
"Hack the ensime http predicate to treat dash urls as http, so | |
ensime will open said URL in the browser rather than in emacs." | |
(dash-at-point/browsable-url-p (s))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment