Daftar backend perusahaan terbaik

9

Saya tahu ini bukan jenis pertanyaan terbaik untuk tumpukan ... tapi saya tidak bisa memikirkan tempat lain di mana mungkin mendapatkan paparan yang cukup.

Jadi saya sangat suka mode perusahaan, tetapi kadang-kadang menjengkelkan harus beralih secara manual ke backend berikutnya (perusahaan-coba-keras berguna di sini). Saya mulai bermain-main dengan backend yang dikelompokkan, dan saya dapat melihat beberapa potensi yang luar biasa. Sayangnya, saya tidak senang dengan apa pun yang saya coba sejauh ini. Saya pikir ini mungkin lebih baik diatur dengan kait untuk berbagai mode. Adakah yang punya daftar backend perusahaan yang menarik yang bisa saya dapatkan inspirasi?

Saya terutama menggunakan python (elpy), javascript (js3-mode), web (web-mode) dan skrip shell jika itu membantu.

aiguofer
sumber

Jawaban:

14

Anda dapat mengatur default company-backends, lalu menggunakan kait untuk menambahkan backend yang berbeda ke mode yang berbeda. Inilah cara saya mengkonfigurasi emacs saya.

;; 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))
          ))))
  • untuk mode-web, Anda juga dapat menggunakan paket `company-web '.
  • atau skrip shell, ada paket lain yang mendukung penyelesaian, Anda dapat mencarinya.
stardiviner
sumber
Keren terima kasih! ini banyak membantu. Saya men-tweak sedikit karena saya suka menggunakan elpy-company-backenddan saya suka company-yasnippetsdigabungkan dengan backend penyelesaian kode lainnya. Satu hal yang saya tidak tahu adalah bagaimana mendapatkan css-modedan tern-modemematikan ketika tidak ada di tag masing-masing.
aiguofer
1
Selain itu, pertanyaan yang Anda ajukan juga cukup membantu.
aiguofer
Bagus kamu bisa menemukannya. Grad itu dapat membantu Anda.
stardiviner