emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/rec-mode 9c6d63d 50/98: rec-mode: copy/kill fields and


From: Stefan Monnier
Subject: [elpa] externals/rec-mode 9c6d63d 50/98: rec-mode: copy/kill fields and records commands.
Date: Thu, 12 Nov 2020 13:18:38 -0500 (EST)

branch: externals/rec-mode
commit 9c6d63db42da3da8e88a1e8f4e55e08b378c5a21
Author: Jose E. Marchesi <jemarch@gnu.org>
Commit: Antoine Kalmbach <ane@iki.fi>

    rec-mode: copy/kill fields and records commands.
---
 etc/rec-mode.el | 77 +++++++++++++++++++++++++++++++++++++++------------------
 1 file changed, 53 insertions(+), 24 deletions(-)

diff --git a/etc/rec-mode.el b/etc/rec-mode.el
index e1f988d..e09b3e7 100644
--- a/etc/rec-mode.el
+++ b/etc/rec-mode.el
@@ -145,6 +145,10 @@ hidden by default in navigation mode.")
     (define-key map "\C-csq" 'rec-cmd-select-fast)
     (define-key map "\C-css" 'rec-cmd-select-sex)
     (define-key map "\C-cI" 'rec-cmd-show-info)
+    (define-key map "\C-cf\C-w" 'rec-cmd-kill-field)
+    (define-key map "\C-cf\M-w" 'rec-cmd-copy-field)
+    (define-key map "\C-cr\C-w" 'rec-cmd-kill-record)
+    (define-key map "\C-cr\M-w" 'rec-cmd-copy-record)
     (define-key map (kbd "TAB") 'rec-cmd-goto-next-field)
     (define-key map "\C-cb" 'rec-cmd-jump-back)
     (define-key map "\C-c\C-c" 'rec-finish-editing)
@@ -165,6 +169,12 @@ hidden by default in navigation mode.")
     (define-key map "t" 'rec-cmd-show-type)
     (define-key map "m" 'rec-cmd-trim-field-value)
     (define-key map "c" 'rec-cmd-compile)
+    (define-key map "f\C-w" 'rec-cmd-kill-field)
+    (define-key map "f\M-w" 'rec-cmd-copy-field)
+    (define-key map "r\C-w" 'rec-cmd-kill-record)
+    (define-key map "r\M-w" 'rec-cmd-copy-record)
+    (define-key map "f\C-w" 'rec-cmd-kill-field)
+    (define-key map "f\M-w" 'rec-cmd-copy-field)
     (define-key map "sq" 'rec-cmd-select-fast)
     (define-key map "ss" 'rec-cmd-select-sex)
     (define-key map "\C-ct" 'rec-find-type)
@@ -1676,22 +1686,6 @@ will be used for fields of any type."
     (when pos
       (goto-char pos))))
 
-(defun rec-kill-field ()
-  "Kill the current field"
-  (interactive)
-  (let ((begin-pos (rec-beginning-of-field-pos))
-        (end-pos (rec-end-of-field-pos)))
-    (when (and begin-pos end-pos)
-      (kill-region begin-pos end-pos))))
-
-(defun rec-copy-field ()
-  "Copy the current field"
-  (interactive)
-  (let ((begin-pos (rec-beginning-of-field-pos))
-        (end-pos (rec-end-of-field-pos)))
-    (when (and begin-pos end-pos)
-      (copy-region-as-kill begin-pos end-pos))))
-
 (defun rec-delete-field ()
   "Delete the current field"
   (interactive)
@@ -2001,14 +1995,49 @@ This command is especially useful with enumerated 
types."
         (rec-unfold-field)
       (rec-fold-field))))
 
-;; (defun rec-cmd-create-new-record ()
-;;   "Create a new record with some default fields in the current
-;; record set."
-;;   (interactive)
-;;   (let ((key (rec-key))
-;;         (mandatory (rec-mandatory-fields))
-;;         fields record)
-;;     (when (not (member key mandatory))
+(defun rec-cmd-kill-field ()
+  "Kill the current field"
+  (interactive)
+  (let ((begin-pos (rec-beginning-of-field-pos))
+        (end-pos (rec-end-of-field-pos)))
+    (if (and begin-pos end-pos)
+        (kill-region begin-pos end-pos)
+      (message "Not in a field"))))
+
+(defun rec-cmd-copy-field ()
+  "Copy the current field"
+  (interactive)
+  (let ((begin-pos (rec-beginning-of-field-pos))
+        (end-pos (rec-end-of-field-pos)))
+    (if (and begin-pos end-pos)
+        (progn
+          (copy-region-as-kill begin-pos end-pos)
+          (message "Field copied to kill buffer"))
+      (message "Not in a field"))))
+
+(defun rec-cmd-kill-record ()
+  "Kill the current record"
+  (interactive)
+  (let ((begin-pos (rec-beginning-of-record-pos))
+        (end-pos (rec-end-of-record-pos)))
+    (if (and begin-pos end-pos)
+        (progn
+          (when (not (equal begin-pos (point-min)))
+            ;; Delete the newline before the record as well.
+            (setq begin-pos (- begin-pos 1)))
+          (kill-region begin-pos end-pos))
+      (message "Not in a record"))))
+
+(defun rec-cmd-copy-record ()
+  "Copy the current record"
+  (interactive)
+  (let ((begin-pos (rec-beginning-of-record-pos))
+        (end-pos (rec-end-of-record-pos)))
+    (if (and begin-pos end-pos)
+        (progn
+          (copy-region-as-kill begin-pos end-pos)
+          (message "record copied to kill buffer"))
+      (message "Not in a record"))))
 
 ;;;; Definition of modes
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]