-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhelm-tide-nav.el
34 lines (31 loc) · 1.5 KB
/
helm-tide-nav.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
;;; helm-tide-nav.el --- blah blah -*- lexical-binding: t -*-
(defun helm-tide-nav ()
(interactive)
(helm :sources 'helm-source-tide-nav
:buffer "*helm tide nav*"))
(defun helm-tide-nav-fetch ()
(with-helm-current-buffer ;; very important otherwise tide will run on a nil buffer and it will call global tsserver
(let ((response (tide-command:navto helm-pattern)))
(tide-on-response-success response
(when-let ((navto-items (plist-get response :body))
(cutoff (length (tide-project-root))))
(setq navto-items (funcall tide-navto-item-filter navto-items))
(seq-map (lambda (navto-item)
(cons
(format "%s: %s"
;; (car (reverse (split-string (plist-get navto-item :file) "\\/")))
(substring (plist-get navto-item :file) cutoff)
(plist-get navto-item :name))
navto-item))
navto-items))))))
;;(:name ResizeQuality :kind type :isCaseSensitive :json-false :matchKind
;; prefix :file
;; /home/thanh/git/vpl-backend/node_modules/typescript/lib/lib.dom.d.ts :start
;; (:line 20027 :offset 1) :end (:line 20027 :offset 62) :kindModifiers declare)
(defvar helm-source-tide-nav
(helm-build-sync-source "Project Symbols"
:candidates #'helm-tide-nav-fetch
:action #'tide-jump-to-filespan
;; :action (lambda (cdd) (message "%s" cdd))
:volatile t
:requires-pattern 3))