Created
September 10, 2021 19:23
-
-
Save pgdad/947ba37bd0506f395df739f1e1f4a33a to your computer and use it in GitHub Desktop.
emacs edit indirect use for cfn lambda
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defvar-local lainedev-edit-indirect-leading-spaces 0) | |
(defun lainedev--leading-spaces () | |
(interactive) | |
(let* ((current-line (thing-at-point 'line 't)) | |
(line-length (length current-line)) | |
(trimmed-line (replace-regexp-in-string "^ +" "" current-line)) | |
(trimmed-line-length (length trimmed-line))) | |
(- line-length trimmed-line-length))) | |
(defun lainedev--edit-indirect-cfn-create () | |
(goto-char (point-min)) | |
(let* ((parent-buffer (overlay-buffer edit-indirect--overlay)) | |
(leading-spaces (lainedev--leading-spaces)) | |
(regexp (concat "^" (make-string leading-spaces ? )))) | |
(with-current-buffer parent-buffer | |
(setq lainedev-edit-indirect-leading-spaces leading-spaces)) | |
(replace-regexp regexp "" nil (point-min) (point-max)))) | |
(add-hook 'edit-indirect-after-creation-hook 'lainedev--edit-indirect-cfn-create) | |
(defun lainedev--edit-indirect-cfn-after-commit (begin end) | |
(dbg "---------") | |
(dbg (format "begin/end %d/%d" begin end)) | |
(let* ((prefix (make-string lainedev-edit-indirect-leading-spaces ? )) | |
(replacement (concat prefix "\\&")) | |
(resulting-text | |
(replace-regexp-in-string "^.+" replacement | |
(buffer-substring-no-properties begin end))) | |
(moved-end (+ end (length resulting-text)))) | |
(goto-char begin) | |
(insert resulting-text) | |
(dbg (format "point/end %d/%d" (point) moved-end)) | |
(kill-region (point) moved-end))) | |
(defun dbg (message) | |
(with-current-buffer (get-buffer-create "*dbg*") | |
(insert message) | |
(insert "\n"))) | |
(add-hook 'edit-indirect-after-commit-functions 'lainedev--edit-indirect-cfn-after-commit) | |
(defun lainedev--edit-indirect-guess-python-mode (parent begin end) | |
(python-mode)) | |
(setq edit-indirect-guess-mode-function 'lainedev--edit-indirect-guess-python-mode) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment