[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/csv-mode 1aaa593 16/34: Fix csv-mode to delete its own
From: |
Stefan Monnier |
Subject: |
[elpa] externals/csv-mode 1aaa593 16/34: Fix csv-mode to delete its own overlays only |
Date: |
Sun, 29 Nov 2020 18:46:15 -0500 (EST) |
branch: externals/csv-mode
commit 1aaa593508563dc91d118608c519360b0adacfc3
Author: Leo Liu <sdl.web@gmail.com>
Commit: Leo Liu <sdl.web@gmail.com>
Fix csv-mode to delete its own overlays only
* csv-mode/csv-mode.el (csv--make-overlay, csv--delete-overlay): New
functions.
(csv-align-fields, csv-unalign-fields, csv-transpose): Use them.
---
csv-mode.el | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/csv-mode.el b/csv-mode.el
index b61fe67..8aa4ad9 100644
--- a/csv-mode.el
+++ b/csv-mode.el
@@ -4,7 +4,7 @@
;; Author: "Francis J. Wright" <F.J.Wright@qmul.ac.uk>
;; Time-stamp: <23 August 2004>
-;; Version: 1.5
+;; Version: 1.6
;; Keywords: convenience
;; This package is free software; you can redistribute it and/or modify
@@ -957,6 +957,16 @@ The fields yanked are those last killed by
`csv-kill-fields'."
;;; Aligning fields
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun csv--make-overlay (beg end &optional buffer front-advance rear-advance
props)
+ (let ((o (make-overlay beg end buffer front-advance rear-advance)))
+ (overlay-put o 'csv t)
+ (while props
+ (overlay-put o (pop props) (pop props)))
+ o))
+
+(defun csv--delete-overlay (o)
+ (and (overlay-get o 'csv) (delete-overlay o)))
+
(defun csv--column-widths ()
(let ((widths '()))
;; Construct list of column widths:
@@ -1068,9 +1078,8 @@ If there is no selected region, default to the whole
buffer."
;; in Emacs 21.3, neighbouring overlays
;; conflict, so use the following only
;; with hard alignment:
- (let ((ol (make-overlay (point) (1+ (point)) nil t)))
- (overlay-put ol 'invisible t)
- (overlay-put ol 'evaporate t))
+ (csv--make-overlay (point) (1+ (point)) nil t nil
+ '(invisible t evaporate t))
(forward-char))) ; skip separator
;; Soft alignment...
@@ -1083,10 +1092,9 @@ If there is no selected region, default to the whole
buffer."
(when (> left-padding 0)
;; Display spaces before first field
;; by overlaying first character:
- (overlay-put
- (make-overlay beg (1+ beg))
- 'before-string
- (make-string left-padding ?\ )))
+ (csv--make-overlay
+ beg (1+ beg) nil nil nil
+ `(before-string ,(make-string left-padding ?\ ))))
;; Display separator as spaces:
(with-silent-modifications
(put-text-property
@@ -1097,7 +1105,7 @@ If there is no selected region, default to the whole
buffer."
(setq column (+ column column-width align-padding)))
(t ;; Do not hide separators...
- (let ((overlay (make-overlay beg (point) nil nil t)))
+ (let ((overlay (csv--make-overlay beg (point) nil nil t)))
(when (> left-padding 0) ; Pad on the left.
;; Display spaces before field:
(overlay-put overlay 'before-string
@@ -1127,7 +1135,7 @@ If there is no selected region, default to the whole
buffer."
(list (region-beginning) (region-end))
(list (point-min) (point-max)))))
;; Remove any soft alignment:
- (mapc 'delete-overlay (overlays-in beg end))
+ (mapc #'csv--delete-overlay (overlays-in beg end))
(with-silent-modifications
(remove-list-of-text-properties beg end '(display)))
(when hard
@@ -1178,7 +1186,7 @@ When called non-interactively, BEG and END specify region
to process."
rows columns)
;; Remove soft alignment if necessary:
(when align
- (mapc 'delete-overlay align)
+ (mapc 'csv--delete-overlay align)
(setq align t))
(while (not (eobp))
(if (csv-not-looking-at-record)
- [elpa] branch externals/csv-mode created (now cbc9682), Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 0192416 05/34: Commentary fix for quarter-plane.el., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode b678d22 06/34: * csv-mode.el: Use lexical-binding. Remove redundant :group args., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 5b659a0 04/34: Commentary tweaks for csv-mode, ioccur, and nhexl-mode packages., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 3af03bd 07/34: * csv-mode.el: Bump version number., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode c1989f3 01/34: Add csv-mode.el., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode a3131af 03/34: csv-mode.el: Improve commentary., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 797c322 13/34: Fix column width calculation in cvs-mode.el, Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 1aaa593 16/34: Fix csv-mode to delete its own overlays only,
Stefan Monnier <=
- [elpa] externals/csv-mode 935deaf 10/34: * csv-mode (csv-mode-line-help-echo): Remove., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode f9df7cc 12/34: * csv-mode/cvs-mode.el (csv-set-comment-start): Handle nil., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 4b9b587 26/34: * packages/csv-mode/csv-mode.el: Fix incorrect truncation, Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 60e3253 02/34: * packages/csv-mode/csv-mode.el: Minor installation cleanups., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 046da98 11/34: (csv-mode): Set mode-line-position rather than mode-line-format., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 96f331b 08/34: * packages/csv-mode/csv-mode.el (csv-end-of-field): Don't skip TABs., Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 8c5ea6a 14/34: * csv-mode, landmark: Fix maintainer's email, Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 08ee1af 09/34: * csv-mode.el (csv-kill-one-field): Check for presence before deleting trailing, Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode 7e5e6bd 29/34: * packages/csv-mode/csv-mode.el (csv-align--cursor-truncated): Fix C-e case, Stefan Monnier, 2020/11/29
- [elpa] externals/csv-mode f5de789 27/34: * packages/csv-mode/csv-mode.el: More cvs-align-mode improvements, Stefan Monnier, 2020/11/29