hungry-backspace / hungry-delete

global-set-keyして使ってたんですが,ちょっと理由が理解できないのですが,ミニバッファがおかしくなったので止めました.検索してるときに,バックスペースとか入れると検索を抜けちゃう現象が….

諦めて,まじめにadd-hookすることにしました.

(defun hungry-backspace (arg)
  "Deletes preceding character or all whitespaces."
  (interactive "*P")
  (let ((here (point)))
    (skip-chars-backward " \t")
    (if (/= (point) here)
        (delete-region (point) here)
      (delete-backward-char 1))))

(defun hungry-delete (arg)
  "Deletes following character or all white spaces."
  (interactive "*P")
  (let ((here (point)))
    (skip-chars-forward " \t\n")
    (if (/= (point) here)
        (delete-region (point) here)
      (delete-char 1))))

(defun hungry-keyboard (map)
  (define-key map [backspace] 'hungry-backspace)
  (define-key map [delete] 'hungry-delete)
  (define-key map "\C-d" 'hungry-delete))

(add-hook 'tuareg-mode-hook #'(lambda () (hungry-keyboard tuareg-mode-map)))
(add-hook 'ruby-mode-hook #'(lambda () (hungry-keyboard ruby-mode-map)))

というか,昨日の時点ではadd-hookすることを知らなかっただけなんですけど.まあ,他には1日使ってみて「global-set-keyはちょっと過激すぎるかも」と思ったのもありますが.

微妙にダサいですが,lambdaの前の#'の意味がわからないので,もういいや.