;;; -*- lexical-binding: t -*-
-(defun my/comment-dwim (arg)
- "Toggles the comment on for the active region if present or the current line otherwise."
- (interactive "*p")
- (cond
- ((and mark-active transient-mark-mode)
- (let ((start (save-excursion (goto-char (region-beginning)) (line-beginning-position)))
- (end (save-excursion (goto-char (region-end)) (line-end-position))))
- (comment-or-uncomment-region start end)))
- (t
- (comment-or-uncomment-region (line-beginning-position) (line-end-position arg))
- (forward-line arg))))
-
(defun my/copy-line (arg)
"Copy the current line into the kill ring. With ARG copies that many lines."
(interactive "p")
(kill-ring-save start end)
(when at-eof
(kill-append "\n" t))
- (save-excursion
+ (save-mark-and-excursion
(forward-line)
(dotimes (ignored arg)
(yank)))
(kill-line arg))
(if (not (string-equal major-mode "fundamental-mode"))
(indent-for-tab-command)))
-
-(defun my/yank (arg)
- "If the text to be yanked has a newline then move to beginning of line before yanking. Otherwise same as normal `yank'."
- (interactive "*P")
- (advice-add 'insert-for-yank :around #'my/yank/advice)
- (unwind-protect
- (yank arg)
- (advice-remove 'insert-for-yank #'my/yank/advice)))
-
-(defun my/yank/advice (original-function string)
- (if (string-match-p "\n" string)
- (beginning-of-line))
- (funcall original-function string))