ac-nrepl icon indicating copy to clipboard operation
ac-nrepl copied to clipboard

ac-source-nrepl-vars conflict with yasnippet?

Open BlanceXR opened this issue 12 years ago • 3 comments

I am using yasnippet along with auto complete and ac-nrepl.

When I start a fresh emacs session, open my .clj file, type something like def, I see bunch of normal candidates and highlighted yasnippet's target. I can then tab to complete or ret to call yas-expand.

However, I noticed that after I start nrepl, and evaluate the (ns ...) form of my clj file, I can no longer see yasnippet's target in auto-complete lists.

I than found out that if I comment out (add-to-list 'ac-sources 'ac-source-nrepl-vars) in ac-nrepl-setup , the yasnippet's target appears again.

BlanceXR avatar Jun 01 '13 22:06 BlanceXR

Presumably you just need to make sure that yasnippet's completion source appears earlier in the ac-sources list. Since ac-nrepl-setup uses (add-to-list ...), the ac-nrepl sources will be added at the beginning of ac-sources. To override this, which I believe is a reasonable default behaviour, you can write code something like this:

(defun ensure-yasnippet-is-first-ac-source ()
  (when (memq 'ac-source-yasnippet ac-sources)
    (setq ac-sources
          (cons 'ac-source-yasnippet
                (remove 'ac-source-yasnippet ac-sources)))))
(add-hook 'nrepl-interaction-mode-hook 'ac-nrepl-setup)
(add-hook 'nrepl-interaction-mode-hook 'ensure-yasnippet-is-first-ac-source)
(add-hook 'nrepl-mode-hook 'ac-nrepl-setup)
(add-hook 'nrepl-mode-hook 'ensure-yasnippet-is-first-ac-source)

I haven't tested that code directly, but you get the general idea. :-)

purcell avatar Jun 02 '13 08:06 purcell

Thanks! I changed add-hook's order and It works great!

BlanceXR avatar Jun 02 '13 13:06 BlanceXR

autogenerated with https://github.com/MalloZup/doghub: issue inactive since 450 days. Please update the issue or close it

MalloZup avatar Aug 05 '19 21:08 MalloZup