diff --git a/lisp/org-config/my-org.el b/lisp/org-config/my-org.el index 7713736..bf784c2 100644 --- a/lisp/org-config/my-org.el +++ b/lisp/org-config/my-org.el @@ -36,7 +36,7 @@ (require 'my-org-capture-templates) (require 'org-other-additions) -(require 'self-talk-mode) +(require 'self-chat-mode) (provide 'my-org) ;;; my-org.el ends here diff --git a/lisp/self-talk-mode.el b/lisp/self-chat-mode.el similarity index 71% rename from lisp/self-talk-mode.el rename to lisp/self-chat-mode.el index bc3e496..3e0103f 100644 --- a/lisp/self-talk-mode.el +++ b/lisp/self-chat-mode.el @@ -12,6 +12,8 @@ (setq font-lock-defaults '(self-chat-highlights))) (define-key self-chat-mode-map (kbd "RET") #'self-chat-insert-next) +(define-key self-chat-mode-map (kbd "DEL") #'delete-self-chat-line) +(define-key self-chat-mode-map (kbd "C-DEL") #'delete-self-chat-text) (defun self-chat-insert-next () (interactive) @@ -28,7 +30,34 @@ (insert "> ")) (defun chat-post () - (insert (alist-get self-chat-num self-chat-alist) ": ")) + (if-let ((name (alist-get self-chat-num self-chat-alist))) + (insert name ": "))) + +(defun delete-self-chat-text () + (interactive) + (beginning-of-line) + (search-forward ":") + (call-interactively #'forward-char) + (call-interactively #'set-mark-command) + (end-of-line) + (call-interactively #'kill-region)) + +(defun delete-self-chat-line () + (interactive) + (save-excursion + (call-interactively #'set-mark-command) + (beginning-of-line) + (call-interactively #'kill-ring-save)) + (cond ((= 0 (length (current-kill 0))) + (call-interactively #'backward-char)) + ((string-match-p "^> [A-z]*: $" (current-kill 0)) + (set-mark-command nil) + (previous-line) + (previous-line) + (end-of-line) + (call-interactively #'kill-region)) + (t + (call-interactively #'delete-backward-char)))) (defmacro define-users (list) `(progn @@ -42,7 +71,7 @@ :after-exit (chat-post)) "" ("RET" nil "Same") - ("TAB" (setq self-chat-num self-chat-last2) "Switch") + ("TAB" (when self-chat-last2 (setq self-chat-num self-chat-last2)) "Switch") ,@(let ((num 0)) (mapcar #'(lambda (triple) (let ((name (car triple)) @@ -74,4 +103,4 @@ ("Coop" "c" "cornsilk") ("Everyone" "e" "pale green"))) -(provide 'self-talk-mode) +(provide 'self-chat-mode)