Skip to content

Commit 0115965

Browse files
committed
Add helm-dash-set-apropriate-major-mode-docsets function
This function sets the helm-dash-docsets for buffer by looking up an appropriate list of docsets in the helm-dash-mode-docsets-alist. The intended usage is as follows: (with-eval-after-load "helm-dash-autoloads" (add-hook 'prog-mode-hook #'helm-dash-set-apropriate-major-mode-docsets) (add-hook 'conf-mode-hook #'helm-dash-set-apropriate-major-mode-docsets))
1 parent ba9df8c commit 0115965

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

helm-dash.el

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,99 @@ Suggested values are:
127127
"Return the path where Dash's docsets are stored."
128128
(expand-file-name helm-dash-docsets-path))
129129

130+
131+
(defun helm-dash-check-mode-docsets-alist (&optional silentp)
132+
(dolist (mode-docsets helm-dash-mode-docsets-alist)
133+
(setf (cdr mode-docsets)
134+
(let (ret)
135+
(dolist (docset (cdr mode-docsets))
136+
(if (helm-dash-docset-path docset)
137+
(push docset ret)
138+
(let ((docset-n (mapconcat #'identity (split-string docset) "_")))
139+
(if (helm-dash-docset-path docset-n)
140+
(push docset-n ret)
141+
(unless silentp
142+
(message "[helm-dash] Warning: Can not find %s docset!" docset))))))
143+
ret))))
144+
145+
(let ((js-cd '("JavaScript" "jQuery" "Bootstrap_4" "React" "Lo-Dash" "BackboneJS" "RequireJS" "EmberJS"
146+
"MongoDB" "NodeJS" "Meteor" "MooTools" "jQuery_UI" "jQuery_Mobile"))
147+
(c-cd '("OpenGL_4" "OpenGL_3" "OpenGL_2"))
148+
(css-cd '("CSS" "Bootstrap_4"))
149+
(ja-cd '("Java_SE8" "Java_EE7" "JavaFX" "Akka"))
150+
(erl-cd '("Erlang"))
151+
(pl-cd '("Perl"))
152+
(conf-cd '("Nginx" "Apache_HTTP_Server")))
153+
(defcustom helm-dash-mode-docsets-alist
154+
`((js-mode . ,js-cd) (js2-mode . ,js-cd)
155+
(coffee-mode . ("CoffeeScript" ,@js-cd))
156+
(typescript-mode . ("TypeScript" ,@js-cd))
157+
158+
,@(let (ret)
159+
(dolist (cf-m '(conf-mode conf-javaprop-mode conf-ppd-mode conf-colon-mode conf-space-mode
160+
conf-unix-mode conf-windows-mode conf-xdefaults-mode))
161+
(push (cons cf-m conf-cd) ret))
162+
ret)
163+
(sh-mode . ("Bash" "Vagrant" "Ansible" "Chef"))
164+
(tcl-mode . ("Tcl"))
165+
(dockerfile-mode . ("Docker"))
166+
167+
(css-mode . ,css-cd)
168+
(less-css-mode . ("Less" ,@css-cd))
169+
(sass-mode . ("Sass" ,@css-cd))
170+
171+
(html-mode . ("HTML" ,@css-cd))
172+
(haml-mode . ("Haml" "HTML" ,@css-cd))
173+
(markdown-mode . ("Markdown" "HTML" ,@css-cd))
174+
(jinja2-mode . ("Jinja" "HTML" ,@css-cd))
175+
(latex-mode . ("LaTeX"))
176+
177+
(c-mode . ("C" "GLib" ,@c-cd "OpenCV_C"))
178+
(c++-mode . ("C++" "Qt_5" "Boost" ,@c-cd "OpenCV_C++"))
179+
(rust-mode . ("Rust"))
180+
181+
(cmake-mode . ("CMake"))
182+
183+
(java-mode . (,@ja-cd "Android" "OpenCV_Java" "Spring_Framework"))
184+
(scala-mode . ("Scala" "Play_Scala" ,@ja-cd))
185+
(clojure-mode . ("Clojure" ,@ja-cd))
186+
187+
(csharp-mode . ("Mono" "Unity_3D" "NET_Framework"))
188+
(swift-mode . ("Swift"))
189+
(go-mode . ("Go"))
190+
191+
(php-mode . ("PHP" "Laravel" "Yii" "Symfony"))
192+
(ruby-mode . ("Ruby" "Ruby_on_Rails_5"))
193+
(python-mode . ("Python_3" "Django" "SQLAlchemy" "Flask" "Jinja" "NumPy" "SciPy" "OpenCV_Python"))
194+
(perl-mode . ,pl-cd)(cperl-mode . ,pl-cd)
195+
(lua-mode . ("Lua_5.1"))
196+
197+
(sql-mode . ("PostgreSQL" "MySQL"))
198+
199+
(erlang-mode . ,erl-cd)
200+
(elixir-mode . ("Elixir" ,@erl-cd))
201+
202+
(emacs-lisp-mode . ("Emacs_Lisp"))
203+
(lisp-mode . ("Common_Lisp"))
204+
(racket-mode . ("Racket"))
205+
(ess-mode . ("R"))
206+
207+
(haskell-mode . ("Haskell"))
208+
(ocaml-mode . ("OCaml")))
209+
"What docsets to activate for a major-mode."
210+
:group 'helm-dash
211+
:type '(alist :key-type (symbol :tag "Mode") :value-type (repeat :tag "Docsets" string))
212+
:set #'(lambda (sym val)
213+
(set-default sym val)
214+
(helm-dash-check-mode-docsets-alist))))
215+
216+
;;;###autoload
217+
(defun helm-dash-set-apropriate-major-mode-docsets ()
218+
(let ((docsets (cdr (assoc major-mode helm-dash-mode-docsets-alist))))
219+
(when docsets
220+
(setq-local helm-dash-docsets docsets))))
221+
222+
130223
(defun helm-dash-sql (db-path sql)
131224
"Run the sql command, parse the results and display errors"
132225
(helm-dash-parse-sql-results

0 commit comments

Comments
 (0)