smartparens

smartparens

smartparens

s-c にhydraを用意した。

(leaf *hydra-cursor
  :doc "Move cursor effectively"
  :bind ("s-c" . *hydra-cursor/body)
  :after smartparens
  :pretty-hydra
  ((:title "➤ Smart Cursor" :color blue :quit-key "q" :foreign-keys warn :separator "╌")
   ("Sexp"
    (("a" sp-beginning-of-sexp  "Begin" :exit nil)
     ("e" sp-end-of-sexp        "End" :exit nil)
     ("d" sp-down-sexp          "Down" :exit nil)
     ("u" sp-up-sexp            "Up" :exit nil)
     ("D" sp-backward-down-sexp "Down backward" :exit nil)
     ("U" sp-backward-up-sexp   "Up backward" :exit nil)
     ("n" sp-next-sexp          "Next" :exit nil)
     ("p" sp-previous-sexp      "Previous" :exit nil)
     ("F" sp-forward-sexp       "Forward" :exit nil)
     ("B" sp-backward-sexp      "Backward" :exit nil))
    "Symbol"
    (("f" sp-forward-symbol  "Forward" :exit nil)
     ("b" sp-backward-symbol "Backward" :exit nil))
    "Wrap"
    (("("  wrap-with-parens   "() parens" :exit nil)
     ("["  wrap-with-brackets "[] brackets" :exit nil)
     ("{"  wrap-with-braces   "{} braces" :exit nil)
     ("'"  wrap-with-single-quotes   "'' single quotes" :exit nil)
     ("\"" wrap-with-double-quotes   "\"\" double quotes" :exit nil))
    "Unwrap"
    ((","  sp-backward-unwrap-sexp "Backward" :exit nil)
     ("k"  sp-kill-sexp            "Kill" :exit nil)
     ("."  sp-forward-unwrap-sexp  "Forward" :exit nil))
    "Expand"
    (("+"  sp-forward-slurp-sexp "Expand" :exit nil)
     ("-"  sp-forward-barf-sexp  "Shrink" :exit nil)))))

正直、カーソルの移動系はnativeとの違いが分からないのが多かった。 以下は見たことがない動きなので使えるかも。

  • sp-next-sexp ( C-M-n にもバインド)
  • sp-previous-sexp ( =C-M-p にもバインド)

wrap-xxxはこちらdefcustom を使わせて頂いた。 C-SPC で選択した範囲を囲うのと併せて、使う機会は多そう。

参考