From 2e121b4ed9e789391d2776da8629433488706b12 Mon Sep 17 00:00:00 2001 From: KemoNine Date: Thu, 21 Apr 2022 23:14:55 -0400 Subject: [PATCH] fix rainbow-delimiters --- .../rainbow-delimiters-autoloads.el | 39 +++ .../rainbow-delimiters-pkg.el | 2 + .../rainbow-delimiters.el | 311 ++++++++++++++++++ .../rainbow-delimiters.elc | Bin 0 -> 9760 bytes code/init.el | 4 +- code/persp-confs/persp-auto-save | 15 +- code/persp-confs/persp-auto-save1 | 7 +- code/persp-confs/persp-auto-save2 | 8 +- code/persp-confs/persp-auto-save3 | 12 +- emacs.md | 2 +- 10 files changed, 373 insertions(+), 27 deletions(-) create mode 100644 code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters-autoloads.el create mode 100644 code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters-pkg.el create mode 100644 code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters.el create mode 100644 code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters.elc diff --git a/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters-autoloads.el b/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters-autoloads.el new file mode 100644 index 0000000..a3fcca8 --- /dev/null +++ b/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters-autoloads.el @@ -0,0 +1,39 @@ +;;; rainbow-delimiters-autoloads.el --- automatically extracted autoloads +;; +;;; Code: + +(add-to-list 'load-path (directory-file-name + (or (file-name-directory #$) (car load-path)))) + + +;;;### (autoloads nil "rainbow-delimiters" "rainbow-delimiters.el" +;;;;;; (0 0 0 0)) +;;; Generated autoloads from rainbow-delimiters.el + +(autoload 'rainbow-delimiters-mode "rainbow-delimiters" "\ +Highlight nested parentheses, brackets, and braces according to their depth. + +If called interactively, enable Rainbow-Delimiters mode if ARG is +positive, and disable it if ARG is zero or negative. If called +from Lisp, also enable the mode if ARG is omitted or nil, and +toggle it if ARG is `toggle'; disable the mode otherwise. + +\(fn &optional ARG)" t nil) + +(autoload 'rainbow-delimiters-mode-enable "rainbow-delimiters" "\ +Enable `rainbow-delimiters-mode'." nil nil) + +(autoload 'rainbow-delimiters-mode-disable "rainbow-delimiters" "\ +Disable `rainbow-delimiters-mode'." nil nil) + +(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rainbow-delimiters" '("rainbow-delimiters-"))) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; rainbow-delimiters-autoloads.el ends here diff --git a/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters-pkg.el b/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters-pkg.el new file mode 100644 index 0000000..453fb38 --- /dev/null +++ b/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters-pkg.el @@ -0,0 +1,2 @@ +;;; Generated package description from rainbow-delimiters.el -*- no-byte-compile: t -*- +(define-package "rainbow-delimiters" "20210515.1254" "Highlight brackets according to their depth" 'nil :commit "a32b39bdfe6c61c322c37226d66e1b6d4f107ed0" :authors '(("Jeremy Rayman" . "opensource@jeremyrayman.com") ("Fanael Linithien" . "fanael4@gmail.com")) :maintainer '("Fanael Linithien" . "fanael4@gmail.com") :keywords '("faces" "convenience" "lisp" "tools") :url "https://github.com/Fanael/rainbow-delimiters") diff --git a/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters.el b/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters.el new file mode 100644 index 0000000..261e679 --- /dev/null +++ b/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters.el @@ -0,0 +1,311 @@ +;;; rainbow-delimiters.el --- Highlight brackets according to their depth -*- lexical-binding: t -*- + +;; Copyright (C) +;; 2010-2013 Jeremy Rayman +;; 2013-2021 Fanael Linithien +;; Author: Jeremy Rayman +;; Fanael Linithien +;; Maintainer: Fanael Linithien +;; Created: 2010-09-02 +;; Version: 2.1.5 +;; Package-Version: 20210515.1254 +;; Package-Commit: a32b39bdfe6c61c322c37226d66e1b6d4f107ed0 +;; Keywords: faces, convenience, lisp, tools +;; Homepage: https://github.com/Fanael/rainbow-delimiters + +;; Note: despite `lexical-binding', there's no Emacs 24 dependency. +;; This is merely an optimization for Emacs 24+, the code is supposed to work +;; with *both* dynamic and lexical binding. + +;; 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 . + +;;; Installation: + +;; The recommended way is to use MELPA (http://melpa.org/) or MELPA Stable +;; (http://stable.melpa.org/). If either is in your `package-archives', do +;; M-x package-install RET rainbow-delimiters RET +;; Otherwise, open `rainbow-delimiters.el' in Emacs and use +;; M-x package-install-from-buffer +;; Any other methods of installation are unsupported. + +;;; Commentary: +;; +;; Rainbow-delimiters is a "rainbow parentheses"-like mode which highlights +;; parentheses, brackets, and braces according to their depth. Each +;; successive level is highlighted in a different color. This makes it easy +;; to spot matching delimiters, orient yourself in the code, and tell which +;; statements are at a given level. +;; +;; Great care has been taken to make this mode fast. You shouldn't see +;; any discernible change in scrolling or editing speed while using it, +;; even in delimiter-rich languages like Clojure, Lisp, and Scheme. +;; +;; Usage: +;; +;; To toggle the mode in the current buffer: +;; M-x rainbow-delimiters-mode +;; To start the mode automatically in `foo-mode', add the following to your init +;; file: +;; (add-hook 'foo-mode-hook #'rainbow-delimiters-mode) +;; To start the mode automatically in most programming modes (Emacs 24 and +;; above): +;; (add-hook 'prog-mode-hook #'rainbow-delimiters-mode) +;; +;; Customization: +;; +;; To customize various options, including the color theme: +;; M-x customize-group rainbow-delimiters +;; +;; You can specify custom colors by customizing following faces: +;; - Faces take the form `rainbow-delimiters-depth-N-face', with N being the +;; depth. Depth begins at 1, the outermost color. Faces exist for depths 1-9. +;; - The unmatched delimiter face: `rainbow-delimiters-unmatched-face'. +;; - The mismatched delimiter face: `rainbow-delimiters-mismatched-face'. + +;;; Code: + +(defgroup rainbow-delimiters nil + "Highlight nested parentheses, brackets, and braces according to their depth." + :prefix "rainbow-delimiters-" + :link '(url-link :tag "Website for rainbow-delimiters" + "https://github.com/Fanael/rainbow-delimiters") + :group 'applications) + +(defgroup rainbow-delimiters-faces nil + "Faces for successively nested pairs of delimiters. + +When depth exceeds innermost defined face, colors cycle back through." + :group 'rainbow-delimiters + :group 'faces + :link '(custom-group-link "rainbow-delimiters") + :prefix "rainbow-delimiters-") + +(defcustom rainbow-delimiters-pick-face-function + #'rainbow-delimiters-default-pick-face + "The function used to pick a face used to highlight a delimiter. +The function should take three arguments (DEPTH MATCH LOC), where: + - DEPTH is the delimiter depth; when zero or negative, it's an unmatched + delimiter. + - MATCH is nil iff the delimiter is a mismatched closing delimiter. + - LOC is the location of the delimiter. +The function should return a value suitable to use as a value of the `face' text +property, or nil, in which case the delimiter is not highlighted. +The function should not move the point or mark or change the match data." + :tag "Pick face function" + :type 'function + :group 'rainbow-delimiters) + +(defface rainbow-delimiters-base-face + '((default (:inherit unspecified))) + "Face inherited by all other rainbow-delimiter faces." + :group 'rainbow-delimiters-faces) + +(defface rainbow-delimiters-base-error-face + '((default (:inherit rainbow-delimiters-base-face)) + (t (:foreground "#88090B"))) + "Face inherited by all other rainbow-delimiter error faces." + :group 'rainbow-delimiters-faces) + +(defface rainbow-delimiters-unmatched-face + '((default (:inherit rainbow-delimiters-base-error-face))) + "Face to highlight unmatched closing delimiters in." + :group 'rainbow-delimiters-faces) + +(defface rainbow-delimiters-mismatched-face + '((default (:inherit rainbow-delimiters-unmatched-face))) + "Face to highlight mismatched closing delimiters in." + :group 'rainbow-delimiters-faces) + +(eval-when-compile + (defmacro rainbow-delimiters--define-depth-faces () + (let ((faces '()) + (light-colors ["#707183" "#7388d6" "#909183" "#709870" "#907373" + "#6276ba" "#858580" "#80a880" "#887070"]) + (dark-colors ["grey55" "#93a8c6" "#b0b1a3" "#97b098" "#aebed8" + "#b0b0b3" "#90a890" "#a2b6da" "#9cb6ad"])) + (dotimes (i 9) + (push `(defface ,(intern (format "rainbow-delimiters-depth-%d-face" (1+ i))) + '((default (:inherit rainbow-delimiters-base-face)) + (((class color) (background light)) :foreground ,(aref light-colors i)) + (((class color) (background dark)) :foreground ,(aref dark-colors i))) + ,(format "Nested delimiter face, depth %d." (1+ i)) + :group 'rainbow-delimiters-faces) + faces)) + `(progn ,@faces)))) +(rainbow-delimiters--define-depth-faces) + +(defcustom rainbow-delimiters-max-face-count 9 + "Number of faces defined for highlighting delimiter levels. + +Determines depth at which to cycle through faces again. + +It's safe to change this variable provided that for all integers from 1 to the +new value inclusive, a face `rainbow-delimiters-depth-N-face' is defined." + :type 'integer + :group 'rainbow-delimiters) + +(defcustom rainbow-delimiters-outermost-only-face-count 0 + "Number of faces to be used only for N outermost delimiter levels. + +This should be smaller than `rainbow-delimiters-max-face-count'." + :type 'integer + :group 'rainbow-delimiters) + + +(defun rainbow-delimiters-default-pick-face (depth match _loc) + "Return a face name appropriate for nesting depth DEPTH. +DEPTH and MATCH are as in `rainbow-delimiters-pick-face-function'. + +The returned value is either `rainbow-delimiters-unmatched-face', +`rainbow-delimiters-mismatched-face', or one of the +`rainbow-delimiters-depth-N-face' faces, obeying +`rainbow-delimiters-max-face-count' and +`rainbow-delimiters-outermost-only-face-count'." + (cond + ((<= depth 0) + 'rainbow-delimiters-unmatched-face) + ((not match) + 'rainbow-delimiters-mismatched-face) + (t + (intern-soft + (concat "rainbow-delimiters-depth-" + (number-to-string + (if (<= depth rainbow-delimiters-max-face-count) + ;; Our nesting depth has a face defined for it. + depth + ;; Deeper than # of defined faces; cycle back through to + ;; `rainbow-delimiters-outermost-only-face-count' + 1. + ;; Return face # that corresponds to current nesting level. + (+ 1 rainbow-delimiters-outermost-only-face-count + (mod (- depth rainbow-delimiters-max-face-count 1) + (- rainbow-delimiters-max-face-count + rainbow-delimiters-outermost-only-face-count))))) + "-face"))))) + +(defun rainbow-delimiters--apply-color (loc depth match) + "Highlight a single delimiter at LOC according to DEPTH. + +LOC is the location of the character to add text properties to. +DEPTH is the nested depth at LOC, which determines the face to use. +MATCH is nil iff it's a mismatched closing delimiter." + (let ((face (funcall rainbow-delimiters-pick-face-function depth match loc))) + (when face + (font-lock-prepend-text-property loc (1+ loc) 'face face)))) + +(defun rainbow-delimiters--char-ineligible-p (loc ppss delim-syntax-code) + "Return t if char at LOC should not be highlighted. +PPSS is the `parse-partial-sexp' state at LOC. +DELIM-SYNTAX-CODE is the `car' of a raw syntax descriptor at LOC. + +Returns t if char at loc meets one of the following conditions: +- Inside a string. +- Inside a comment. +- Is an escaped char, e.g. ?\)" + (or + (nth 3 ppss) ; inside string? + (nth 4 ppss) ; inside comment? + (nth 5 ppss) ; escaped according to the syntax table? + ;; Note: no need to consider single-char openers, they're already handled + ;; by looking at ppss. + (cond + ;; Two character opener, LOC at the first character? + ((/= 0 (logand #x10000 delim-syntax-code)) + (/= 0 (logand #x20000 (or (car (syntax-after (1+ loc))) 0)))) + ;; Two character opener, LOC at the second character? + ((/= 0 (logand #x20000 delim-syntax-code)) + (/= 0 (logand #x10000 (or (car (syntax-after (1- loc))) 0)))) + (t + nil)))) + +;; Main function called by font-lock. +(defun rainbow-delimiters--propertize (end) + "Highlight delimiters in region between point and END. + +Used by font-lock for dynamic highlighting." + (when (bound-and-true-p mmm-current-submode) + ;; `mmm-mode' is weird and apparently needs this hack, because otherwise we + ;; may end up thinking matched parentheses are mismatched. + (widen)) + (let* ((last-ppss-pos (point)) + (ppss (syntax-ppss))) + (while (> end (progn (skip-syntax-forward "^()" end) + (point))) + (let* ((delim-pos (point)) + (delim-syntax (syntax-after delim-pos))) + (setq ppss (parse-partial-sexp last-ppss-pos delim-pos nil nil ppss)) + (setq last-ppss-pos delim-pos) + ;; `skip-syntax-forward' leaves the point at the delimiter, move past + ;; it. + (forward-char) + (let ((delim-syntax-code (car delim-syntax))) + (cond + ((rainbow-delimiters--char-ineligible-p delim-pos ppss delim-syntax-code) + nil) + ((= 4 (logand #xFFFF delim-syntax-code)) + ;; The (1+ ...) is needed because `parse-partial-sexp' returns the + ;; depth at the opening delimiter, not in the block being started. + (rainbow-delimiters--apply-color delim-pos (1+ (nth 0 ppss)) t)) + (t + ;; Not an opening delimiter, so it's a closing delimiter. + (let ((matches-p (eq (cdr delim-syntax) (char-after (nth 1 ppss))))) + (rainbow-delimiters--apply-color delim-pos (nth 0 ppss) matches-p)))))))) + ;; We already fontified the delimiters, tell font-lock there's nothing more + ;; to do. + nil) + +;; NB: no face defined here because we apply the faces ourselves instead of +;; leaving that to font-lock. +(defconst rainbow-delimiters--font-lock-keywords + '(rainbow-delimiters--propertize)) + +;;;###autoload +(define-minor-mode rainbow-delimiters-mode + "Highlight nested parentheses, brackets, and braces according to their depth." + :init-value nil + :lighter "" ; No modeline lighter - it's already obvious when the mode is on. + :keymap nil + (font-lock-remove-keywords nil rainbow-delimiters--font-lock-keywords) + (when rainbow-delimiters-mode + (font-lock-add-keywords nil rainbow-delimiters--font-lock-keywords 'append) + (set (make-local-variable 'jit-lock-contextually) t) + (when (or (bound-and-true-p syntax-begin-function) + (bound-and-true-p font-lock-beginning-of-syntax-function)) + ;; We're going to modify `syntax-begin-function', so flush the cache to + ;; avoid getting cached values that used the old value. + (syntax-ppss-flush-cache 0)) + ;; `syntax-begin-function' may break the assumption we rely on that + ;; `syntax-ppss' is exactly equivalent to `parse-partial-sexp' from + ;; `point-min'. Just don't use it, the performance hit should be negligible. + (when (boundp 'syntax-begin-function) + (set (make-local-variable 'syntax-begin-function) nil)) + ;; Obsolete equivalent of `syntax-begin-function'. + (when (boundp 'font-lock-beginning-of-syntax-function) + (set (make-local-variable 'font-lock-beginning-of-syntax-function) nil))) + (when font-lock-mode + (if (fboundp 'font-lock-flush) + (font-lock-flush) + (with-no-warnings (font-lock-fontify-buffer))))) + +;;;###autoload +(defun rainbow-delimiters-mode-enable () + "Enable `rainbow-delimiters-mode'." + (rainbow-delimiters-mode 1)) + +;;;###autoload +(defun rainbow-delimiters-mode-disable () + "Disable `rainbow-delimiters-mode'." + (rainbow-delimiters-mode 0)) + +(provide 'rainbow-delimiters) +;;; rainbow-delimiters.el ends here diff --git a/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters.elc b/code/elpa/rainbow-delimiters-20210515.1254/rainbow-delimiters.elc new file mode 100644 index 0000000000000000000000000000000000000000..04854f22555a4111e4bbcf3e73b3d28f27d21d7d GIT binary patch literal 9760 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