Debian上のエディタに、emacs(26.1)をメインに使用している。 まあ、vimが周辺をサポートしているのだが。
org-modeでメモが主用途。それと、少し長めのpythonスクリプト。 素人なので、コピペ基本の設定。
最近、expandregion, smartparens, yasnippet, companyが うまく機能してないように感じ始めている。
なので、まず補完のcompanyを見直してみた。のだったが。
package managerは、use-package。ivy-mode + company 環境。
まず、eclipse,c,c++はやらないので、以下のようにbackendを変更しようとした。
;; https://github.com/company-mode/company-mode/issues/407 + others (setq company-backends '(company-ispell company-yasnippet (company-dabbrev-code company-gtags company-keywords) ; grouping分らん、 withとかなんとか ; company-keywords ; keywords by company default ; company-bbdb ; database for mail address...... ; company-gtags ; あまり使用感がない? company-files ; files & directory company-capf ; completion-at-point-functions ;company-dabbrev-code ; dabbrev for code ;company-oddmuse ; WikiWiki engine Oddmuse such as emacswiki.org ;company-abbrev ; 静的略称展開 company-dabbrev ; 動的略称展開 ))
だが、この設定はglobal-modeで有効になるようだが、 company-webでは反映されなかった。ようだ。 company-safe-backendsを使っているようで、 こいつは触らない方が良いみたい。
This variable may be risky if used as a file-local variable.
ただ既に、ispellが含まれてたりする。 標準に含まれてないbackendを使おうとする場合、 その作法というか、色々あるのかもしれない。あくまで想像だが。
なので、 パッケージに含まれる company-ispell と conpany-yasnippet を company-backend に 追加して、company-other-backend を指定する方法にしてみた。
;; C-h v company-backends から ;; ‘company-begin-backend’ can be used to start a specific backend, ;; ‘company-other-backend’ will skip to the next matching backend in the list.
現状、以下。
(use-package company :ensure t :diminish company-mode :bind ( ("C-c y /" . company-yasnippet) ;; [201907] ;; backend 切り替えできないので ; :map company-mode-map ; 通常 On なので注意 :map company-active-map ; 選択している最中 ("M-p" . nil) ; ミスタッチ予防 ("M-n" . nil) ([tab] . company-complete-common-or-cycle) ("C-n" . company-select-next) ("C-p" . company-select-previous) ("C-o" . company-other-backend) ;; 他のbackend候補を表示させる。firsrがispellだから。 ;; firstを変更するキーバインドが欲しいかも ("C-v" . company-next-page) ("M-v" . company-previous-page) ("C-s" . company-filter-candidates) ;; flx みたいに絞りこめる。 :map company-search-map ; company-filter-candidatesでの設定かと。 ("C-p" . company-select-previous) ("C-n" . company-select-next) ;("C-o" . company-other-backend) ; ダメ、機能しない。 ; これが使えると嬉しいかも。 ) :init (global-company-mode) :config ; optionの設定 (setq company-show-numbers nil ;; company-auto-expand t (20190410) company-auto-complete nil ;; (20190410) ;; company-transformers '( ;; company-sort-by-occurrence ;; company-sort-by-backend-importance ;; );; Original value was nil company-transformers nil ;; set nil for speed up company-selection-wrap-around t company-idle-delay 0.1 completion-ignore-case t company-dabbrev-downcase nil company-dabbrev-other-buffers t ; use only buffers with same major-mode for company-dabbrev ; company-minimum-prefix-length 3 ; 2文字ならyasnippetを直接 company-minimum-prefix-length 1 ; C-o で他の候補になるから。 company-selection-weap-around t company-tooltip-align-annotations t ; align to the right border ;; company-sort-by-occurrence t (20190410) company-tooltip-limit 10) (add-to-list 'company-backends 'company-yasnippet) (add-to-list 'company-backends 'company-ispell) ; start backend (setq company-begin-backend 'company-ispell) ; 普段はメモとかだからispellにしておく。 ; elpy-mode : firstはispellではない。companyを使ってない? ; web-mode : firstはispellのまま。 ; skip to the next matching backend in the list. (setq company-other-backend '(company-etags company-eclim company-bbdd company-xcode company-cmake company-oddmuse)) ; たまにhtmlを直接編集するからcompany-webを追加。 ; company-safe-backendsに追加されるが、company-web-htmlはリストにない。 ; [201907] うまく動いてないので、一旦削除。 ; ;(use-package company-web :ensure t ; :config ; (add-hook 'web-mode-hook ; (lambda () ; (add-to-list (make-local-variable 'company-backends) ; 'company-nxml) ; (add-to-list (make-local-variable 'company-backends) ; 'company-web-html) ; (add-to-list (make-local-variable 'company-backends) ; 'company-css) ; )) ; ) ; company-prescient レスポンスがかなり低下するので止め 20190414 ; company-flx うまく動かない。company-filter-candidatesでよしとする。 ; custom face ;; T510の貧相な発色にあわせてる。 (set-face-attribute 'company-tooltip nil :foreground "black" :background "gray75") (set-face-attribute 'company-tooltip-common nil :foreground "black" :background "gray55") (set-face-attribute 'company-tooltip-common-selection nil :foreground "white" :background "DodgerBlue4") (set-face-attribute 'company-tooltip-selection nil :foreground "black" :background "DodgerBlue3") (set-face-attribute 'company-preview nil :foreground "gray90" :background "RoyalBlue4" :underline t) (set-face-attribute 'company-preview-common nil :foreground "white" :background "DodgerBlue4" :underline t) (set-face-attribute 'company-scrollbar-fg nil :background "orange") (set-face-attribute 'company-scrollbar-bg nil :background "gray40") )
pythonには、elpyを使っている。elpy-modeでは elpy-module-companyが勝手に設定してくれるようで (https://github.com/jorgenschaefer/elpy/issues/1397)、 jedi-coreをemacs側にインストして、必要なpythonのモジュールをインストして環境を整えれば、まあ動いているようだ。
とりあえず、少しは良くなったみたい。
しかし、私には難しすぎるし時間がかかった。 smartparenとか、他にも調べたいのがあるが、ハードル高い。 しばらくこれで様子見か。
[201907] : 上記の設定は、デフォの設定であって、 modeに応じて変更させる時は、localな設定にするのかも、と試してみる。
(use-package company-web :ensure t :after company :hook ( (web-mode . (lambda () (add-to-list (make-local-variable 'company-safe-backends) '(company-web-html . "WEB")))) (css-mode . (lambda () (add-to-list (make-local-variable 'company-safe-backends) '(company-css . "CSS")))) ) )
ompany-safe-backends には追加されるようなので、一応継続。
調べながら使うのが基本なので、
問題にならなかったのだろう。ちゃんと調べないと、と反省。
GTAGS が無いとエラーになるので、面倒でも作成しないといけない。
きっと、設定方法があるのだろうけど。
0 件のコメント:
コメントを投稿