[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/xpm bdff002 03/37: [xpm maint] Add debugging aid Emacs
From: |
Stefan Monnier |
Subject: |
[elpa] externals/xpm bdff002 03/37: [xpm maint] Add debugging aid Emacs Lisp file. |
Date: |
Sat, 28 Nov 2020 14:15:30 -0500 (EST) |
branch: externals/xpm
commit bdff00278166c38befc5e2bddd29d523b14e29af
Author: Thien-Thi Nguyen <ttn@gnu.org>
Commit: Thien-Thi Nguyen <ttn@gnu.org>
[xpm maint] Add debugging aid Emacs Lisp file.
* packages/xpm/flower.el: New file.
* packages/xpm/.elpaignore: Update.
---
.elpaignore | 1 +
flower.el | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 101 insertions(+)
diff --git a/.elpaignore b/.elpaignore
index 5c374b1..dd69f33 100644
--- a/.elpaignore
+++ b/.elpaignore
@@ -1 +1,2 @@
HACKING
+flower.el
diff --git a/flower.el b/flower.el
new file mode 100644
index 0000000..df154ba
--- /dev/null
+++ b/flower.el
@@ -0,0 +1,100 @@
+;;; flower.el --- can `xpm-raster' DTRT? -*- lexical-binding: t -*-
+
+;; Copyright (C) 2014 Free Software Foundation, Inc.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file helps visualize `xpm-raster' failure modes. Maybe one
+;; day it will be rendered useless by improvements to `xpm-raster'.
+;;
+;; NB: There is no `provide' form.
+;; NB: Loading munges the global keymap -- YHBW!
+
+;;; Code:
+
+(require 'xpm)
+(require 'xpm-m2z)
+(require 'cl-lib)
+
+(defun flower (&optional again)
+ "Stress `xpm-raster' in various ways."
+ (interactive "P")
+ (let ((buf (get-buffer "flower")))
+ (when buf (kill-buffer buf)))
+ (switch-to-buffer
+ (xpm-generate-buffer "flower" 99 99 2
+ '((" " . "green")
+ (".." . "yellow")
+ ("OO" . "red")
+ ("--" . "black"))))
+ (setq truncate-lines t)
+ (let* ((τ (* 4 2 (atan 1)))
+ (half (/ 99 2.0))
+ (mag-fns (vector (lambda (θ) (ignore θ) 1)
+ (lambda (θ) (sin θ))
+ (lambda (θ) (cos θ))
+ (lambda (θ) (sin (* 0.5 τ θ)))
+ (lambda (θ) (cos (* 0.5 τ θ)))
+ (lambda (θ) (sin (* 0.25 τ θ)))
+ (lambda (θ) (cos (* 0.25 τ θ)))
+ (lambda (θ) (sin (* τ θ)))
+ (lambda (θ) (cos (* τ θ)))))
+ (n-mag-fns (length mag-fns)))
+ (cl-flet
+ ((random-mag-fn () (aref mag-fns (random n-mag-fns))))
+ (let* ((x-mag-fn (random-mag-fn))
+ (y-mag-fn (random-mag-fn))
+ (form (if again
+ (get 'flower 'form)
+ (delete-dups
+ (if (zerop (random 5))
+ (let ((one (xpm-m2z-circle
+ half half
+ (random 42)))
+ (two (xpm-m2z-ellipse
+ half half
+ (random 42)
+ (random 42))))
+ (append one two))
+ (loop
+ for θ below τ by 0.003
+ collect
+ (cl-flet
+ ((at (f mfn)
+ (truncate (+ half (* 42 (funcall mfn θ)
+ (funcall f θ))))))
+ (cons (at 'cos x-mag-fn)
+ (at 'sin y-mag-fn)))))))))
+ (put 'flower 'form form)
+ (xpm-raster form "OO" ".."))))
+ (image-mode)
+ ;; strangely, image-mode screws up the markers, so we need to do
+ ;; this again if we want to do subsequent xpm-* access:
+ ;;+ (xpm-grok t)
+ t)
+
+;;;---------------------------------------------------------------------------
+;;; load-time actions
+
+(global-set-key [f9] 'flower)
+(global-set-key
+ [(meta f9)]
+ (lambda () (interactive)
+ (message "xpm-raster-inhibit-continuity-optimization now %s"
+ (setq xpm-raster-inhibit-continuity-optimization
+ (not xpm-raster-inhibit-continuity-optimization)))))
+
+;;; flower.el ends here
- [elpa] branch externals/xpm created (now d3cfb98), Stefan Monnier, 2020/11/28
- [elpa] externals/xpm d0df500 11/37: [xpm] Declare package keywords., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm 1431157 09/37: [xpm maint] Add some perf ideas to HACKING; nfc., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm a610cc2 04/37: [xpm maint] Add HACKING; nfc., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm aa2a1e1 01/37: [xpm maint] Add .elpaignore and NEWS files; nfc., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm 8bfffeb 10/37: [xpm] Fix byte-compilation bugs., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm d919c38 08/37: [xpm] Release: 1.0.0, Stefan Monnier, 2020/11/28
- [elpa] externals/xpm ebaa1a4 16/37: [xpm int] Add abstraction: form, Stefan Monnier, 2020/11/28
- [elpa] externals/xpm ee7e88d 06/37: [xpm int] Don't bother w/ rows outside form bb., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm 6f7785b 05/37: [xpm int] Compute bool-vector length exactly once., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm bdff002 03/37: [xpm maint] Add debugging aid Emacs Lisp file.,
Stefan Monnier <=
- [elpa] externals/xpm 612b0a1 07/37: [xpm int] Doc fix., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm bef7120 02/37: [xpm] Add Emacs Lisp files., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm b395114 22/37: [xpm int] Use cl-* names; drop ‘cl’ requirement., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm 41d5c7d 21/37: [xpm int] Use ‘cl-destructuring-bind’, not ‘destructuring-bind’., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm 9f3fd68 23/37: [xpm int] Use ‘cl-assert’, not ‘assert’; drop ‘cl’ requirement., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm 88ac50b 20/37: [xpm] Document disabled undo., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm bedfa73 19/37: [xpm int] Whitespace munging; nfc., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm 9e50d40 26/37: [xpm int] Make wip more visible; inhibit their distribution., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm 4ecdff4 28/37: * xpm: Fix cl-lib usage and compilation failures., Stefan Monnier, 2020/11/28
- [elpa] externals/xpm 62051fe 34/37: * xpm/xpm.el (xpm--gg): Fix incorrect defstruct field syntax, Stefan Monnier, 2020/11/28