Function: kotl-mode:kill-or-copy-region
kotl-mode:kill-or-copy-region is a byte-compiled function defined in
kotl-mode.el.
Signature
(kotl-mode:kill-or-copy-region START END COPY-FLAG &optional KILL-STR)
Source Code
;; Defined in ~/.emacs.d/elpa/hyperbole-20260414.325/kotl/kotl-mode.el
(defun kotl-mode:kill-or-copy-region (start end copy-flag &optional kill-str)
(when (and start end)
(let ((indent (kcell-view:indent))
subst-str)
;; Convert region to string
;; Convert all occurrences of newline + indent
;; to just newline, eliminating indent.
;; Then save to kill ring.
(setq subst-str (concat "\\([\n\r]\\)" (make-string indent ?\ ))
kill-str
(replace-regexp-in-string
subst-str "\\1" (buffer-substring start end)))
(unless copy-flag
;; If last char of region is a newline, then delete indent in
;; following line.
(delete-region
start (+ end (if (memq (char-after (1- (max start end)))
'(?\n ?\r))
indent
0))))))
(cond ((and copy-flag (not (eq copy-flag t)))
;; Return killed region as a string.
kill-str)
((not (and start end))
(signal 'mark-inactive nil))
(t (if (eq last-command 'kill-region)
(kill-append kill-str (< end start))
(kill-new kill-str))
(setq this-command 'kill-region)
(setq deactivate-mark t)
(when (and (not copy-flag) buffer-read-only)
(barf-if-buffer-read-only))
nil)))