あれ、どうやったっけ

(たぶん)テキストサイト風blog。文が安定するまで書き直しあるからメンゴ。

companyのバックエンドの指定の仕方はそれか orz

複数のバックエンド使いたかったらくくってやればよかったんすね……あとmanual見てたら`prefixではなんか'stop返せとか書いてたんですがnil投げたら次行くとか。うんまだちゃんと調べてないね(ここ僕のメモ帳です)。

先日のpowershellクソ補完機能はこうなりますた orz 無理やりdabbrev-codeの結果入れんでもよかったんや

(autoload 'powershell "powershell-mode" nil t)
(add-hook 'powershell-mode-hook
          '(lambda ()
             (set (make-local-variable 'company-backends)
                  (append '((company-powershell company-files company-dabbrev-code))
                          company-backends))))

(setq-default ps-cache-save-path "~/.emacs.d/ps-cache")
(setq company-powershell-tags nil)

(defun company-powershell-tags-generate ()
  "generate powershell commmand cache, cache will used by company-powershell."
  (interactive)
  (let ((ps-out ""))
    (setq ps-out (shell-command-to-string
                  (concat "powershell -Nologo -Command \"Get-Command -Name * "
                          " -CommandType Alias,Function,Filter,Cmdlet"
                          " | Format-Wide -Property Name -Column 1\"")))
    (setq ps-out (string-trim ps-out))
    (with-temp-buffer
      (insert ps-out)
      (write-region (point-min) (point-max) ps-cache-save-path))))

(defun company-powershell-tags-reset ()
  "clear current powershell command candidates cache."
  (interactive)
  (setq company-powershell-tags nil))

(defun company-powershell (command &optional arg &rest ignored)
  (interactive (list 'interactive))
  (pcase command
    (`prefix (and (eq major-mode 'powershell-mode)
                  (company-grab-symbol)))
    (`candidates
     (let ((ps-out "") (final-completion-tags nil) (completion-ignore-case t))
       (when (not (file-exists-p ps-cache-save-path))
         (company-powershell-tags-generate))
       (when (eq company-powershell-tags nil)        
         (with-temp-buffer
           (insert-file-contents ps-cache-save-path)
           (setq ps-out (buffer-substring-no-properties (point-min) (point-max))))
         (setq company-powershell-tags (split-string ps-out)))
       (all-completions arg company-powershell-tags)))))

あと、shell-modeでpowershellしたときの補完が利かない奴と、powershell-modeでelectric効かないのなんとかしたい気もするがやるまでもない気もしてきた。