2019年2月26日火曜日

Emacsの補完で使ってるyasnippet見直し?[0708up]

Debian上のエディタは、emacs(26.1)をメインにしている。 最近、expandregion, smartparens, yasnippet, companyが うまく機能してないように感じ始めた。

companyに続いて yasnippet を見直してみた。

ただ無知なだけかもしれないが、 smartparensと、特にyasnippetの `<` で始まるやつとかが困る(追記:解決かも)。
[201904] 間違ってた。‘org-insert-structure-template’ というやつだった。

知らないうちに後側の括弧が追加されるとかも。

今回は、 ivy-yasnippets を使って ivy-mode配下でsnippetの一覧リストから絞り込むようにしてみた。逃げた設定かも。

previewを無効にした方がいい感じ、と思うが、続けてみないと。

companyからyasnippetを除外するかは、今後判断。

(use-package yasnippet :ensure t
 :diminish
 ;; :after (counsel)
 :after ivy ;; [201904]
 :bind (
  :map yas-minor-mode-map
    ("C-c s i" . yas-insert-snippet)  ; 既存へ挿入
    ("C-c s n" . yas-new-snippet)     ; 新規作成
    ("C-c s v" . yas-visit-snippet-file)  ; 既存の閲覧編集
    ("C-c s l" . yas-describe-tables) ; 選択可能なスニペットの一覧表示
    ("C-c s g" . yas-reload-all))
 :hook ((prog-mode . yas-minor-mode)
        (markdown-mode . yas-minor-mode)
        (rst-mode . yas-minor-mode)
        (org-mode . yas-minor-mode))
 :config
 (yas-reload-all) ;;[201904]
 (yas-minor-mode) ;;[201904]
 ;; (setq yas-snippet-dirs '("~/.emacs.d/mysnippets")) ;;[201907]
 ;;  Original value ("/home/hogehoge/.emacs.d/snippets")
 ;;  に戻す。別ディレクトだと、うまくいかない。
 (use-package yasnippet-snippets :ensure t) ;; mainのdirsは自動設定

 ;; ivy-yasnippets : call ivy-yasnippet in yas-minor-mode.
 (use-package ivy-yasnippet :ensure t
  :bind ("C-c y s" . ivy-yasnippet)
  :config
   (setq ivy-yasnippet-expand-keys "smart") ; nil "always" , "smart"
   ; https://github.com/seagle0128/.emacs.d/blob/master/lisp/init-ivy.el
   (advice-add #'ivy-yasnippet--preview :override #'ignore)
 )
; こいつをdataに入れれば、indentが反映される。
; # expand-env: ((yas-indent-line 'fixed) (yas-wrap-around-region 'nil))
)

[20190310] org-modeで、source blocks(babel)を挿入する場合は、yasnippetを使わずに、 Template expansion for Org structure を使えば良いようだ。 ここを 見付けられたのがラッキーだった。 defaultでは読み込みされないというような記事も見掛けたような気がする。

(use-package org-tempo :ensure nil
  ;; C-c C-, (org-insert-structure-template)
  :defer t
  :after org
  :config
  (add-to-list 'org-structure-template-alist '("R" . "src R"))
)

yasnippet-snippetsのorg-modeのキーの設定を書き直せば良いのだが、 updateされる毎に作業するのは??なので、こちらのキーバインドを覚えることにする。

[201904] org-modeのブロックは、hydraでメニュー化した方がよさそう。 ここをコピペ修正すればすぐ使えるかも。

0 件のコメント:

コメントを投稿

麻のボディタオル

2018年の秋(まだ、自転車を封印してない)、 近江上布伝統産業会館 で、興味からボディタオルを購入した。 お、よかった。: 自然派パン工房 ふるさとの道 ほぼ毎日風呂で使ってきて、ついに寿命がきたようだ。 お店の方に、「糸が痩せて破れてくる」まで使える、と...