From 0d342f0aee3f2f800e486c0051dabe718a7b2841 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Wed, 23 Mar 2011 11:14:27 +0100 Subject: I don't like nxhtml --- emacs.d/nxhtml/util/css-palette.el | 471 ------------------------------------- 1 file changed, 471 deletions(-) delete mode 100644 emacs.d/nxhtml/util/css-palette.el (limited to 'emacs.d/nxhtml/util/css-palette.el') diff --git a/emacs.d/nxhtml/util/css-palette.el b/emacs.d/nxhtml/util/css-palette.el deleted file mode 100644 index 44287be..0000000 --- a/emacs.d/nxhtml/util/css-palette.el +++ /dev/null @@ -1,471 +0,0 @@ -;;; css-palette.el - -(defconst css-palette:version "0.02") -;; Copyright (C) 2008 Niels Giesen - -;; Author: Niels Giesen -;; Keywords: processes, css, multimedia, extensions, tools -;; Homepage: http://niels.kicks-ass.org/ - -;; 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 . - -;;; Commentary: - -;; css-palette defines commands to have "palettes" inside a block -;; comment to circumvent the absence of (color or other) variable -;; definitions in the CSS specification. It can import and export GIMP -;; color palettes. See the documentation of `css-palette-mode' -;; for details of usage. - -;;; Installation: - -;; Something like: - -;; put it in your load-path. - -;; (autoload 'css-palette-mode "css-palette" "" t) -;; (add-hook 'css-mode-hook -;; (lambda () -;; (css-palette-mode t))) - -;; Notes: - -;; css-palette depends on css-color.el to do font-locking. - -;; ccs-palette is orthogonal to css-mode, so it could probably be used -;; inside other language modes, provided they support multiline block -;; comments. - -;;; Change log: - -;; 2009-01-11 Lennart Borgman -;; - Minor code clean up. - -;;; Code: -(require 'css-color) -(eval-when-compile (require 'cl)) ;i'm a bad bad boy... - -(defconst css-palette-hex-chars "0123456789abcdefABCDEF" - "Composing chars in hexadecimal notation, save for the hash (#) sign.") - -(defvar css-palette-mode-map - (let ((m (make-sparse-keymap))) - (define-key m "\C-c\C-c" 'css-palette-update-all) - (define-key m "\C-c\C-i" 'css-palette-insert-reference) - (define-key m "\C-c\C-p" 'css-palette-import-from-GIMP) - (define-key m "\C-c\C-f" 'css-palette-insert-files) - m) - "Mode map for `css-palette-mode'") - -;;;###autoload -(define-minor-mode css-palette-mode - "Minor mode for palettes in CSS. - -The mode `css-palette-mode' acts on the first COLORS declaration in your - file of the form: - -COLORS: -\( -c0 \"#6f5d25\" ;tainted sand -c1 \"#000000\" ;Black -c2 \"#cca42b\" ;goldenslumber -c3 \"#6889cb\" ;far off sky -c4 \"#fff\" ;strange aeons -) - -Such declarations should appear inside a block comment, in order - to be parsed properly by the LISP reader. - -Type \\[css-palette-update-all], and any occurence of - - color: #f55; /*[c3]*/ - -will be updated with - - color: #6899cb; /*[c3]*/ - -The following commands are available to insert key-value pairs - and palette declarations: - \\{css-palette-mode-map} - -You can extend or redefine the types of palettes by defining a - new palette specification of the form (PATTERN REGEXP - REF-FOLLOWS-VALUE), named according to the naming scheme - css-palette:my-type, where - -PATTERN is a pattern containing two (%s) format directives which - will be filled in with the variable and its value, - -REGEXP is a regular expression to match a value - variable - pattern, - -and REF-FOLLOWS-VALUE defined whether or not the reference comes - after the value. This allows for more flexibility. - -Note that, although the w3c spec at URL - `http://www.w3.org/TR/CSS2/syndata.html#comments' says that - comments \" may occur anywhere between tokens, and their - contents have no influence on the rendering\", Internet - Explorer does not think so. Better keep all your comments after - a \"statement\", as per the default. This means `css-palette' - is ill-suited for use within shorthands. - -See variable `css-palette:colors' for an example of a palette - type. - -The extension mechanism means that palette types can be used to - contain arbitrary key-value mappings. - -Besides the colors palette, css-palette defines the palette - definition variables `css-palette:colors-outside' and - `css-palette:files', for colors with the reference outside and - for file url()'s respectively. - -You can fine-control which palette types css-palette should look - at via the variable `css-palette-types'. - -" - nil - "-palette" - css-palette-mode-map - (css-color-mode +1)) - -;;;###autoload -(defgroup css-palette nil - "Customization group for css-palette library. - -See function `css-palette-mode' for documentation" - :group 'css-color) - -(defcustom css-palette:colors - `("%s; /*[%s]*/ " - ,(concat "\\(" - css-color-color-re -;; (mapconcat -;; 'identity -;; (list css-color-hex-re -;; css-color-hsl-re -;; css-color-rgb-re) "\\|") - "\\)" - "[[:space:]]*;[[:space:]]*\/\\*\\[\\([^[:space:]]+\\)\\]\\*\/") - t) - "Color palette specification. - -See function `css-palette-mode' for documentation" - :group 'css-palette - :type '(list - (string :tag "Pattern") - (regexp :tag "Regexp") - (boolean :tag "Reversed"))) - -(defcustom css-palette:files - '("url(%s); /*[%s]*/ " - "url(\\([^)]+\\))[[:space:]]*;[[:space:]]*\/\\*\\[\\([^[:space:]]+\\)\\]\\*\/" - t) - "File palette specification. - -See function `css-palette-mode' for documentation" - :group 'css-palette - :type '(list - (string :tag "Pattern") - (regexp :tag "Regexp") - (boolean :tag "Reversed"))) - -(defcustom css-palette-types - '(colors) - "List of palette types to check for in buffer. - -See function `css-palette-mode' for documentation" - :group 'css-palette - :type '(repeat (symbol :tag "Palette type"))) -(make-variable-buffer-local 'css-palette-types) - -;; (defun css-palette-mode-turn-on () -;; "Turn on `css-palette-mode'." -;; (css-palette-mode 1)) - -;; ;;;###autoload -;; (defcustom css-palette-mode-activate-p nil -;; "Start `css-palette-mode' when `css-mode' is activated." -;; :group 'css-palette -;; :set (lambda (sym val) -;; (set-default sym val) -;; (if val -;; (add-hook 'css-mode-hook 'css-palette-mode-turn-on) -;; (remove-hook 'css-mode-hook 'css-palette-mode-turn-on))) -;; :type 'boolean) - -(defun css-palette-turn-on-in-buffer () - "Turn on `css-palette-mode' in `css-mode'." - (when (derived-mode-p 'css-mode) - (message "turn-on-in-b:before (css-palette-mode 1) cb=%s" (current-buffer)) - (css-palette-mode 1) - (message "turn-on-in-b:after (css-palette-mode 1)") - )) - -;;;###autoload -(define-globalized-minor-mode css-palette-global-mode css-palette-mode - css-palette-turn-on-in-buffer - :group 'css-color) - -(defun css-palette-get (key spec) - (plist-get - (css-palette-spec-to-plist - (symbol-value - (intern-soft - (format "css-palette:%s" spec)))) key)) - -(defun css-palette-spec-to-plist (palette) - (destructuring-bind (pattern regexp ref-follows-value) palette - (list :regexp regexp - :pattern pattern - :ref-follows-value ref-follows-value))) - -(defun css-palette-choose-type () - (intern-soft - (if (null (cdr css-palette-types)) - (car css-palette-types) - (completing-read "Type: " - (mapcar 'symbol-name css-palette-types))))) - -(defun css-palette-get-declaration (type) - "Return `css-palette' declaration of TYPE in current buffer. - -If none is found, throw an error." - (let ((type (symbol-name type))) - (save-excursion - (goto-char (point-min)) - (or (re-search-forward (format "%s:" - (upcase type)) nil t) - (error "No %s declaration found in buffer; check value of variable - `css-palette-types'" type)) - (let ((palette (read (current-buffer)))) - ;; Check (could be better..) - (if (not (and - (listp palette) - (= 0 (% (length palette) 2)))) - (error "Invalid %s " type)) - palette)))) - -(defun css-palette-update (type) -"Update buffer references for palette of TYPE." - (interactive (list - (css-palette-choose-type))) - (let ((palette (css-palette-get-declaration type)) - (regexp (css-palette-get :regexp type)) - (ref-follows-value (css-palette-get :ref-follows-value type))) - (flet ((getval (key palette) - (let ((value (plist-get palette (intern-soft key)))) - (if (null value) - (error - "%S not specified in %S palette " - key - type - ;; (signal 'css-palette-not-found-error nil) - ) - value)))) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward - regexp - (point-max) t) - (replace-match - (getval (match-string-no-properties (if ref-follows-value 2 1)) palette) - nil nil nil (if ref-follows-value 1 2)))))) - (css-color-mode 1)) - -(defun css-palette-update-all () - "Update all references for palettes in `css-palette-types'" - (interactive) - (catch 'err - (mapc (lambda (type) - (condition-case err - (css-palette-update type) - (if (y-or-n-p (format "%s, skip? " err)) - nil))) - css-palette-types))) - -;; Reference Insertion -(defun css-palette-insert-reference (type) - "Insert `css-palette' reference of TYPE at point." - (interactive - (list (css-palette-choose-type))) - (let* ((palette (css-palette-get-declaration type)) - (ref-follows-value (css-palette-get :ref-follows-value type)) - (pattern (css-palette-get :pattern type)) - (var - (completing-read (format "%s variable: " - (capitalize - (substring (symbol-name type) - 0 -1))) - (loop for i on - palette - by 'cddr - collect - (css-palette-colorify - (symbol-name (car i)) - (cadr i))))) - (val (plist-get palette (read var)))) - (insert (apply 'format - pattern - (if ref-follows-value - (list val var) - (list var val)))) - (css-color-mode +1))) - -(defun css-palette-hex-color-p (str) - (string-match "#\\([a-fA-F[:digit:]]\\{6\\}\\|[a-fA-F[:digit:]]\\{3\\}\\)" str)) - -(defun css-palette-colorify (string color) - (let ((color (if (css-palette-hex-color-p color) - color - "#000"))) - (propertize string - 'font-lock-face - (list :background color - :foreground (css-color-foreground-color color) - string) - 'fontified t))) - -;; Imports -(defun css-palette-from-existing-colors () - (interactive) - (let ((palette) - (count -1)) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward "#[[:digit:]a-fA-F]\\{6\\}\\>" nil t) - (if (not (member (match-string-no-properties 0) palette)) - (setq palette (append (list - (match-string-no-properties 0) - (intern(format "c%d" (incf count)))) - palette))) - (save-match-data (re-search-forward ";" nil t)) - (insert (format "/*[%S]*/" (cadr (member (match-string-no-properties 0) palette)))))) - (insert (format "COLORS:\n%S" (nreverse palette))) - (forward-sexp -1) - (forward-char 1) - (while - (not (looking-at ")")) - (forward-sexp 2) - (newline) - (indent-for-tab-command)))) - -(defun css-palette-newest-GIMP-dir () - "Return newest (version-wise) ~/.gimp-n.n/palettes directory on disk. - -Return `nil' if none such directory is found." - (catch 'none - (concat - (or - (car - (last - (directory-files "~/" t "^.gimp-[[:digit:].]\\{3,\\}"))) - (throw 'none ())) - "/palettes/"))) - -(defun css-palette-import-from-GIMP () - "Import GIMP palette file as a `css-palette' palette. - -GIMP palettes can be made with the GIMP or on-line tools such as -found at URL `http://colourlovers.com'." - (interactive) - (let ((file (read-file-name "File: " (css-palette-newest-GIMP-dir))) - (this-buffer (current-buffer)) - (count -1)) - (insert "\nCOLORS:\n(\n") - (with-temp-buffer - (insert-file-contents file) - (goto-char (point-min)) - (while (re-search-forward - (concat - "^" - "[[:space:]]*\\([[:digit:]]+\\)" ;red - "[[:space:]]+\\([[:digit:]]+\\)" ;green - "[[:space:]]+\\([[:digit:]]+\\)" ;blue - "[[:space:]]+\\(.*\\)$") ;name (=> used as comment) - nil t) - (destructuring-bind (rb re gb ge bb be nb ne &rest ignore) - (cddr (match-data t)) - (let ((color - (apply 'format "c%d \"#%02x%02x%02x\" ;%s\n" - (incf count) - (append - (mapcar 'string-to-number - (list - (buffer-substring-no-properties rb re) - (buffer-substring-no-properties gb ge) - (buffer-substring-no-properties bb be))) - (list (buffer-substring-no-properties nb ne)))))) - (with-current-buffer this-buffer - (insert color)))))) - (insert ")") - (message "C-c C-c to update colors"))) - -(defun css-palette-insert-files (dir) - "Insert a `css-palette' declaration for all files in DIR. - -Filenames are relative. -Main use-case: an image directory." - (interactive "DDirectory: ") - (save-excursion - (let ((image-count -1)) - (insert "\nFILES:\n(\n") - (mapc - (lambda (f) - (insert - (format "file-%d %S\n" - (incf image-count) - (file-relative-name - f - (file-name-directory (buffer-file-name)))))) - (directory-files dir t "...+")) - (insert ")\n\n")))) - -;; Exports -(defun css-palette-export-to-GIMP (type name columns) - "Export the COLORS declaration to a GIMP (.gpl) palette. - -See also `gpl-mode' at URL -`http://niels.kicks-ass.org/public/elisp/gpl.el'." - (interactive - (list - (css-palette-choose-type) - (read-string "Name: ") - (read-number "Number of columns: " 2))) - (let ((palette (css-palette-get-declaration type))) - (find-file - (concat (css-palette-newest-GIMP-dir) - name - ".gpl")) - (insert - (format "GIMP Palette -Name: %s -Columns: %d -# -" name columns)) - (loop for i on palette - by 'cddr - do - (multiple-value-bind (r g b)(css-color-hex-to-rgb - (css-color-hexify-anystring (cadr i))) - (insert (format "%3d %3d %3d\t%s\n" - r g b - (car i)))))) - (if (featurep 'gpl) - (gpl-mode))) - -(provide 'css-palette) -;; css-palette.el ends here -- cgit v1.2.3-54-g00ecf