[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/sketch-mode 0005a3a 27/38: Add sketch-mapcons function
From: |
ELPA Syncer |
Subject: |
[elpa] externals/sketch-mode 0005a3a 27/38: Add sketch-mapcons function (refactor sketch--circle-radius) |
Date: |
Wed, 15 Sep 2021 16:57:38 -0400 (EDT) |
branch: externals/sketch-mode
commit 0005a3adbc8ee355a96a2eb6f73485b74d8360c7
Author: Daniel Nicolai <dalanicolai@gmail.com>
Commit: Daniel Nicolai <dalanicolai@gmail.com>
Add sketch-mapcons function (refactor sketch--circle-radius)
---
sketch-mode.el | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/sketch-mode.el b/sketch-mode.el
index 7c16703..d574b61 100644
--- a/sketch-mode.el
+++ b/sketch-mode.el
@@ -196,9 +196,29 @@ transient."
(,(kbd "C-c C-s") . sketch-transient))
(undo-tree-mode))
+(defun sketch-mapcons (fn &rest cons-cells)
+ "Apply FN to list of car's and cdr's of CONS-CELLS.
+Return a single cons cell."
+ (cons (apply fn (mapcar #'car cons-cells))
+ (apply fn (mapcar #'cdr cons-cells))))
+
+(defun sketch-norm (vec)
+ "Return norm of a vector.
+VEC should be a cons or a list containing only number elements."
+ (let ((sum-of-squares (if (consp vec)
+ (+ (expt (car vec) 2)
+ (expt (cdr vec) 2))
+ (apply #'+
+ (mapcar (lambda (x) (* x x))
+ vec)))))
+ (expt sum-of-squares (/ 1.0 (if (consp vec)
+ 2
+ (length vec))))))
+
(defun sketch--circle-radius (start-coords end-coords)
- (sqrt (+ (expt (- (car end-coords) (car start-coords)) 2)
- (expt (- (cdr end-coords) (cdr start-coords)) 2))))
+ (sketch-norm
+ (sketch-mapcons #'- end-coords start-coords)))
+
(defun sketch--rectangle-coords (start-coords end-coords)
(let ((base-coords (cons (apply #'min (list (car start-coords) (car
end-coords)))
(apply #'min (list (cdr start-coords) (cdr
end-coords))))))
- [elpa] externals/sketch-mode 414ec7c 15/38: Don't print coordinates to message buffer, (continued)
- [elpa] externals/sketch-mode 414ec7c 15/38: Don't print coordinates to message buffer, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 87a0808 16/38: Fix file header, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 7583fcb 17/38: Fix variable names and implement svg lisp togglable side window, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 8b63796 19/38: First try: implement update for both type side-winows, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode ec35bb4 23/38: Add xml processing instruction and DOCTYPE element (see #4), ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 846f4a0 24/38: Implement layers (incl. reformat labels), ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 6433b20 30/38: Add circle/ellipse labels, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 406f51d 25/38: Fix undo-redo (i.e. switch to use undo-tree-mode), ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 9eb86b8 31/38: Add comments and cleanup, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode aaac04d 38/38: Fix indentation (simply auto indent complete file), ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 0005a3a 27/38: Add sketch-mapcons function (refactor sketch--circle-radius),
ELPA Syncer <=
- [elpa] externals/sketch-mode bebba7b 37/38: Fix add layer mechanism, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 19202c7 32/38: Implement first step for snippets/import, ELPA Syncer, 2021/09/15