@@ -226,6 +226,16 @@ The hint will consist of the possible nouns that apply to the verb."
226
226
:type 'boolean
227
227
:group 'lispy )
228
228
229
+ (defcustom lispy-completion-method 'helm
230
+ " Method to select a candidate from a list of strings."
231
+ :type '(choice
232
+ ; ; sensible choice for many tags
233
+ (const :tag " Helm" helm)
234
+ ; ; `ido-vertical-mode' is highly recommended here
235
+ (const :tag " Ido" ido)
236
+ ; ; `icomplete-mode' and `icy-mode' will affect this
237
+ (const :tag " Default" default )))
238
+
229
239
(defface lispy-command-name-face
230
240
'((t (:inherit font-lock-function-name-face )))
231
241
" Face for Elisp commands."
@@ -4128,25 +4138,28 @@ For example, a `setq' statement is amended with variable name that it uses."
4128
4138
4129
4139
(defun lispy--tag-name-and-file (x )
4130
4140
" Add file name to (`lispy--tag-name' X)."
4131
- (or
4132
- (catch 'break
4133
- (cons
4134
- (concat
4135
- (lispy--pad-string
4136
- (lispy--tag-name x)
4137
- (nth 1 lispy-helm-columns))
4138
- (make-string (- (nth 2 lispy-helm-columns)
4139
- (nth 1 lispy-helm-columns))
4140
- ?\ )
4141
- (let ((v (nth 4 x)))
4142
- (file-name-nondirectory
4143
- (cond ((overlayp v)
4144
- (buffer-file-name (overlay-buffer v)))
4145
- ((vectorp v)
4146
- (aref v 2 ))
4147
- (t (error " Unexpected " ))))))
4148
- (cdr x)))
4149
- x))
4141
+ (if (and (eq lispy-completion-method 'ido )
4142
+ (not (bound-and-true-p ido-vertical-mode)))
4143
+ x
4144
+ (or
4145
+ (catch 'break
4146
+ (cons
4147
+ (concat
4148
+ (lispy--pad-string
4149
+ (lispy--tag-name x)
4150
+ (nth 1 lispy-helm-columns))
4151
+ (make-string (- (nth 2 lispy-helm-columns)
4152
+ (nth 1 lispy-helm-columns))
4153
+ ?\ )
4154
+ (let ((v (nth 4 x)))
4155
+ (file-name-nondirectory
4156
+ (cond ((overlayp v)
4157
+ (buffer-file-name (overlay-buffer v)))
4158
+ ((vectorp v)
4159
+ (aref v 2 ))
4160
+ (t (error " Unexpected " ))))))
4161
+ (cdr x)))
4162
+ x)))
4150
4163
4151
4164
(defun lispy--pad-string (str n )
4152
4165
" Make STR at most length N."
@@ -4861,34 +4874,43 @@ Try to refresh if nil is returned."
4861
4874
(defun lispy--select-candidate (candidates action )
4862
4875
" Select from CANDIDATES list with `helm' .
4863
4876
ACTION is called for the selected candidate."
4864
- (require 'helm-help )
4865
- ; ; allows restriction with space
4866
- (require 'helm-match-plugin )
4867
- (let (helm-update-blacklist-regexps)
4868
- (helm :sources
4869
- `((name . " semantic tags" )
4870
- (candidates . ,(mapcar
4871
- (lambda (x )
4872
- (if (listp x)
4873
- (if (stringp (cdr x))
4874
- (cons (cdr x) (car x))
4875
- (cons (car x) x))
4876
- x))
4877
- candidates))
4878
- (action . , action ))
4879
- :preselect
4880
- (let ((stag (semantic-current-tag ))
4881
- (tag (ignore-errors
4882
- (lispy--current-tag))))
4883
- (if tag
4884
- (if (eq (semantic-tag-class
4885
- stag)
4886
- 'function )
4887
- (format " \\ _<%s \\ _>"
4888
- (semantic-tag-name stag))
4889
- tag)
4890
- " " ))
4891
- :buffer " *lispy-goto*" )))
4877
+ (if (eq lispy-completion-method 'helm )
4878
+ (progn
4879
+ (require 'helm-help )
4880
+ ; ; allows restriction with space
4881
+ (require 'helm-match-plugin )
4882
+ (let (helm-update-blacklist-regexps)
4883
+ (helm :sources
4884
+ `((name . " semantic tags" )
4885
+ (candidates . ,(mapcar
4886
+ (lambda (x )
4887
+ (if (listp x)
4888
+ (if (stringp (cdr x))
4889
+ (cons (cdr x) (car x))
4890
+ (cons (car x) x))
4891
+ x))
4892
+ candidates))
4893
+ (action . , action ))
4894
+ :preselect
4895
+ (let ((stag (semantic-current-tag ))
4896
+ (tag (ignore-errors
4897
+ (lispy--current-tag))))
4898
+ (if tag
4899
+ (if (eq (semantic-tag-class
4900
+ stag)
4901
+ 'function )
4902
+ (format " \\ _<%s \\ _>"
4903
+ (semantic-tag-name stag))
4904
+ tag)
4905
+ " " ))
4906
+ :buffer " *lispy-goto*" )))
4907
+ (let ((res
4908
+ (funcall
4909
+ (if (eq lispy-completion-method 'ido )
4910
+ #'ido-completing-read
4911
+ #'completing-read )
4912
+ " tag " (mapcar #'car candidates) nil t )))
4913
+ (funcall action (assoc res candidates)))))
4892
4914
4893
4915
(defun lispy--action-jump (tag )
4894
4916
" Jump to TAG."
0 commit comments