joestar

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | LICENSE

commit f9c0a30b5552fa0c799e35cb6f1142057bb43c0f
parent 9a1b401ecccdc86a69b483fec1383dee2d5435b6
Author: Ryan Jeffrey <pwishie@gmail.com>
Date:   Mon, 27 May 2019 16:29:41 -0700

add marks

Diffstat:
Mjoestar.el | 152+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 149 insertions(+), 3 deletions(-)

diff --git a/joestar.el b/joestar.el @@ -48,6 +48,9 @@ (defvar joe-mark-8 nil "Mark 8.") (defvar joe-mark-9 nil "Mark 9.") +(defvar joe-lastmark nil "The last mark id.") +(defvar joe-nextmark nil "The next mark id.") + (make-variable-buffer-local 'joe-mark-0) (make-variable-buffer-local 'joe-mark-1) (make-variable-buffer-local 'joe-mark-2) @@ -59,6 +62,9 @@ (make-variable-buffer-local 'joe-mark-8) (make-variable-buffer-local 'joe-mark-9) +(make-variable-buffer-local 'joe-lastmark) +(make-variable-buffer-local 'joe-nextmark) + ;; TODO function does not work (defun joe/setmark (sid) "Set the mark SID manually." @@ -116,8 +122,15 @@ (define-key joe-map (kbd "C-k /") (kbd "C-k C-/")) (define-key joe-map (kbd "C-k C-w") '(lambda (file-path) "Writes the region to FILE-PATH." - (write-region (region-beginning) (region-end) file-path))) ; TODO test - (define-key joe-map (kbd "C-k w") (kbd "C-k C-w")) + (interactive "FName of file to write (C-k h for help): ") + (write-region (region-beginning) (region-end) file-path))) ; TODO contextual K-h keybind, and save if no block + ;; had to define the lambda twice because (kbd C-k C-w) wasn't working for some reason + (define-key joe-map (kbd "C-k w") '(lambda (file-path) + "Writes the region to FILE-PATH." + (interactive "FName of file to write (C-k h for help): ") + (write-region (region-beginning) (region-end) file-path))) + + ;; goto (define-key joe-map (kbd "C-z") 'backward-word) @@ -302,10 +315,143 @@ ;; in joe, the cursor does not change when the comand is appended. (define-key joe-map (kbd "<escape> !") '(lambda (com) "Appends the output of shell command COM to current buffer." - (interactive "Program to run: ") + (interactive "sProgram to run: ") (append-to-buffer (shell-command-to-string com)))) ; TODO test, (define-key joe-map (kbd "C-k C-z") 'suspend-emacs) (define-key joe-map (kbd "C-k z") (kbd "C-k C-z")) + + ;; bookmark + (define-key joe-map (kbd "<escape> <escape>") '(lambda (sid) + "Set mark SID." + (interactive "sSet Mark (0-9): ") + (let ((id (string-to-number sid))) + (cond + ((= id 0) + (progn + (setq joe-mark-0 (point-marker)) + (message "Mark 0 set."))) + ((= id 1) + (progn + (setq joe-mark-1 (point-marker)) + (message "Mark 1 set."))) + ((= id 2) + (progn + (setq joe-mark-2 (point-marker)) + (message "Mark 2 set."))) + ((= id 3) + (progn + (setq joe-mark-3 (point-marker)) + (message "Mark 3 set."))) + ((= id 4) + (progn + (setq joe-mark-4 (point-marker)) + (message "Mark 4 set."))) + ((= id 5) + (progn + (setq joe-mark-5 (point-marker)) + (message "Mark 5 set."))) + ((= id 6) + (progn + (setq joe-mark-6 (point-marker)) + (message "Mark 6 set."))) + ((= id 7) + (progn + (setq joe-mark-7 (point-marker)) + (message "Mark 7 set."))) + ((= id 8) + (progn + (setq joe-mark-8 (point-marker)) + (message "Mark 8 set."))) + ((= id 9) + (progn + (setq joe-mark-9 (point-marker)) + (message "Mark 9 set."))))))) + (define-key joe-map (kbd "<escape> 0") '(lambda () + "Goto mark 0" + (interactive) + (if joe-mark-0 + (progn + (push-mark) + (goto-char joe-mark-0)) + (error "Mark 0 not set")))) + (define-key joe-map (kbd "<escape> 1") '(lambda () + "Goto mark 1" + (interactive) + (if joe-mark-1 + (progn + (push-mark) + (goto-char joe-mark-1)) + (error "Mark 1 not set")))) + (define-key joe-map (kbd "<escape> 2") '(lambda () + "Goto mark 2" + (interactive) + (if joe-mark-2 + (progn + (push-mark) + (goto-char joe-mark-2)) + (error "Mark 2 not set")))) + (define-key joe-map (kbd "<escape> 3") '(lambda () + "Goto mark 3" + (interactive) + (if joe-mark-3 + (progn + (push-mark) + (goto-char joe-mark-3)) + (error "Mark 3 not set")))) + (define-key joe-map (kbd "<escape> 4") '(lambda () + "Goto mark 4" + (interactive) + (if joe-mark-4 + (progn + (push-mark) + (goto-char joe-mark-4)) + (error "Mark 4 not set")))) + (define-key joe-map (kbd "<escape> 5") '(lambda () + "Goto mark 5" + (interactive) + (if joe-mark-5 + (progn + (push-mark) + (goto-char joe-mark-5)) + (error "Mark 5 not set")))) + (define-key joe-map (kbd "<escape> 6") '(lambda () + "Goto mark 6" + (interactive) + (if joe-mark-6 + (progn + (push-mark) + (goto-char joe-mark-6)) + (error "Mark 6 not set")))) + (define-key joe-map (kbd "<escape> 7") '(lambda () + "Goto mark 7" + (interactive) + (if joe-mark-7 + (progn + (push-mark) + (goto-char joe-mark-7)) + (error "Mark 7 not set")))) + (define-key joe-map (kbd "<escape> 8") '(lambda () + "Goto mark 8" + (interactive) + (if joe-mark-8 + (progn + (push-mark) + (goto-char joe-mark-8)) + (error "Mark 8 not set")))) + (define-key joe-map (kbd "<escape> 9") '(lambda () + "Goto mark 9" + (interactive) + (if joe-mark-9 + (progn + (push-mark) + (goto-char joe-mark-9)) + (error "Mark 9 not set")))) + (define-key joe-map (kbd "C-k C--") '(lambda () + "Move point to next mark." + (interactive))) + + ;; buffer + joe-map) "The joestar-mode keymaps.")