LoginSignup
7
2

More than 3 years have passed since last update.

yank 後にそれをインデント

Last updated at Posted at 2018-05-29

どうも yank (C-y) した後にそれをインデントする操作をよくやっているような気がしました。なのでそれら操作をくっつけてみました。とりあえず C-y キーにバインドして様子を見ていますが便利です。

~/.emacs.d/init.el
;; yank 後にインデント
(defun my-yank-and-indent-it ()
  "Yank and indent it."
  (interactive)
  (yank)
  (save-excursion
    (exchange-point-and-mark)
    (indent-region (point) (mark))))
(global-set-key (kbd "C-M-y") 'yank)                ; yank を C-M-y に移して
(global-set-key (kbd "C-y") 'my-yank-and-indent-it) ; 普通の yank に割り当てられているキーをこれに

(with-eval-after-load 'make-mode
    (define-key makefile-mode-map (kbd "C-y") 'yank))

2018/6/4 追記

Makefile でインデントするとコマンド行先頭のタブがなくなってしまいます。なので make-mode 時の C-y は普通の yank に設定しました。

2021/3/30 追記

遅ればせながらleaf.elを使い始めました。ということでleafを使った設定を書いておきます。

~/.emacs.d/init.el
(leaf yank-and-indent
  :init
  (defun yank-and-indent ()
    "Yank and indent it."
    (interactive)
    (yank)
    (save-excursion
      (exchange-point-and-mark)
      (indent-region (point) (mark))))
  :hook
  ((emacs-lisp-mode-hook ruby-mode-hook web-mode-hook) .
   (lambda ()
     (local-set-key (kbd "C-y") #'yank-and-indent)
     (local-set-key (kbd "C-M-y") #'yank))))

明示的に有効にするモードを指定するようにしました。:hookキーワードにモードフックのリストがありますのでそこで有効にしたいモードのフックを追加してください。関数名が変わっちゃってますがすいません、気分で変えました。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2