Skip to content

Commit fa2a008

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 7fb3e7e commit fa2a008

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
@@ -128,6 +128,99 @@ Suggested values are:
128128
"Return the path where Dash's docsets are stored."
129129
(expand-file-name helm-dash-docsets-path))
130130

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

0 commit comments

Comments
 (0)