;;; funcs.el --- Better Emacs Defaults Layer functions File ;; ;; Copyright (c) 2012-2016 Sylvain Benner & Contributors ;; ;; Author: Sylvain Benner ;; URL: https://github.com/syl20bnr/spacemacs ;; ;; This file is not part of GNU Emacs. ;; ;;; License: GPLv3 (defun spacemacs/smart-move-beginning-of-line (arg) "Move point back to indentation of beginning of line. Move point to the first non-whitespace character on this line. If point is already there, move to the beginning of the line. Effectively toggle between the first non-whitespace character and the beginning of the line. If ARG is not nil or 1, move forward ARG - 1 lines first. If point reaches the beginning or end of the buffer, stop there." (interactive "^p") (setq arg (or arg 1)) ;; Move lines first (when (/= arg 1) (let ((line-move-visual nil)) (forward-line (1- arg)))) (let ((orig-point (point))) (back-to-indentation) (when (= orig-point (point)) (move-beginning-of-line 1)))) (defun spacemacs/backward-kill-word-or-region (&optional arg) "Calls `kill-region' when a region is active and `backward-kill-word' otherwise. ARG is passed to `backward-kill-word' if no region is active." (interactive "p") (if (region-active-p) ;; call interactively so kill-region handles rectangular selection ;; correctly (see https://github.com/syl20bnr/spacemacs/issues/3278) (call-interactively #'kill-region) (backward-kill-word arg)))