diff options
author | Federico Tedin <federicotedin@gmail.com> | 2018-10-26 13:16:50 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2018-10-26 13:16:50 -0400 |
commit | 8fffac14b19d375f774b835ea33ef8989300125d (patch) | |
tree | a70868fb5928796e8f2522bf9dc13a0072a8c88c /lisp/rect.el | |
parent | f172ceda8aa5011c1ab79d812f2374a1dbe7a3ef (diff) | |
download | emacs-8fffac14b19d375f774b835ea33ef8989300125d.tar.gz |
Subject: (mouse-drag-and-drop-region): Simplify and remove assumptions
* lisp/mouse.el (mouse-drag-and-drop-region): Use insert-for-yank for
insertion, remove rectangular-region-specific variables.
Use text-property-not-all.
* lisp/rect.el (rectangle-dimensions): New function.
(rectangle-position-as-coordinates): Use the usual 1-origin for lines.
Diffstat (limited to 'lisp/rect.el')
-rw-r--r-- | lisp/rect.el | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/lisp/rect.el b/lisp/rect.el index 48db4ffd8f4..6b6906ac893 100644 --- a/lisp/rect.el +++ b/lisp/rect.el @@ -170,21 +170,19 @@ The final point after the last operation will be returned." (defun rectangle-position-as-coordinates (position) "Return cons of the column and line values of POSITION. POSITION specifies a position of the current buffer. The value -returned is a cons of the current column of POSITION and its line -number." +returned has the form (COLUMN . LINE)." (save-excursion (goto-char position) (let ((col (current-column)) - (line (1- (line-number-at-pos)))) + (line (line-number-at-pos))) (cons col line)))) (defun rectangle-intersect-p (pos1 size1 pos2 size2) "Return non-nil if two rectangles intersect. POS1 and POS2 specify the positions of the upper-left corners of -the first and second rectangle as conses of their column and line -values. SIZE1 and SIZE2 specify the dimensions of the first and -second rectangle, as conses of their width and height measured in -columns and lines." +the first and second rectangles as conses of the form (COLUMN . LINE). +SIZE1 and SIZE2 specify the dimensions of the first and second +rectangles, as conses of the form (WIDTH . HEIGHT)." (let ((x1 (car pos1)) (y1 (cdr pos1)) (x2 (car pos2)) @@ -198,6 +196,16 @@ columns and lines." (<= (+ y1 h1) y2) (<= (+ y2 h2) y1))))) +(defun rectangle-dimensions (start end) + "Return the dimensions of the rectangle with corners at START +and END. The returned value has the form of (WIDTH . HEIGHT)." + (save-excursion + (let* ((height (1+ (abs (- (line-number-at-pos end) + (line-number-at-pos start))))) + (cols (rectangle--pos-cols start end)) + (width (abs (- (cdr cols) (car cols))))) + (cons width height)))) + (defun delete-rectangle-line (startcol endcol fill) (when (= (move-to-column startcol (if fill t 'coerce)) startcol) (delete-region (point) |