[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/vlf 8a33dbf 036/310: Add something like edit minor mode
From: |
Stefan Monnier |
Subject: |
[elpa] externals/vlf 8a33dbf 036/310: Add something like edit minor mode. |
Date: |
Sat, 28 Nov 2020 00:32:42 -0500 (EST) |
branch: externals/vlf
commit 8a33dbfb899f4213bdfbd402fa3dcfe2b4a9f2c8
Author: Andrey Kotlarski <m00naticus@gmail.com>
Commit: Andrey Kotlarski <m00naticus@gmail.com>
Add something like edit minor mode.
---
vlfi.el | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 49 insertions(+), 1 deletion(-)
diff --git a/vlfi.el b/vlfi.el
index fa5ae7f..0f1bdec 100644
--- a/vlfi.el
+++ b/vlfi.el
@@ -71,6 +71,7 @@
(define-key map "<" (lambda () "Jump to beginning of file content."
(interactive)
(vlfi-insert-file buffer-file-name)))
+ (define-key map "e" 'vlfi-edit-mode)
map)
"Keymap for `vlfi-mode'.")
@@ -82,7 +83,9 @@
(make-local-variable 'vlfi-batch-size)
(make-local-variable 'vlfi-start-pos)
(make-local-variable 'vlfi-end-pos)
- (make-local-variable 'vlfi-file-size))
+ (make-local-variable 'vlfi-file-size)
+ ;; (vlfi-print-vars)
+ )
(defun vlfi-change-batch-size (decrease)
"Change the buffer-local value of `vlfi-batch-size'.
@@ -365,6 +368,51 @@ successful. Return nil if nothing found."
(or current-prefix-arg 1)))
(vlfi-re-search regexp count t))
+;;; editing
+(defvar vlfi-edit-mode-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map text-mode-map)
+ (define-key map "\C-c\C-c" 'vlfi-write)
+ (define-key map "\C-c\C-q" 'vlfi-discard-edit)
+ map)
+ "Keymap for `vlfi-edit-mode'.")
+
+(define-minor-mode vlfi-edit-mode
+ "Major mode for editing large file chunks." nil "[edit]"
+ vlfi-edit-mode-map
+ (if (or (not arg) (and (numberp arg)
+ (< arg 0)))
+ (progn (setq buffer-read-only t)
+ (set-buffer-modified-p nil)
+ (buffer-disable-undo))
+ (setq buffer-read-only nil)
+ (buffer-enable-undo)
+ (message (substitute-command-keys
+ "Editing: Type \\[vlfi-write] to write chunk \
+or \\[vlfi-discard-edit] to discard changes."))
+ (vlfi-print-vars)))
+
+(defun vlfi-print-vars ()
+ (message "vlfi-start-pos: %s; vlfi-end-pos: %s; \
+vlfi-batch-size: %s; vlfi-file-size: %s"
+ vlfi-start-pos vlfi-end-pos
+ vlfi-batch-size vlfi-file-size))
+
+(defun vlfi-write ()
+ "Write current chunk to file. May overwrite existing content."
+ (interactive)
+ (when (or (= (buffer-size) (- vlfi-end-pos vlfi-start-pos))
+ (y-or-n-p "Changed size of original chunk. \
+End of chunk will be garbled. Continue? "))
+ (write-region nil nil buffer-file-name vlfi-start-pos)
+ (vlfi-edit-mode -1)))
+
+(defun vlfi-discard-edit ()
+ "Discard edit and refresh chunk from file."
+ (interactive)
+ (vlfi-edit-mode -1)
+ (message "Switched to VLFI mode."))
+
(provide 'vlfi)
;;; vlfi.el ends here
- [elpa] externals/vlf 670561e 031/310: Optimize search a bit., (continued)
- [elpa] externals/vlf 670561e 031/310: Optimize search a bit., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf ab20671 033/310: Abstract batch overlapping during search and optimize a bit., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf e387ed5 035/310: Add forgotten local variable statement and documentation., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 0dd4ba8 014/310: Add regex search forward functionality., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 9e27aeb 021/310: Keep stable cursor position when moving through chunks., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 81e4fe1 016/310: Merge branch 'search' of https://github.com/m00natic/vlfi into search, Stefan Monnier, 2020/11/28
- [elpa] externals/vlf e43725e 007/310: Add autoload cookies to fix package installation., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 853386f 015/310: Add regex search forward functionality., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 2a7625a 024/310: Improve correctness of search forward., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf c36db11 034/310: Return correct search success status., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 8a33dbf 036/310: Add something like edit minor mode.,
Stefan Monnier <=
- [elpa] externals/vlf 56134a8 050/310: Make vlfi usable under GNU Emacs 23., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 24675d8 054/310: Manage modification times when attempting to save., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf c4f87f9 048/310: Move save interception to vlfi-mode., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf c14c7f0 058/310: Add shift forward of file contents when edited chunk grows in size., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf e115e7e 053/310: Add custom revert function., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 2edbb6b 004/310: Add vlf as an option when opening large files., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 80ca6b6 037/310: Fix vlfi invocation when prompted for large files., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 03f3233 039/310: Don't reinsert content and move on successful search., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf 2525ebf 049/310: Improvements to file saving., Stefan Monnier, 2020/11/28
- [elpa] externals/vlf cedd0b4 059/310: Fix spaces and indent., Stefan Monnier, 2020/11/28