Melhores listas de back-end da empresa

8

Sei que esse não é o melhor tipo de pergunta para a pilha ... mas não consigo pensar em outro lugar onde possa obter exposição suficiente.

Então, eu realmente gosto do modo empresa, mas às vezes é chato ter que mudar manualmente para o próximo back-end (empresa que tenta arduamente é útil aqui). Comecei a brincar com back-end agrupados e vejo um potencial incrível. Infelizmente, não estou feliz com tudo o que tentei até agora. Eu acho que isso pode ser melhor definido com ganchos para diferentes modos. Alguém tem algumas listas interessantes de back-end da empresa das quais eu poderia me inspirar?

Eu uso principalmente scripts python (elpy), javascript (modo js3), web (modo web) e shell, se isso ajudar.

aiguofer
fonte

Respostas:

13

Você pode definir um padrão e company-backends, em seguida, usar o gancho para anexar back-end diferentes ao modo diferente. Aqui está uma maneira de configurar no meu emacs.

;; set default `company-backends'
(setq company-backends
      '((company-files          ; files & directory
         company-keywords       ; keywords
         company-capf
         company-yasnippet
         )
        (company-abbrev company-dabbrev)
        ))

(add-hook 'python-mode-hook
          (lambda ()
            (add-to-list (make-local-variable 'company-backends)
                         'company-anaconda)))
(dolist (hook '(js-mode-hook
                js2-mode-hook
                js3-mode-hook
                inferior-js-mode-hook
                ))
  (add-hook hook
            (lambda ()
              (tern-mode t)

              (add-to-list (make-local-variable 'company-backends)
                           'company-tern)
              )))

;;;_. company-mode support like auto-complete in web-mode

;; Enable CSS completion between <style>...</style>
(defadvice company-css (before web-mode-set-up-ac-sources activate)
  "Set CSS completion based on current language before running `company-css'."
  (if (equal major-mode 'web-mode)
      (let ((web-mode-cur-language (web-mode-language-at-pos)))
        (if (string= web-mode-cur-language "css")
            (unless css-mode (css-mode))))))

;; Enable JavaScript completion between <script>...</script> etc.
(defadvice company-tern (before web-mode-set-up-ac-sources activate)
  "Set `tern-mode' based on current language before running `company-tern'."
  (if (equal major-mode 'web-mode)
      (let ((web-mode-cur-language (web-mode-language-at-pos)))
        (if (or (string= web-mode-cur-language "javascript")
               (string= web-mode-cur-language "jsx"))
            (unless tern-mode (tern-mode))
          ;; (if tern-mode (tern-mode))
          ))))
  • para o modo web, você também pode usar o pacote `company-web '.
  • ou shell script, existem outros pacotes compatíveis com a conclusão, você pode procurá-lo.
stardiviner
fonte
Awesome thanks! isso ajudou muito. Ajustei um pouco desde que gosto de usar elpy-company-backende gosto de company-yasnippetsmesclar com outros backends de conclusão de código. A única coisa que não consigo descobrir é como obter css-modee tern-modedesligar quando não estiver em suas respectivas tags.
aiguofer
1
Além disso, a pergunta que você fez também foi bastante útil.
aiguofer
Bom, você pode encontrar isso. grad pode ajudá-lo.
Stardiviner 23/10/2015