diff --git a/.bashrc b/.bashrc index c1a51d0b..bacf3596 100644 --- a/.bashrc +++ b/.bashrc @@ -31,3 +31,4 @@ export EDITOR="emacsclient -t" # $EDITOR opens in terminal export TERM="screen-256color" test -s ~/.alias && . ~/.alias || true +eval "$(direnv hook bash)" diff --git a/bundle/custom.el b/bundle/custom.el index a98fcc04..8fd8806a 100644 --- a/bundle/custom.el +++ b/bundle/custom.el @@ -69,7 +69,7 @@ '(package-enable-at-startup t) '(package-selected-packages (quote - (dart-mode dart-server projectile python-django ivy elpy olivetti ace-window graphviz-dot-mode dot-mode plantuml-mode elisp-format elisp-lint flymake-racket google-translate org-pomodoro elm-mode dashboard pickle poet-theme flymake-eslint json-mode darkroom dockerfile-mode ein spacemacs-theme flucui-themes leuven-theme htmlize scss-mode berrys-theme web-mode python-docstring sphinx-doc sphinx-frontend sphinx-mode ox-nikola racket-mode slime gherkin-mode powershell typescript-mode ob-http ob-ipython ob-restclient nord-theme restclient request restclient-test yaml-mode magit))) + (ob-dart dart-mode dart-server projectile python-django ivy elpy olivetti ace-window graphviz-dot-mode dot-mode plantuml-mode elisp-format elisp-lint flymake-racket google-translate org-pomodoro elm-mode dashboard pickle poet-theme flymake-eslint json-mode darkroom dockerfile-mode ein spacemacs-theme flucui-themes leuven-theme htmlize scss-mode berrys-theme web-mode python-docstring sphinx-doc sphinx-frontend sphinx-mode ox-nikola racket-mode slime gherkin-mode powershell typescript-mode ob-http ob-ipython ob-restclient nord-theme restclient request restclient-test yaml-mode magit))) '(python-shell-interpreter "python3") '(register-preview-delay 2) '(register-separator 43) diff --git a/bundle/display.el b/bundle/display.el index adab89ab..e35a248e 100644 --- a/bundle/display.el +++ b/bundle/display.el @@ -17,7 +17,7 @@ (display-time-mode -1) ; Display time in the mode line (add-to-list 'default-frame-alist '(fullscreen . maximized)) ; Maximize Window -(add-to-list 'default-frame-alist '(font . "Iosevka Term-13")) +(add-to-list 'default-frame-alist '(font . "Iosevka Term Medium-13")) (when (eq system-type 'gnu/linux) (add-to-list 'default-frame-alist '(undecorated . t))) diff --git a/elpa/ace-window-20200311.1025/ace-window-autoloads.el b/elpa/ace-window-20200311.1025/ace-window-autoloads.el deleted file mode 100644 index e720b3a2..00000000 --- a/elpa/ace-window-20200311.1025/ace-window-autoloads.el +++ /dev/null @@ -1,81 +0,0 @@ -;;; ace-window-autoloads.el --- automatically extracted autoloads -;; -;;; Code: - -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) - - -;;;### (autoloads nil "ace-window" "ace-window.el" (0 0 0 0)) -;;; Generated autoloads from ace-window.el - -(autoload 'ace-select-window "ace-window" "\ -Ace select window. - -\(fn)" t nil) - -(autoload 'ace-delete-window "ace-window" "\ -Ace delete window. - -\(fn)" t nil) - -(autoload 'ace-swap-window "ace-window" "\ -Ace swap window. - -\(fn)" t nil) - -(autoload 'ace-delete-other-windows "ace-window" "\ -Ace delete other windows. - -\(fn)" t nil) - -(autoload 'ace-display-buffer "ace-window" "\ -Make `display-buffer' and `pop-to-buffer' select using `ace-window'. -See sample config for `display-buffer-base-action' and `display-buffer-alist': -https://github.com/abo-abo/ace-window/wiki/display-buffer. - -\(fn BUFFER ALIST)" nil nil) - -(autoload 'ace-window "ace-window" "\ -Select a window. -Perform an action based on ARG described below. - -By default, behaves like extended `other-window'. -See `aw-scope' which extends it to work with frames. - -Prefixed with one \\[universal-argument], does a swap between the -selected window and the current window, so that the selected -buffer moves to current window (and current buffer moves to -selected window). - -Prefixed with two \\[universal-argument]'s, deletes the selected -window. - -\(fn ARG)" t nil) - -(defvar ace-window-display-mode nil "\ -Non-nil if Ace-Window-Display mode is enabled. -See the `ace-window-display-mode' command -for a description of this minor mode. -Setting this variable directly does not take effect; -either customize it (see the info node `Easy Customization') -or call the function `ace-window-display-mode'.") - -(custom-autoload 'ace-window-display-mode "ace-window" nil) - -(autoload 'ace-window-display-mode "ace-window" "\ -Minor mode for showing the ace window key in the mode line. - -\(fn &optional ARG)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ace-window" '("ace-window-mode" "aw-"))) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; ace-window-autoloads.el ends here diff --git a/elpa/ace-window-20200311.1025/ace-window-pkg.el b/elpa/ace-window-20200311.1025/ace-window-pkg.el deleted file mode 100644 index 9462228e..00000000 --- a/elpa/ace-window-20200311.1025/ace-window-pkg.el +++ /dev/null @@ -1,2 +0,0 @@ -;;; -*- no-byte-compile: t -*- -(define-package "ace-window" "20200311.1025" "Quickly switch windows." '((avy "0.5.0")) :commit "7003c88cd9cad58dc35c7cd13ebc61c355fb5be7" :keywords '("window" "location") :authors '(("Oleh Krehel" . "ohwoeowho@gmail.com")) :maintainer '("Oleh Krehel" . "ohwoeowho@gmail.com") :url "https://github.com/abo-abo/ace-window") diff --git a/elpa/ace-window-20200311.1025/ace-window.el b/elpa/ace-window-20200311.1025/ace-window.el deleted file mode 100644 index 53593a05..00000000 --- a/elpa/ace-window-20200311.1025/ace-window.el +++ /dev/null @@ -1,953 +0,0 @@ -;;; ace-window.el --- Quickly switch windows. -*- lexical-binding: t -*- - -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. - -;; Author: Oleh Krehel -;; Maintainer: Oleh Krehel -;; URL: https://github.com/abo-abo/ace-window -;; Package-Version: 20200311.1025 -;; Version: 0.10.0 -;; Package-Requires: ((avy "0.5.0")) -;; Keywords: window, location - -;; This file is part of GNU Emacs. - -;; This file 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, 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. - -;; For a full copy of the GNU General Public License -;; see . - -;;; Commentary: -;; -;; The main function, `ace-window' is meant to replace `other-window' -;; by assigning each window a short, unique label. When there are only -;; two windows present, `other-window' is called (unless -;; aw-dispatch-always is set non-nil). If there are more, each -;; window will have its first label character highlighted. Once a -;; unique label is typed, ace-window will switch to that window. -;; -;; To setup this package, just add to your .emacs: -;; -;; (global-set-key (kbd "M-o") 'ace-window) -;; -;; replacing "M-o" with an appropriate shortcut. -;; -;; By default, ace-window uses numbers for window labels so the window -;; labeling is intuitively ordered. But if you prefer to type keys on -;; your home row for quicker access, use this setting: -;; -;; (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)) -;; -;; Whenever ace-window prompts for a window selection, it grays out -;; all the window characters, highlighting window labels in red. To -;; disable this behavior, set this: -;; -;; (setq aw-background nil) -;; -;; If you want to know the selection characters ahead of time, turn on -;; `ace-window-display-mode'. -;; -;; When prefixed with one `universal-argument', instead of switching -;; to the selected window, the selected window is swapped with the -;; current one. -;; -;; When prefixed with two `universal-argument', the selected window is -;; deleted instead. - -;;; Code: -(require 'avy) -(require 'ring) -(require 'subr-x) - -;;* Customization -(defgroup ace-window nil - "Quickly switch current window." - :group 'convenience - :prefix "aw-") - -(defcustom aw-keys '(?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9) - "Keys for selecting window." - :type '(repeat character)) - -(defcustom aw-scope 'global - "The scope used by `ace-window'." - :type '(choice - (const :tag "visible frames" visible) - (const :tag "global" global) - (const :tag "frame" frame))) - -(defcustom aw-translate-char-function #'identity - "Function to translate user input key into another key. -For example, to make SPC do the same as ?a, use -\(lambda (c) (if (= c 32) ?a c))." - :type '(choice - (const :tag "Off" #'identity) - (const :tag "Ignore Case" #'downcase) - (function :tag "Custom"))) - -(defcustom aw-minibuffer-flag nil - "When non-nil, also display `ace-window-mode' string in the minibuffer when ace-window is active." - :type 'boolean) - -(defcustom aw-ignored-buffers '("*Calc Trail*" " *LV*") - "List of buffers and major-modes to ignore when choosing a window from the window list. -Active only when `aw-ignore-on' is non-nil." - :type '(repeat string)) - -(defcustom aw-ignore-on t - "When t, `ace-window' will ignore buffers and major-modes in `aw-ignored-buffers'. -Use M-0 `ace-window' to toggle this value." - :type 'boolean) - -(defcustom aw-ignore-current nil - "When t, `ace-window' will ignore `selected-window'." - :type 'boolean) - -(defcustom aw-background t - "When t, `ace-window' will dim out all buffers temporarily when used." - :type 'boolean) - -(defcustom aw-leading-char-style 'char - "Style of the leading char overlay." - :type '(choice - (const :tag "single char" 'char) - (const :tag "full path" 'path))) - -(defcustom aw-dispatch-always nil - "When non-nil, `ace-window' will issue a `read-char' even for one window. -This will make `ace-window' act different from `other-window' for - one or two windows." - :type 'boolean) - -(defcustom aw-dispatch-when-more-than 2 - "If the number of windows is more than this, activate ace-window-ness." - :type 'integer) - -(defcustom aw-reverse-frame-list nil - "When non-nil `ace-window' will order frames for selection in -the reverse of `frame-list'" - :type 'boolean) - -(defcustom aw-frame-offset '(13 . 23) - "Increase in pixel offset for new ace-window frames relative to the selected frame. -Its value is an (x-offset . y-offset) pair in pixels." - :type '(cons integer integer)) - -(defcustom aw-frame-size nil - "Frame size to make new ace-window frames. -Its value is a (width . height) pair in pixels or nil for the default frame size. -(0 . 0) is special and means make the frame size the same as the last selected frame size." - :type '(cons integer integer)) - -(defcustom aw-char-position 'top-left - "Window positions of the character overlay. -Consider changing this if the overlay tends to overlap with other things." - :type '(choice - (const :tag "top left corner only" 'top-left) - (const :tag "both left corners" 'left))) - -;; Must be defined before `aw-make-frame-char' since its :set function references this. -(defvar aw-dispatch-alist - '((?x aw-delete-window "Delete Window") - (?m aw-swap-window "Swap Windows") - (?M aw-move-window "Move Window") - (?c aw-copy-window "Copy Window") - (?j aw-switch-buffer-in-window "Select Buffer") - (?n aw-flip-window) - (?u aw-switch-buffer-other-window "Switch Buffer Other Window") - (?e aw-execute-command-other-window "Execute Command Other Window") - (?F aw-split-window-fair "Split Fair Window") - (?v aw-split-window-vert "Split Vert Window") - (?b aw-split-window-horz "Split Horz Window") - (?o delete-other-windows "Delete Other Windows") - (?T aw-transpose-frame "Transpose Frame") - ;; ?i ?r ?t are used by hyperbole.el - (?? aw-show-dispatch-help)) - "List of actions for `aw-dispatch-default'. -Each action is a list of either: - (char function description) where function takes a single window argument -or - (char function) where function takes no argument and the description is omitted.") - -(defun aw-set-make-frame-char (option value) - ;; Signal an error if `aw-make-frame-char' is ever set to an invalid - ;; or conflicting value. - (when value - (cond ((not (characterp value)) - (user-error "`aw-make-frame-char' must be a character, not `%s'" value)) - ((memq value aw-keys) - (user-error "`aw-make-frame-char' is `%c'; this conflicts with the same character in `aw-keys'" value)) - ((assq value aw-dispatch-alist) - (user-error "`aw-make-frame-char' is `%c'; this conflicts with the same character in `aw-dispatch-alist'" value)))) - (set option value)) - -(defcustom aw-make-frame-char ?z - "Non-existing ace window label character that triggers creation of a new single-window frame for display." - :set 'aw-set-make-frame-char - :type 'character) - -(defface aw-leading-char-face - '((((class color)) (:foreground "red")) - (((background dark)) (:foreground "gray100")) - (((background light)) (:foreground "gray0")) - (t (:foreground "gray100" :underline nil))) - "Face for each window's leading char.") - -(defface aw-minibuffer-leading-char-face - '((t :inherit aw-leading-char-face)) - "Face for minibuffer leading char.") - -(defface aw-background-face - '((t (:foreground "gray40"))) - "Face for whole window background during selection.") - -(defface aw-mode-line-face - '((t (:inherit mode-line-buffer-id))) - "Face used for displaying the ace window key in the mode-line.") - -(defface aw-key-face - '((t :inherit font-lock-builtin-face)) - "Face used by `aw-show-dispatch-help'.") - -;;* Implementation -(defun aw-ignored-p (window) - "Return t if WINDOW should be ignored when choosing from the window list." - (or (and aw-ignore-on - ;; Ignore major-modes and buffer-names in `aw-ignored-buffers'. - (or (memq (buffer-local-value 'major-mode (window-buffer window)) - aw-ignored-buffers) - (member (buffer-name (window-buffer window)) aw-ignored-buffers))) - ;; ignore child frames - (and (fboundp 'frame-parent) (frame-parent (window-frame window))) - ;; Ignore selected window if `aw-ignore-current' is non-nil. - (and aw-ignore-current - (equal window (selected-window))) - ;; When `ignore-window-parameters' is nil, ignore windows whose - ;; `no-other-window’ or `no-delete-other-windows' parameter is non-nil. - (unless ignore-window-parameters - (cl-case this-command - (ace-select-window (window-parameter window 'no-other-window)) - (ace-delete-window (window-parameter window 'no-delete-other-windows)) - (ace-delete-other-windows (window-parameter - window 'no-delete-other-windows)))))) - -(defun aw-window-list () - "Return the list of interesting windows." - (sort - (cl-remove-if - (lambda (w) - (let ((f (window-frame w))) - (or (not (and (frame-live-p f) - (frame-visible-p f))) - (string= "initial_terminal" (terminal-name f)) - (aw-ignored-p w)))) - (cl-case aw-scope - (visible - (cl-mapcan #'window-list (visible-frame-list))) - (global - (cl-mapcan #'window-list (frame-list))) - (frame - (window-list)) - (t - (error "Invalid `aw-scope': %S" aw-scope)))) - 'aw-window<)) - -(defvar aw-overlays-back nil - "Hold overlays for when `aw-background' is t.") - -(defvar ace-window-mode nil - "Minor mode during the selection process.") - -;; register minor mode -(or (assq 'ace-window-mode minor-mode-alist) - (nconc minor-mode-alist - (list '(ace-window-mode ace-window-mode)))) - -(defvar aw-empty-buffers-list nil - "Store the read-only empty buffers which had to be modified. -Modify them back eventually.") - -(defvar aw--windows-hscroll nil - "List of (window . hscroll-columns) items, each listing a window whose - horizontal scroll will be restored upon ace-window action completion.") - -(defvar aw--windows-points nil - "List of (window . point) items. The point position had to be - moved in order to display the overlay.") - -(defun aw--done () - "Clean up mode line and overlays." - ;; mode line - (aw-set-mode-line nil) - ;; background - (mapc #'delete-overlay aw-overlays-back) - (setq aw-overlays-back nil) - (avy--remove-leading-chars) - (dolist (b aw-empty-buffers-list) - (with-current-buffer b - (when (string= (buffer-string) " ") - (let ((inhibit-read-only t)) - (delete-region (point-min) (point-max)))))) - (setq aw-empty-buffers-list nil) - (aw--restore-windows-hscroll) - (let (c) - (while (setq c (pop aw--windows-points)) - (with-selected-window (car c) - (goto-char (cdr c)))))) - -(defun aw--restore-windows-hscroll () - "Restore horizontal scroll of windows from `aw--windows-hscroll' list." - (let (wnd hscroll) - (mapc (lambda (wnd-and-hscroll) - (setq wnd (car wnd-and-hscroll) - hscroll (cdr wnd-and-hscroll)) - (when (window-live-p wnd) - (set-window-hscroll wnd hscroll))) - aw--windows-hscroll)) - (setq aw--windows-hscroll nil)) - -(defun aw--overlay-str (wnd pos path) - "Return the replacement text for an overlay in WND at POS, -accessible by typing PATH." - (let ((old-str (or - (ignore-errors - (with-selected-window wnd - (buffer-substring pos (1+ pos)))) - ""))) - (concat - (cl-case aw-leading-char-style - (char - (string (avy--key-to-char (car (last path))))) - (path - (mapconcat - (lambda (x) (string (avy--key-to-char x))) - (reverse path) - "")) - (t - (error "Bad `aw-leading-char-style': %S" - aw-leading-char-style))) - (cond ((string-equal old-str "\t") - (make-string (1- tab-width) ?\ )) - ((string-equal old-str "\n") - "\n") - (t - (make-string - (max 0 (1- (string-width old-str))) - ?\ )))))) - -(defun aw--point-visible-p () - "Return non-nil if point is visible in the selected window. -Return nil when horizontal scrolling has moved it off screen." - (and (>= (- (current-column) (window-hscroll)) 0) - (< (- (current-column) (window-hscroll)) - (window-width)))) - -(defun aw--lead-overlay (path leaf) - "Create an overlay using PATH at LEAF. -LEAF is (PT . WND)." - ;; Properly adds overlay in visible region of most windows except for any one - ;; receiving output while this function is executing, since that moves point, - ;; potentially shifting the added overlay outside the window's visible region. - (let ((wnd (cdr leaf)) - ;; Prevent temporary movement of point from scrolling any window. - (scroll-margin 0)) - (with-selected-window wnd - (when (= 0 (buffer-size)) - (push (current-buffer) aw-empty-buffers-list) - (let ((inhibit-read-only t)) - (insert " "))) - ;; If point is not visible due to horizontal scrolling of the - ;; window, this next expression temporarily scrolls the window - ;; right until point is visible, so that the leading-char can be - ;; seen when it is inserted. When ace-window's action finishes, - ;; the horizontal scroll is restored by (aw--done). - (while (and (not (aw--point-visible-p)) - (not (zerop (window-hscroll))) - (progn (push (cons (selected-window) (window-hscroll)) aw--windows-hscroll) t) - (not (zerop (scroll-right))))) - (let* ((ws (window-start)) - (prev nil) - (vertical-pos (if (eq aw-char-position 'left) -1 0)) - (horizontal-pos (if (zerop (window-hscroll)) 0 (1+ (window-hscroll)))) - (old-pt (point)) - (pt - (progn - ;; If leading-char is to be displayed at the top-left, move - ;; to the first visible line in the window, otherwise, move - ;; to the last visible line. - (move-to-window-line vertical-pos) - (move-to-column horizontal-pos) - ;; Find a nearby point that is not at the end-of-line but - ;; is visible so have space for the overlay. - (setq prev (1- (point))) - (while (and (>= prev ws) (/= prev (point)) (eolp)) - (setq prev (point)) - (unless (bobp) - (line-move -1 t) - (move-to-column horizontal-pos))) - (recenter vertical-pos) - (point))) - (ol (make-overlay pt (1+ pt) (window-buffer wnd)))) - (if (= (aw--face-rel-height) 1) - (goto-char old-pt) - (when (/= pt old-pt) - (goto-char (+ pt 1)) - (push (cons wnd old-pt) aw--windows-points))) - (overlay-put ol 'display (aw--overlay-str wnd pt path)) - (if (window-minibuffer-p wnd) - (overlay-put ol 'face 'aw-minibuffer-leading-char-face) - (overlay-put ol 'face 'aw-leading-char-face)) - (overlay-put ol 'window wnd) - (push ol avy--overlays-lead))))) - -(defun aw--make-backgrounds (wnd-list) - "Create a dim background overlay for each window on WND-LIST." - (when aw-background - (setq aw-overlays-back - (mapcar (lambda (w) - (let ((ol (make-overlay - (window-start w) - (window-end w) - (window-buffer w)))) - (overlay-put ol 'face 'aw-background-face) - ol)) - wnd-list)))) - -(defvar aw-dispatch-function 'aw-dispatch-default - "Function to call when a character not in `aw-keys' is pressed.") - -(defvar aw-action nil - "Function to call at the end of `aw-select'.") - -(defun aw-set-mode-line (str) - "Set mode line indicator to STR." - (setq ace-window-mode str) - (when (and aw-minibuffer-flag ace-window-mode) - (message "%s" (string-trim-left str))) - (force-mode-line-update)) - -(defun aw--dispatch-action (char) - "Return item from `aw-dispatch-alist' matching CHAR." - (assoc char aw-dispatch-alist)) - -(defun aw-make-frame () - "Make a new Emacs frame using the values of `aw-frame-size' and `aw-frame-offset'." - (make-frame - (delq nil - (list - ;; This first parameter is important because an - ;; aw-dispatch-alist command may not want to leave this - ;; frame with input focus. If it is given focus, the - ;; command may not be able to return focus to a different - ;; frame since this is done asynchronously by the window - ;; manager. - '(no-focus-on-map . t) - (when aw-frame-size - (cons 'width - (if (zerop (car aw-frame-size)) - (frame-width) - (car aw-frame-size)))) - (when aw-frame-size - (cons 'height - (if (zerop (cdr aw-frame-size)) - (frame-height) - (car aw-frame-size)))) - (cons 'left (+ (car aw-frame-offset) - (car (frame-position)))) - (cons 'top (+ (cdr aw-frame-offset) - (cdr (frame-position)))))))) - -(defun aw-use-frame (window) - "Create a new frame using the contents of WINDOW. - -The new frame is set to the same size as the previous frame, offset by -`aw-frame-offset' (x . y) pixels." - (aw-switch-to-window window) - (aw-make-frame)) - -(defun aw-clean-up-avy-current-path () - "Edit `avy-current-path' so only window label characters remain." - ;; Remove any possible ace-window command char that may - ;; precede the last specified window label, so - ;; functions can use `avy-current-path' as the chosen - ;; window label. - (when (and (> (length avy-current-path) 0) - (assq (aref avy-current-path 0) aw-dispatch-alist)) - (setq avy-current-path (substring avy-current-path 1)))) - -(defun aw-dispatch-default (char) - "Perform an action depending on CHAR." - (cond ((and (fboundp 'avy-mouse-event-window) - (avy-mouse-event-window char))) - ((= char (aref (kbd "C-g") 0)) - (throw 'done 'exit)) - ((and aw-make-frame-char (= char aw-make-frame-char)) - ;; Make a new frame and perform any action on its window. - (let ((start-win (selected-window)) - (end-win (frame-selected-window (aw-make-frame)))) - (if aw-action - ;; Action must be called from the start-win. The action - ;; determines which window to leave selected. - (progn (select-frame-set-input-focus (window-frame start-win)) - (funcall aw-action end-win)) - ;; Select end-win when no action - (aw-switch-to-window end-win))) - (throw 'done 'exit)) - (t - (let ((action (aw--dispatch-action char))) - (if action - (cl-destructuring-bind (_key fn &optional description) action - (if (and fn description) - (prog1 (setq aw-action fn) - (aw-set-mode-line (format " Ace - %s" description))) - (if (commandp fn) - (call-interactively fn) - (funcall fn)) - (throw 'done 'exit))) - (aw-clean-up-avy-current-path) - ;; Prevent any char from triggering an avy dispatch command. - (let ((avy-dispatch-alist)) - (avy-handler-default char))))))) - -(defcustom aw-display-mode-overlay t - "When nil, don't display overlays. Rely on the mode line instead." - :type 'boolean) - -(defvar ace-window-display-mode) - -(defun aw-select (mode-line &optional action) - "Return a selected other window. -Amend MODE-LINE to the mode line for the duration of the selection." - (setq aw-action action) - (let ((start-window (selected-window)) - (next-window-scope (cl-case aw-scope - ('visible 'visible) - ('global 'visible) - ('frame 'frame))) - (wnd-list (aw-window-list)) - window) - (setq window - (cond ((<= (length wnd-list) 1) - (when aw-dispatch-always - (setq aw-action - (unwind-protect - (catch 'done - (funcall aw-dispatch-function (read-char))) - (aw--done))) - (when (eq aw-action 'exit) - (setq aw-action nil))) - (or (car wnd-list) start-window)) - ((and (<= (+ (length wnd-list) (if (aw-ignored-p start-window) 1 0)) - aw-dispatch-when-more-than) - (not aw-dispatch-always) - (not aw-ignore-current)) - (let ((wnd (next-window nil nil next-window-scope))) - (while (and (or (not (memq wnd wnd-list)) - (aw-ignored-p wnd)) - (not (equal wnd start-window))) - (setq wnd (next-window wnd nil next-window-scope))) - wnd)) - (t - (let ((candidate-list - (mapcar (lambda (wnd) - (cons (aw-offset wnd) wnd)) - wnd-list))) - (aw--make-backgrounds wnd-list) - (aw-set-mode-line mode-line) - ;; turn off helm transient map - (remove-hook 'post-command-hook 'helm--maybe-update-keymap) - (unwind-protect - (let* ((avy-handler-function aw-dispatch-function) - (avy-translate-char-function aw-translate-char-function) - (transient-mark-mode nil) - (res (avy-read (avy-tree candidate-list aw-keys) - (if (and ace-window-display-mode - (null aw-display-mode-overlay)) - (lambda (_path _leaf)) - #'aw--lead-overlay) - #'avy--remove-leading-chars))) - (if (eq res 'exit) - (setq aw-action nil) - (or (cdr res) - start-window))) - (aw--done)))))) - (if aw-action - (funcall aw-action window) - window))) - -;;* Interactive -;;;###autoload -(defun ace-select-window () - "Ace select window." - (interactive) - (aw-select " Ace - Window" - #'aw-switch-to-window)) - -;;;###autoload -(defun ace-delete-window () - "Ace delete window." - (interactive) - (aw-select " Ace - Delete Window" - #'aw-delete-window)) - -;;;###autoload -(defun ace-swap-window () - "Ace swap window." - (interactive) - (aw-select " Ace - Swap Window" - #'aw-swap-window)) - -;;;###autoload -(defun ace-delete-other-windows () - "Ace delete other windows." - (interactive) - (aw-select " Ace - Delete Other Windows" - #'delete-other-windows)) - -;;;###autoload -(defun ace-display-buffer (buffer alist) - "Make `display-buffer' and `pop-to-buffer' select using `ace-window'. -See sample config for `display-buffer-base-action' and `display-buffer-alist': -https://github.com/abo-abo/ace-window/wiki/display-buffer." - (let* ((aw-ignore-current (cdr (assq 'inhibit-same-window alist))) - (rf (cdr (assq 'reusable-frames alist))) - (aw-scope (cl-case rf - ((nil) 'frame) - (visible 'visible) - ((0 t) 'global)))) - (unless (or (<= (length (aw-window-list)) 1) - (not aw-scope)) - (window--display-buffer - buffer (aw-select "Ace - Display Buffer") 'reuse)))) - -(declare-function transpose-frame "ext:transpose-frame") -(defun aw-transpose-frame (w) - "Select any window on frame and `tranpose-frame'." - (transpose-frame (window-frame w))) - -;;;###autoload -(defun ace-window (arg) - "Select a window. -Perform an action based on ARG described below. - -By default, behaves like extended `other-window'. -See `aw-scope' which extends it to work with frames. - -Prefixed with one \\[universal-argument], does a swap between the -selected window and the current window, so that the selected -buffer moves to current window (and current buffer moves to -selected window). - -Prefixed with two \\[universal-argument]'s, deletes the selected -window." - (interactive "p") - (setq avy-current-path "") - (cl-case arg - (0 - (let ((aw-ignore-on (not aw-ignore-on))) - (ace-select-window))) - (4 (ace-swap-window)) - (16 (ace-delete-window)) - (t (ace-select-window)))) - -;;* Utility -(unless (fboundp 'frame-position) - (defun frame-position (&optional frame) - (let ((pl (frame-parameter frame 'left)) - (pt (frame-parameter frame 'top))) - (when (consp pl) - (setq pl (eval pl))) - (when (consp pt) - (setq pt (eval pt))) - (cons pl pt)))) - -(defun aw-window< (wnd1 wnd2) - "Return true if WND1 is less than WND2. -This is determined by their respective window coordinates. -Windows are numbered top down, left to right." - (let* ((f1 (window-frame wnd1)) - (f2 (window-frame wnd2)) - (e1 (window-edges wnd1)) - (e2 (window-edges wnd2)) - (p1 (frame-position f1)) - (p2 (frame-position f2)) - (nl (or (null (car p1)) (null (car p2))))) - (cond ((and (not nl) (< (car p1) (car p2))) - (not aw-reverse-frame-list)) - ((and (not nl) (> (car p1) (car p2))) - aw-reverse-frame-list) - ((< (car e1) (car e2)) - t) - ((> (car e1) (car e2)) - nil) - ((< (cadr e1) (cadr e2)) - t)))) - -(defvar aw--window-ring (make-ring 10) - "Hold the window switching history.") - -(defun aw--push-window (window) - "Store WINDOW to `aw--window-ring'." - (when (or (zerop (ring-length aw--window-ring)) - (not (equal - (ring-ref aw--window-ring 0) - window))) - (ring-insert aw--window-ring (selected-window)))) - -(defun aw--pop-window () - "Return the removed top of `aw--window-ring'." - (let (res) - (condition-case nil - (while (or (not (window-live-p - (setq res (ring-remove aw--window-ring 0)))) - (equal res (selected-window)))) - (error - (if (= (length (aw-window-list)) 2) - (progn - (other-window 1) - (setq res (selected-window))) - (error "No previous windows stored")))) - res)) - -(defun aw-switch-to-window (window) - "Switch to the window WINDOW." - (let ((frame (window-frame window))) - (aw--push-window (selected-window)) - (when (and (frame-live-p frame) - (not (eq frame (selected-frame)))) - (select-frame-set-input-focus frame)) - (if (window-live-p window) - (select-window window) - (error "Got a dead window %S" window)))) - -(defun aw-flip-window () - "Switch to the window you were previously in." - (interactive) - (aw-switch-to-window (aw--pop-window))) - -(defun aw-show-dispatch-help () - "Display action shortucts in echo area." - (interactive) - (message "%s" (mapconcat - (lambda (action) - (cl-destructuring-bind (key fn &optional description) action - (format "%s: %s" - (propertize - (char-to-string key) - 'face 'aw-key-face) - (or description fn)))) - aw-dispatch-alist - "\n")) - ;; Prevent this from replacing any help display - ;; in the minibuffer. - (let (aw-minibuffer-flag) - (mapc #'delete-overlay aw-overlays-back) - (call-interactively 'ace-window))) - -(defun aw-delete-window (window &optional kill-buffer) - "Delete window WINDOW. -When KILL-BUFFER is non-nil, also kill the buffer." - (let ((frame (window-frame window))) - (when (and (frame-live-p frame) - (not (eq frame (selected-frame)))) - (select-frame-set-input-focus (window-frame window))) - (if (= 1 (length (window-list))) - (delete-frame frame) - (if (window-live-p window) - (let ((buffer (window-buffer window))) - (delete-window window) - (when kill-buffer - (kill-buffer buffer))) - (error "Got a dead window %S" window))))) - -(defun aw-switch-buffer-in-window (window) - "Select buffer in WINDOW." - (aw-switch-to-window window) - (aw--switch-buffer)) - -(declare-function ivy-switch-buffer "ext:ivy") - -(defun aw--switch-buffer () - (cond ((bound-and-true-p ivy-mode) - (ivy-switch-buffer)) - ((bound-and-true-p ido-mode) - (ido-switch-buffer)) - (t - (call-interactively 'switch-to-buffer)))) - -(defcustom aw-swap-invert nil - "When non-nil, the other of the two swapped windows gets the point." - :type 'boolean) - -(defun aw-swap-window (window) - "Swap buffers of current window and WINDOW." - (cl-labels ((swap-windows (window1 window2) - "Swap the buffers of WINDOW1 and WINDOW2." - (let ((buffer1 (window-buffer window1)) - (buffer2 (window-buffer window2))) - (set-window-buffer window1 buffer2) - (set-window-buffer window2 buffer1) - (select-window window2)))) - (let ((frame (window-frame window)) - (this-window (selected-window))) - (when (and (frame-live-p frame) - (not (eq frame (selected-frame)))) - (select-frame-set-input-focus (window-frame window))) - (when (and (window-live-p window) - (not (eq window this-window))) - (aw--push-window this-window) - (if aw-swap-invert - (swap-windows window this-window) - (swap-windows this-window window)))))) - -(defun aw-move-window (window) - "Move the current buffer to WINDOW. -Switch the current window to the previous buffer." - (let ((buffer (current-buffer))) - (switch-to-buffer (other-buffer)) - (aw-switch-to-window window) - (switch-to-buffer buffer))) - -(defun aw-copy-window (window) - "Copy the current buffer to WINDOW." - (let ((buffer (current-buffer))) - (aw-switch-to-window window) - (switch-to-buffer buffer))) - -(defun aw-split-window-vert (window) - "Split WINDOW vertically." - (select-window window) - (split-window-vertically)) - -(defun aw-split-window-horz (window) - "Split WINDOW horizontally." - (select-window window) - (split-window-horizontally)) - -(defcustom aw-fair-aspect-ratio 2 - "The aspect ratio to aim for when splitting windows. -Sizes are based on the number of characters, not pixels. -Increase to prefer wider windows, or decrease for taller windows." - :type 'number) - -(defun aw-split-window-fair (window) - "Split WINDOW vertically or horizontally, based on its current dimensions. -Modify `aw-fair-aspect-ratio' to tweak behavior." - (let ((w (window-body-width window)) - (h (window-body-height window))) - (if (< (* h aw-fair-aspect-ratio) w) - (aw-split-window-horz window) - (aw-split-window-vert window)))) - -(defun aw-switch-buffer-other-window (window) - "Switch buffer in WINDOW." - (aw-switch-to-window window) - (unwind-protect - (aw--switch-buffer) - (aw-flip-window))) - -(defun aw-execute-command-other-window (window) - "Execute a command in WINDOW." - (aw-switch-to-window window) - (unwind-protect - (funcall - (key-binding - (read-key-sequence - "Enter key sequence: "))) - (aw-flip-window))) - -(defun aw--face-rel-height () - (let ((h (face-attribute 'aw-leading-char-face :height))) - (cond - ((eq h 'unspecified) - 1) - ((floatp h) - (max (floor h) 1)) - ((integerp h) - 1) - (t - (error "unexpected: %s" h))))) - -(defun aw-offset (window) - "Return point in WINDOW that's closest to top left corner. -The point is writable, i.e. it's not part of space after newline." - (let ((h (window-hscroll window)) - (beg (window-start window)) - (end (window-end window)) - (inhibit-field-text-motion t)) - (with-current-buffer (window-buffer window) - (save-excursion - (goto-char beg) - (forward-line (1- - (min - (count-lines - (point) - (point-max)) - (aw--face-rel-height)))) - (while (and (< (point) end) - (< (- (line-end-position) - (line-beginning-position)) - h)) - (forward-line)) - (+ (point) h))))) - -(defun aw--after-make-frame (f) - (aw-update) - (make-frame-visible f)) - -;;* Mode line -;;;###autoload -(define-minor-mode ace-window-display-mode - "Minor mode for showing the ace window key in the mode line." - :global t - (if ace-window-display-mode - (progn - (aw-update) - (set-default - 'mode-line-format - `((ace-window-display-mode - (:eval (window-parameter (selected-window) 'ace-window-path))) - ,@(assq-delete-all - 'ace-window-display-mode - (default-value 'mode-line-format)))) - (force-mode-line-update t) - (add-hook 'window-configuration-change-hook 'aw-update) - ;; Add at the end so does not precede select-frame call. - (add-hook 'after-make-frame-functions #'aw--after-make-frame t)) - (set-default - 'mode-line-format - (assq-delete-all - 'ace-window-display-mode - (default-value 'mode-line-format))) - (remove-hook 'window-configuration-change-hook 'aw-update) - (remove-hook 'after-make-frame-functions 'aw--after-make-frame))) - -(defun aw-update () - "Update ace-window-path window parameter for all windows. - -Ensure all windows are labeled so the user can select a specific -one, even from the set of windows typically ignored when making a -window list." - (let ((aw-ignore-on) - (aw-ignore-current) - (ignore-window-parameters t)) - (avy-traverse - (avy-tree (aw-window-list) aw-keys) - (lambda (path leaf) - (set-window-parameter - leaf 'ace-window-path - (propertize - (apply #'string (reverse path)) - 'face 'aw-mode-line-face)))))) - -(provide 'ace-window) - -;;; ace-window.el ends here diff --git a/elpa/ace-window-20200311.1025/ace-window.elc b/elpa/ace-window-20200311.1025/ace-window.elc deleted file mode 100644 index 417c46c7..00000000 Binary files a/elpa/ace-window-20200311.1025/ace-window.elc and /dev/null differ diff --git a/elpa/ace-window-readme.txt b/elpa/ace-window-readme.txt deleted file mode 100644 index 847b3ddb..00000000 --- a/elpa/ace-window-readme.txt +++ /dev/null @@ -1,34 +0,0 @@ -The main function, `ace-window' is meant to replace `other-window' -by assigning each window a short, unique label. When there are only -two windows present, `other-window' is called (unless -aw-dispatch-always is set non-nil). If there are more, each -window will have its first label character highlighted. Once a -unique label is typed, ace-window will switch to that window. - -To setup this package, just add to your .emacs: - - (global-set-key (kbd "M-o") 'ace-window) - -replacing "M-o" with an appropriate shortcut. - -By default, ace-window uses numbers for window labels so the window -labeling is intuitively ordered. But if you prefer to type keys on -your home row for quicker access, use this setting: - - (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)) - -Whenever ace-window prompts for a window selection, it grays out -all the window characters, highlighting window labels in red. To -disable this behavior, set this: - - (setq aw-background nil) - -If you want to know the selection characters ahead of time, turn on -`ace-window-display-mode'. - -When prefixed with one `universal-argument', instead of switching -to the selected window, the selected window is swapped with the -current one. - -When prefixed with two `universal-argument', the selected window is -deleted instead. diff --git a/elpa/alert-20200303.2118/alert-autoloads.el b/elpa/alert-20200303.2118/alert-autoloads.el deleted file mode 100644 index 102a8e9f..00000000 --- a/elpa/alert-20200303.2118/alert-autoloads.el +++ /dev/null @@ -1,100 +0,0 @@ -;;; alert-autoloads.el --- automatically extracted autoloads -;; -;;; Code: - -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) - - -;;;### (autoloads nil "alert" "alert.el" (0 0 0 0)) -;;; Generated autoloads from alert.el - -(autoload 'alert-add-rule "alert" "\ -Programmatically add an alert configuration rule. - -Normally, users should custoimze `alert-user-configuration'. -This facility is for module writers and users that need to do -things the Lisp way. - -Here is a rule the author currently uses with ERC, so that the -fringe gets colored whenever people chat on BitlBee: - -\(alert-add-rule :status \\='(buried visible idle) - :severity \\='(moderate high urgent) - :mode \\='erc-mode - :predicate - #\\='(lambda (info) - (string-match (concat \"\\\\`[^&].*@BitlBee\\\\\\='\") - (erc-format-target-and/or-network))) - :persistent - #\\='(lambda (info) - ;; If the buffer is buried, or the user has been - ;; idle for `alert-reveal-idle-time' seconds, - ;; make this alert persistent. Normally, alerts - ;; become persistent after - ;; `alert-persist-idle-time' seconds. - (memq (plist-get info :status) \\='(buried idle))) - :style \\='fringe - :continue t) - -\(fn &key SEVERITY STATUS MODE CATEGORY TITLE MESSAGE PREDICATE ICON (STYLE alert-default-style) PERSISTENT CONTINUE NEVER-PERSIST APPEND)" nil nil) - -(autoload 'alert "alert" "\ -Alert the user that something has happened. -MESSAGE is what the user will see. You may also use keyword -arguments to specify additional details. Here is a full example: - -\(alert \"This is a message\" - :severity \\='high ;; The default severity is `normal' - :title \"Title\" ;; An optional title - :category \\='example ;; A symbol to identify the message - :mode \\='text-mode ;; Normally determined automatically - :buffer (current-buffer) ;; This is the default - :data nil ;; Unused by alert.el itself - :persistent nil ;; Force the alert to be persistent; - ;; it is best not to use this - :never-persist nil ;; Force this alert to never persist - :id \\='my-id) ;; Used to replace previous message of - ;; the same id in styles that support it - :style \\='fringe) ;; Force a given style to be used; - ;; this is only for debugging! - -If no :title is given, the buffer-name of :buffer is used. If -:buffer is nil, it is the current buffer at the point of call. - -:data is an opaque value which modules can pass through to their -own styles if they wish. - -Here are some more typical examples of usage: - - ;; This is the most basic form usage - (alert \"This is an alert\") - - ;; You can adjust the severity for more important messages - (alert \"This is an alert\" :severity \\='high) - - ;; Or decrease it for purely informative ones - (alert \"This is an alert\" :severity \\='trivial) - - ;; Alerts can have optional titles. Otherwise, the title is the - ;; buffer-name of the (current-buffer) where the alert originated. - (alert \"This is an alert\" :title \"My Alert\") - - ;; Further, alerts can have categories. This allows users to - ;; selectively filter on them. - (alert \"This is an alert\" :title \"My Alert\" - :category \\='some-category-or-other) - -\(fn MESSAGE &key (SEVERITY \\='normal) TITLE ICON CATEGORY BUFFER MODE DATA STYLE PERSISTENT NEVER-PERSIST ID)" nil nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "alert" '("alert-" "x-urgen"))) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; alert-autoloads.el ends here diff --git a/elpa/alert-20200303.2118/alert-pkg.el b/elpa/alert-20200303.2118/alert-pkg.el deleted file mode 100644 index 09f0311c..00000000 --- a/elpa/alert-20200303.2118/alert-pkg.el +++ /dev/null @@ -1,2 +0,0 @@ -;;; -*- no-byte-compile: t -*- -(define-package "alert" "20200303.2118" "Growl-style notification system for Emacs" '((gntp "0.1") (log4e "0.3.0") (cl-lib "0.5")) :commit "7046393272686c7a1a9b3e7f7b1d825d2e5250a6" :keywords '("notification" "emacs" "message") :authors '(("John Wiegley" . "jwiegley@gmail.com")) :maintainer '("John Wiegley" . "jwiegley@gmail.com") :url "https://github.com/jwiegley/alert") diff --git a/elpa/alert-20200303.2118/alert.el b/elpa/alert-20200303.2118/alert.el deleted file mode 100644 index 2caafa22..00000000 --- a/elpa/alert-20200303.2118/alert.el +++ /dev/null @@ -1,1175 +0,0 @@ -;;; alert.el --- Growl-style notification system for Emacs -*- lexical-binding: t; -*- - -;; Copyright (C) 2011-2013 John Wiegley - -;; Author: John Wiegley -;; Created: 24 Aug 2011 -;; Updated: 16 Mar 2015 -;; Version: 1.2 -;; Package-Version: 20200303.2118 -;; Package-Requires: ((gntp "0.1") (log4e "0.3.0") (cl-lib "0.5")) -;; Keywords: notification emacs message -;; X-URL: https://github.com/jwiegley/alert - -;; 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 2, 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 GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; Alert is a Growl-workalike for Emacs which uses a common notification -;; interface and multiple, selectable "styles", whose use is fully -;; customizable by the user. -;; -;; * For module writers -;; -;; Just use `alert' instead of `message' as follows: -;; -;; (require 'alert) -;; -;; ;; This is the most basic form usage -;; (alert "This is an alert") -;; -;; ;; You can adjust the severity for more important messages -;; (alert "This is an alert" :severity 'high) -;; -;; ;; Or decrease it for purely informative ones -;; (alert "This is an alert" :severity 'trivial) -;; -;; ;; Alerts can have optional titles. Otherwise, the title is the -;; ;; buffer-name of the (current-buffer) where the alert originated. -;; (alert "This is an alert" :title "My Alert") -;; -;; ;; Further, alerts can have categories. This allows users to -;; ;; selectively filter on them. -;; (alert "This is an alert" :title "My Alert" :category 'debug) -;; -;; * For users -;; -;; For the user, there are several variables to control when and how alerts -;; are presented. By default, they appear in the minibuffer much the same -;; as a normal Emacs message. But there are many more possibilities: -;; -;; `alert-fade-time' -;; Normally alerts disappear after this many seconds, if the style -;; supports it. The default is 5 seconds. -;; -;; `alert-default-style' -;; Pick the style to use if no other config rule matches. The -;; default is `message', but `growl' works well too. -;; -;; `alert-reveal-idle-time' -;; If a config rule choose to match on `idle', this is how many -;; seconds idle the user has to be. Defaults to 5 so that users -;; don't miss any alerts, but 120 is also good. -;; -;; `alert-persist-idle-time' -;; After this many idle seconds, alerts will become sticky, and not -;; fade away more. The default is 15 minutes. -;; -;; `alert-log-messages' -;; By default, all alerts are logged to *Alerts* (and to *Messages*, -;; if the `message' style is being used). Set to nil to disable. -;; -;; `alert-hide-all-notifications' -;; Want alerts off entirely? They still get logged, however, unless -;; you've turned that off too. -;; -;; `alert-user-configuration' -;; This variable lets you control exactly how and when a particular -;; alert, a class of alerts, or all alerts, get reported -- or if at -;; all. Use this to make some alerts use Growl, while others are -;; completely silent. -;; -;; * Programmatically adding rules -;; -;; Users can also programmatically add configuration rules, in addition to -;; customizing `alert-user-configuration'. Here is one that the author -;; currently uses with ERC, so that the fringe gets colored whenever people -;; chat on BitlBee: -;; -;; (alert-add-rule :status '(buried visible idle) -;; :severity '(moderate high urgent) -;; :mode 'erc-mode -;; :predicate -;; #'(lambda (info) -;; (string-match (concat "\\`[^&].*@BitlBee\\'") -;; (erc-format-target-and/or-network))) -;; :persistent -;; #'(lambda (info) -;; ;; If the buffer is buried, or the user has been -;; ;; idle for `alert-reveal-idle-time' seconds, -;; ;; make this alert persistent. Normally, alerts -;; ;; become persistent after -;; ;; `alert-persist-idle-time' seconds. -;; (memq (plist-get info :status) '(buried idle))) -;; :style 'fringe -;; :continue t) -;; -;; * Builtin alert styles -;; -;; There are several builtin styles, and it is trivial to create new ones. -;; The builtins are: -;; -;; fringe - Changes the current frame's fringe background color -;; mode-line - Changes the current frame's mode-line background color -;; gntp - Uses gntp, it requires gntp.el (see https://github.com/tekai/gntp.el) -;; growl - Uses Growl on OS X, if growlnotify is on the PATH -;; ignore - Ignores the alert entirely -;; libnotify - Uses libnotify if notify-send is on the PATH -;; log - Logs the alert text to *Alerts*, with a timestamp -;; message - Uses the Emacs `message' facility -;; momentary - Uses the Emacs `momentary-string-display' facility -;; notifications - Uses notifications library via D-Bus -;; notifier - Uses terminal-notifier on OS X, if it is on the PATH -;; osx-notifier - Native OSX notifier using AppleScript -;; toaster - Use the toast notification system -;; x11 - Changes the urgency property of the window in the X Window System -;; -;; * Defining new styles -;; -;; To create a new style, you need to at least write a "notifier", which is -;; a function that receives the details of the alert. These details are -;; given in a plist which uses various keyword to identify the parts of the -;; alert. Here is a prototypical style definition: -;; -;; (alert-define-style 'style-name :title "My Style's title" -;; :notifier -;; (lambda (info) -;; ;; The message text is :message -;; (plist-get info :message) -;; ;; The :title of the alert -;; (plist-get info :title) -;; ;; The :category of the alert -;; (plist-get info :category) -;; ;; The major-mode this alert relates to -;; (plist-get info :mode) -;; ;; The buffer the alert relates to -;; (plist-get info :buffer) -;; ;; Severity of the alert. It is one of: -;; ;; `urgent' -;; ;; `high' -;; ;; `moderate' -;; ;; `normal' -;; ;; `low' -;; ;; `trivial' -;; (plist-get info :severity) -;; ;; Whether this alert should persist, or fade away -;; (plist-get info :persistent) -;; ;; Data which was passed to `alert'. Can be -;; ;; anything. -;; (plist-get info :data)) -;; -;; ;; Removers are optional. Their job is to remove -;; ;; the visual or auditory effect of the alert. -;; :remover -;; (lambda (info) -;; ;; It is the same property list that was passed to -;; ;; the notifier function. -;; )) -;; -;; You can test a specific style with something like this: -;; -;; (let ((alert-user-configuration '((((:severity high)) momentary nil)))) -;; (alert "Same buffer momentary alert" :title "My Alert" :severity 'high) -;; (alert "This is a momentary alert in another visible buffer" :title "My Alert" -;; :severity 'high :buffer (other-buffer (current-buffer) t))) - -;;; Code: - -(require 'cl-lib) -(require 'gntp nil t) -(eval-when-compile - ;; if not available, silence the byte compiler - (defvar gntp-server)) -(declare-function gntp-notify "gntp") -(require 'notifications nil t) -(require 'log4e nil t) - -;; shut up the byte compiler -(declare-function alert-gntp-notify "alert") -(declare-function alert-notifications-notify "alert") - -(defgroup alert nil - "Notification system for Emacs similar to Growl" - :group 'emacs) - -(defcustom alert-severity-faces - '((urgent . alert-urgent-face) - (high . alert-high-face) - (moderate . alert-moderate-face) - (normal . alert-normal-face) - (low . alert-low-face) - (trivial . alert-trivial-face)) - "Faces associated by default with alert severities." - :type '(alist :key-type symbol :value-type color) - :group 'alert) - -(defcustom alert-severity-colors - '((urgent . "red") - (high . "orange") - (moderate . "yellow") - (normal . "green") - (low . "blue") - (trivial . "purple")) - "Colors associated by default with alert severities. -This is used by styles external to Emacs that don't understand faces." - :type '(alist :key-type symbol :value-type color) - :group 'alert) - -(defcustom alert-log-severity-functions - '((urgent . alert--log-fatal) - (high . alert--log-error) - (moderate . alert--log-warn) - (normal . alert--log-info) - (low . alert--log-debug) - (trivial . alert--log-trace)) - "Log4e logging functions." - :type '(alist :key-type symbol :value-type color) - :group 'alert) - -(defcustom alert-log-level - 'normal - "Minimum level of messages to log." - :type 'symbol - :group 'alert) - -(defcustom alert-reveal-idle-time 15 - "If idle this many seconds, rules will match the `idle' property." - :type 'integer - :group 'alert) - -(defcustom alert-persist-idle-time 900 - "If idle this many seconds, all alerts become persistent. -This can be overridden with the Never Persist option (:never-persist)." - :type 'integer - :group 'alert) - -(defcustom alert-fade-time 5 - "If not idle, alerts disappear after this many seconds. -The amount of idle time is governed by `alert-persist-idle-time'." - :type 'integer - :group 'alert) - -(defcustom alert-hide-all-notifications nil - "If non-nil, no alerts are ever shown to the user." - :type 'boolean - :group 'alert) - -(defcustom alert-log-messages t - "If non-nil, all alerts are logged to the *Alerts* buffer." - :type 'boolean - :group 'alert) - -(defcustom alert-default-icon - (concat data-directory - "images/icons/hicolor/scalable/apps/emacs.svg") - "Filename of default icon to show for libnotify-alerts." - :type 'string - :group 'alert) - -(defvar alert-styles nil) - -(defun alert-styles-radio-type (widget-name) - (append - (list widget-name :tag "Style") - (mapcar #'(lambda (style) - (list 'const - :tag (or (plist-get (cdr style) :title) - (symbol-name (car style))) - (car style))) - (setq alert-styles - (sort alert-styles - #'(lambda (l r) - (string< (symbol-name (car l)) - (symbol-name (car r))))))))) - -(defcustom alert-default-style 'message - "The style to use if no rules match in the current configuration. -If a configured rule does match an alert, this style is not used; -it is strictly a fallback." - :type (alert-styles-radio-type 'radio) - :group 'alert) - -(defun alert-configuration-type () - (list 'repeat - (list - 'list :tag "Select style if alert matches selector" - '(repeat - :tag "Selector" - (choice - (cons :tag "Severity" - (const :format "" :severity) - (set (const :tag "Urgent" urgent) - (const :tag "High" high) - (const :tag "Moderate" moderate) - (const :tag "Normal" normal) - (const :tag "Low" low) - (const :tag "Trivial" trivial))) - (cons :tag "User Status" - (const :format "" :status) - (set (const :tag "Buffer not visible" buried) - (const :tag "Buffer visible" visible) - (const :tag "Buffer selected" selected) - (const :tag "Buffer selected, user idle" idle))) - (cons :tag "Major Mode" - (const :format "" :mode) - regexp) - (cons :tag "Category" - (const :format "" :category) - regexp) - (cons :tag "Title" - (const :format "" :title) - regexp) - (cons :tag "Message" - (const :format "" :message) - regexp) - (cons :tag "Predicate" - (const :format "" :predicate) - function) - (cons :tag "Icon" - (const :format "" :icon) - regexp))) - (alert-styles-radio-type 'choice) - '(set :tag "Options" - (cons :tag "Make alert persistent" - (const :format "" :persistent) - (choice :value t (const :tag "Yes" t) - (function :tag "Predicate"))) - (cons :tag "Never persist" - (const :format "" :never-persist) - (choice :value t (const :tag "Yes" t) - (function :tag "Predicate"))) - (cons :tag "Continue to next rule" - (const :format "" :continue) - (choice :value t (const :tag "Yes" t) - (function :tag "Predicate"))) - ;;(list :tag "Change Severity" - ;; (radio :tag "From" - ;; (const :tag "Urgent" urgent) - ;; (const :tag "High" high) - ;; (const :tag "Moderate" moderate) - ;; (const :tag "Normal" normal) - ;; (const :tag "Low" low) - ;; (const :tag "Trivial" trivial)) - ;; (radio :tag "To" - ;; (const :tag "Urgent" urgent) - ;; (const :tag "High" high) - ;; (const :tag "Moderate" moderate) - ;; (const :tag "Normal" normal) - ;; (const :tag "Low" low) - ;; (const :tag "Trivial" trivial))) - )))) - -(defcustom alert-user-configuration nil - "Rules that determine how and when alerts get displayed." - :type (alert-configuration-type) - :group 'alert) - -(defvar alert-internal-configuration nil - "Rules added by `alert-add-rule'. -For user customization, see `alert-user-configuration'.") - -(defface alert-urgent-face - '((t (:foreground "Red" :bold t))) - "Urgent alert face." - :group 'alert) - -(defface alert-high-face - '((t (:foreground "Dark Orange" :bold t))) - "High alert face." - :group 'alert) - -(defface alert-moderate-face - '((t (:foreground "Gold" :bold t))) - "Moderate alert face." - :group 'alert) - -(defface alert-normal-face - '((t)) - "Normal alert face." - :group 'alert) - -(defface alert-low-face - '((t (:foreground "Dark Blue"))) - "Low alert face." - :group 'alert) - -(defface alert-trivial-face - '((t (:foreground "Dark Violet"))) - "Trivial alert face." - :group 'alert) - -(defun alert-define-style (name &rest plist) - "Define a new style for notifying the user of alert messages. -To create a new style, you need to at least write a \"notifier\", -which is a function that receives the details of the alert. -These details are given in a plist which uses various keyword to -identify the parts of the alert. Here is a prototypical style -definition: - -\(alert-define-style 'style-name :title \"My Style's title\" - :notifier - (lambda (info) - ;; The message text is :message - (plist-get info :message) - ;; The :title of the alert - (plist-get info :title) - ;; The :category of the alert - (plist-get info :category) - ;; The major-mode this alert relates to - (plist-get info :mode) - ;; The buffer the alert relates to - (plist-get info :buffer) - ;; Severity of the alert. It is one of: - ;; `urgent' - ;; `high' - ;; `moderate' - ;; `normal' - ;; `low' - ;; `trivial' - (plist-get info :severity) - ;; Whether this alert should persist, or fade away - (plist-get info :persistent) - ;; Data which was passed to `alert'. Can be - ;; anything. - (plist-get info :data)) - - ;; Removers are optional. Their job is to remove - ;; the visual or auditory effect of the alert. - :remover - (lambda (info) - ;; It is the same property list that was passed to - ;; the notifier function. - ))" - (add-to-list 'alert-styles (cons name plist)) - (put 'alert-user-configuration 'custom-type (alert-configuration-type)) - (put 'alert-define-style 'custom-type (alert-styles-radio-type 'radio))) - -(alert-define-style 'ignore :title "Ignore Alert" - :notifier #'ignore - :remover #'ignore) - -;;;###autoload -(cl-defun alert-add-rule (&key severity status mode category title - message predicate icon (style alert-default-style) - persistent continue never-persist append) - "Programmatically add an alert configuration rule. - -Normally, users should custoimze `alert-user-configuration'. -This facility is for module writers and users that need to do -things the Lisp way. - -Here is a rule the author currently uses with ERC, so that the -fringe gets colored whenever people chat on BitlBee: - -\(alert-add-rule :status \\='(buried visible idle) - :severity \\='(moderate high urgent) - :mode \\='erc-mode - :predicate - #\\='(lambda (info) - (string-match (concat \"\\\\`[^&].*@BitlBee\\\\\\='\") - (erc-format-target-and/or-network))) - :persistent - #\\='(lambda (info) - ;; If the buffer is buried, or the user has been - ;; idle for `alert-reveal-idle-time' seconds, - ;; make this alert persistent. Normally, alerts - ;; become persistent after - ;; `alert-persist-idle-time' seconds. - (memq (plist-get info :status) \\='(buried idle))) - :style \\='fringe - :continue t)" - (let ((rule (list (list t) style (list t)))) - (if severity - (nconc (nth 0 rule) - (list (cons :severity - (if (listp severity) - severity - (list severity)))))) - (if status - (nconc (nth 0 rule) - (list (cons :status - (if (listp status) - status - (list status)))))) - (if mode - (nconc (nth 0 rule) - (list (cons :mode - (if (stringp mode) - mode - (concat "\\`" (symbol-name mode) - "\\'")))))) - (if category - (nconc (nth 0 rule) (list (cons :category category)))) - (if title - (nconc (nth 0 rule) (list (cons :title title)))) - (if message - (nconc (nth 0 rule) (list (cons :message message)))) - (if predicate - (nconc (nth 0 rule) (list (cons :predicate predicate)))) - (if icon - (nconc (nth 0 rule) (list (cons :icon icon)))) - (setcar rule (cdr (nth 0 rule))) - - (if persistent - (nconc (nth 2 rule) (list (cons :persistent persistent)))) - (if never-persist - (nconc (nth 2 rule) (list (cons :never-persist never-persist)))) - (if continue - (nconc (nth 2 rule) (list (cons :continue continue)))) - (setcdr (cdr rule) (list (cdr (nth 2 rule)))) - - (if (null alert-internal-configuration) - (setq alert-internal-configuration (list rule)) - (if append - (nconc alert-internal-configuration (list rule)) - (setq alert-internal-configuration - (cons rule alert-internal-configuration)))) - - rule)) - -(alert-define-style 'ignore :title "Don't display alerts") - -(defun alert-log-notify (info) - (let* ((mes (plist-get info :message)) - (sev (plist-get info :severity)) - (len (length mes)) - (func (cdr (assoc sev alert-log-severity-functions)))) - (if (not (featurep 'log4e)) - (alert-legacy-log-notify mes sev len) - ;; when we get here you better be using log4e or have your logging - ;; functions defined - (unless (fboundp func) - (when (fboundp 'log4e:deflogger) - (log4e:deflogger "alert" "%t [%l] %m" "%H:%M:%S") - (when (functionp 'alert--log-set-level) - (alert--log-set-level alert-log-level))) - (alert--log-enable-logging)) - (when (fboundp func) - (apply func (list mes)))))) - -(defun alert-legacy-log-notify (mes sev len) - (with-current-buffer - (get-buffer-create "*Alerts*") - (goto-char (point-max)) - (insert (format-time-string "%H:%M %p - ")) - (insert mes) - (set-text-properties (- (point) len) (point) - (list 'face (cdr (assq sev - alert-severity-faces)))) - (insert ?\n))) - -(defun alert-log-clear (info) - (if (functionp 'alert--log-clear-log) - (alert--log-clear-log) - (if (bufferp "*Alerts*") - (with-current-buffer - (get-buffer-create "*Alerts*") - (goto-char (point-max)) - (insert (format-time-string "%H:%M %p - ") - "Clear: " (plist-get info :message) - ?\n))))) - -(alert-define-style 'log :title "Log to *Alerts* buffer" - :notifier #'alert-log-notify - ;;:remover #'alert-log-clear - ) - -(defun alert-message-notify (info) - ;; the message text might contain `%' and we don't want them to be - ;; interpreted as format specifiers: - (message "%s" (plist-get info :message)) - ;;(if (memq (plist-get info :severity) '(high urgency)) - ;; (ding)) - ) - -(defun alert-message-remove (_info) - (message "")) - -(alert-define-style 'message :title "Display message in minibuffer" - :notifier #'alert-message-notify - :remover #'alert-message-remove) - -(defun alert-momentary-notify (info) - (save-excursion - (with-current-buffer (or (plist-get info :buffer) (current-buffer)) - (momentary-string-display - (format "%s: %s (%s/%s/%s)" - (or (plist-get info :title) "untitled") - (or (plist-get info :message) "no message") - (or (plist-get info :severity) "no priority") - (or (plist-get info :category) "no category") - (or (plist-get info :mode) "no mode")) - (progn - (beginning-of-line) - (point)))))) - -(alert-define-style 'momentary :title "Display message momentarily in buffer" - :notifier #'alert-momentary-notify - ;; explicitly, we don't need a remover - :remover #'ignore) - -(copy-face 'fringe 'alert-saved-fringe-face) - -(defun alert-fringe-notify (info) - (set-face-background 'fringe (cdr (assq (plist-get info :severity) - alert-severity-colors)))) - -(defun alert-fringe-restore (_info) - (copy-face 'alert-saved-fringe-face 'fringe)) - -(alert-define-style 'fringe :title "Change the fringe color" - :notifier #'alert-fringe-notify - :remover #'alert-fringe-restore) - - -(defun alert-mode-line-notify (info) - (copy-face 'mode-line 'alert-saved-mode-line-face) - (set-face-background 'mode-line (cdr (assq (plist-get info :severity) - alert-severity-colors))) - (set-face-foreground 'mode-line "white")) - -(defun alert-mode-line-restore (_info) - (copy-face 'alert-saved-mode-line-face 'mode-line)) - -(alert-define-style 'mode-line :title "Change the mode-line color" - :notifier #'alert-mode-line-notify - :remover #'alert-mode-line-restore) - - - -(defcustom alert-growl-command (executable-find "growlnotify") - "Path to the growlnotify command. -This is found in the Growl Extras: http://growl.info/extras.php." - :type 'file - :group 'alert) - -(defcustom alert-growl-priorities - '((urgent . 2) - (high . 2) - (moderate . 1) - (normal . 0) - (low . -1) - (trivial . -2)) - "A mapping of alert severities onto Growl priority values." - :type '(alist :key-type symbol :value-type integer) - :group 'alert) - -(defsubst alert-encode-string (str) - (encode-coding-string str (keyboard-coding-system))) - -(defun alert-growl-notify (info) - (if alert-growl-command - (let ((args - (list "--appIcon" "Emacs" - "--name" "Emacs" - "--title" (alert-encode-string (plist-get info :title)) - "--message" (alert-encode-string (plist-get info :message)) - "--priority" (number-to-string - (cdr (assq (plist-get info :severity) - alert-growl-priorities)))))) - (if (and (plist-get info :persistent) - (not (plist-get info :never-persist))) - (nconc args (list "--sticky"))) - (apply #'call-process alert-growl-command nil nil nil args)) - (alert-message-notify info))) - -(alert-define-style 'growl :title "Notify using Growl" - :notifier #'alert-growl-notify) - - -(defcustom alert-libnotify-command (executable-find "notify-send") - "Path to the notify-send command. -This is found in the libnotify-bin package in Debian based -systems." - :type 'file - :group 'alert) - -(defcustom alert-libnotify-additional-args - nil - "Additional args to pass to notify-send. -Must be a list of strings." - :type '(repeat string) - :group 'alert) - -(defcustom alert-libnotify-priorities - '((urgent . critical) - (high . critical) - (moderate . normal) - (normal . normal) - (low . low) - (trivial . low)) - "A mapping of alert severities onto libnotify priority values." - :type '(alist :key-type symbol :value-type symbol) - :group 'alert) - -(defun alert-libnotify-notify (info) - "Send INFO using notify-send. -Handles :ICON, :CATEGORY, :SEVERITY, :PERSISTENT, :NEVER-PERSIST, :TITLE -and :MESSAGE keywords from the INFO plist. :CATEGORY can be -passed as a single symbol, a string or a list of symbols or -strings." - (if alert-libnotify-command - (let* ((args - (append - (list "--icon" (or (plist-get info :icon) - alert-default-icon) - "--app-name" "Emacs" - "--urgency" (let ((urgency (cdr (assq - (plist-get info :severity) - alert-libnotify-priorities)))) - (if urgency - (symbol-name urgency) - "normal"))) - (copy-tree alert-libnotify-additional-args))) - (category (plist-get info :category))) - (nconc args - (list "--expire-time" - (number-to-string - (* 1000 ; notify-send takes msecs - (if (and (plist-get info :persistent) - (not (plist-get info :never-persist))) - 0 ; 0 indicates persistence - alert-fade-time))))) - (when category - (nconc args - (list "--category" - (cond ((symbolp category) - (symbol-name category)) - ((stringp category) category) - ((listp category) - (mapconcat (if (symbolp (car category)) - #'symbol-name - #'identity) - category ",")))))) - (nconc args (list - (alert-encode-string (plist-get info :title)) - (alert-encode-string (plist-get info :message)))) - (apply #'call-process alert-libnotify-command nil - (list (get-buffer-create " *libnotify output*") t) nil args)) - (alert-message-notify info))) - -(alert-define-style 'libnotify :title "Notify using libnotify" - :notifier #'alert-libnotify-notify) - - -(defcustom alert-gntp-icon - "http://cvs.savannah.gnu.org/viewvc/*checkout*/emacs/emacs/etc/images/icons/hicolor/48x48/apps/emacs.png" - "Icon file using gntp." - :type 'string - :group 'alert) - -(when (featurep 'gntp) - (defun alert-gntp-notify (info) - (gntp-notify 'alert - (alert-encode-string (plist-get info :title)) - (alert-encode-string (plist-get info :message)) - gntp-server nil - (number-to-string - (cdr (assq (plist-get info :severity) - alert-growl-priorities))) - (if (eq (plist-get info :icon) nil) - alert-gntp-icon - (plist-get info :icon))) - (alert-message-notify info)) - - (alert-define-style 'gntp :title "Notify using gntp" - :notifier #'alert-gntp-notify)) - - -(defcustom alert-notifications-priorities - '((urgent . critical) - (high . critical) - (moderate . normal) - (normal . normal) - (low . low) - (trivial . low)) - "A mapping of alert severities onto Growl priority values." - :type '(alist :key-type symbol :value-type symbol) - :group 'alert) - -(defvar alert-notifications-ids (make-hash-table :test #'equal) - "Internal store of notification ids returned by the `notifications' backend. -Used for replacing notifications with the same id. The key is -the value of the :id keyword to `alert'. An id is only stored -here if there `alert' was called with an :id keyword and handled -by the `notifications' style.") - -(when (featurep 'notifications) - (defun alert-notifications-notify (info) - "Show the alert defined by INFO with `notifications-notify'." - (let ((id (notifications-notify :title (plist-get info :title) - :body (plist-get info :message) - :app-icon (plist-get info :icon) - :timeout (if (plist-get info :persistent) 0 -1) - :replaces-id (gethash (plist-get info :id) alert-notifications-ids) - :urgency (cdr (assq (plist-get info :severity) - alert-notifications-priorities)) - :actions '("default" "Open corresponding buffer") - :on-action (lambda (id action) - (when (string= action "default") - (switch-to-buffer (plist-get info :buffer))))))) - (when (plist-get info :id) - (puthash (plist-get info :id) id alert-notifications-ids))) - (alert-message-notify info)) - - (defun alert-notifications-remove (info) - "Remove the `notifications-notify' message based on INFO :id." - (let ((id (and (plist-get info :id) - (gethash (plist-get info :id) alert-notifications-ids)))) - (when id - (notifications-close-notification id) - (remhash (plist-get info :id) alert-notifications-ids)))) - - (alert-define-style 'notifications :title "Notify using notifications" - :notifier #'alert-notifications-notify)) - - -(defcustom alert-notifier-command (executable-find "terminal-notifier") - "Path to the terminal-notifier command. -From https://github.com/julienXX/terminal-notifier." - :type 'file - :group 'alert) - -(defcustom alert-notifier-default-icon - (concat data-directory - "images/icons/hicolor/128x128/apps/emacs.png") - "Filename of default icon to show for terminal-notifier alerts." - :type 'string - :group 'alert) - -(defun alert-notifier-notify (info) - (if alert-notifier-command - (let ((args - (list "-title" (alert-encode-string (plist-get info :title)) - "-appIcon" (or (plist-get info :icon) alert-notifier-default-icon) - "-message" (alert-encode-string (plist-get info :message))))) - (apply #'call-process alert-notifier-command nil nil nil args)) - (alert-message-notify info))) - -(alert-define-style 'notifier :title "Notify using terminal-notifier" - :notifier #'alert-notifier-notify) - -(defun alert-osx-notifier-notify (info) - (apply #'call-process "osascript" nil nil nil "-e" - (list (format "display notification %S with title %S" - (alert-encode-string (plist-get info :message)) - (alert-encode-string (plist-get info :title))))) - (alert-message-notify info)) - -(when (fboundp 'mac-do-applescript) - ;; Use built-in AppleScript support when possible. - (defun alert-osx-notifier-notify (info) - (mac-do-applescript (format "display notification %S with title %S" - (alert-encode-string (plist-get info :message)) - (alert-encode-string (plist-get info :title)))) - (alert-message-notify info))) - -(alert-define-style 'osx-notifier :title "Notify using native OSX notification" :notifier #'alert-osx-notifier-notify) - -(defun alert-frame-notify (info) - (let ((buf (plist-get info :buffer))) - (if (eq (alert-buffer-status buf) 'buried) - (let ((current-frame (selected-frame))) - (with-selected-frame - (make-frame '((width . 80) - (height . 20) - (top . -1) - (left . 0) - (left-fringe . 0) - (right-fringe . 0) - (tool-bar-lines . nil) - (menu-bar-lines . nil) - (vertical-scroll-bars . nil) - (unsplittable . t) - (has-modeline-p . nil) - (minibuffer . nil))) - (switch-to-buffer buf) - ;;(set (make-local-variable 'mode-line-format) nil) - (nconc info (list :frame (selected-frame)))) - (select-frame current-frame))))) - -(defun alert-frame-remove (info) - (unless (eq this-command 'handle-switch-frame) - (delete-frame (plist-get info :frame) t))) - -;; This code was kindly borrowed from Arne Babenhauserheide: -;; http://www.draketo.de/proj/babcore/#sec-3-14-2 -(defun x-urgency-hint (frame arg &optional source) - "Set the x-urgency hint for FRAME to ARG. - -- If arg is nil, unset the urgency. -- If arg is any other value, set the urgency. - -If you unset the urgency, you still have to visit the frame to make the urgency -setting disappear (at least in KDE)." - (let* ((wm-hints (append (x-window-property - "WM_HINTS" frame "WM_HINTS" - source nil t) nil)) - (flags (car wm-hints))) - (setcar wm-hints - (if arg - (logior flags #x00000100) - (logand flags #x1ffffeff))) - (x-change-window-property "WM_HINTS" wm-hints frame "WM_HINTS" 32 t))) - -(defun x-urgent (&optional arg) - "Mark the current Emacs frame as requiring urgent attention. - -With non-nil ARG, remove the urgency flag (which might or might -not change display, depending on the window manager)." - (interactive "P") - (let ((frame (car (car (cdr (current-frame-configuration)))))) - (x-urgency-hint frame (not arg)))) - -(defun alert-x11-notify (_info) - "Call `x-urgent'." - (x-urgent)) - -(alert-define-style 'x11 :title "Set the X11 window property" - :notifier #'alert-x11-notify) - - -(defcustom alert-toaster-default-icon - (let ((exec-bin (executable-find "emacs.exe"))) - (cond (exec-bin - (concat (file-name-directory exec-bin) "../share/icons/hicolor/128x128/apps/emacs.png")) - (t nil))) - "Icon file using toaster." - :type 'string - :group 'alert - ) - -(defcustom alert-toaster-command (executable-find "toast") - "Path to the toast command. -This is found at https://github.com/nels-o/toaster." - :type 'file - :group 'alert - ) - -(defun alert-toaster-notify (info) - (if alert-toaster-command - (let ((args (list - "-t" (alert-encode-string (plist-get info :title)) - "-m" (alert-encode-string (plist-get info :message)) - "-p" (expand-file-name (or (plist-get info :icon) alert-toaster-default-icon)) - ))) - (apply #'call-process alert-toaster-command nil nil nil args)) - (alert-message-notify info))) - -(alert-define-style 'toaster :title "Notify using Toaster" - :notifier #'alert-toaster-notify) - -;; jww (2011-08-25): Not quite working yet -;;(alert-define-style 'frame :title "Popup buffer in a frame" -;; :notifier #'alert-frame-notify -;; :remover #'alert-frame-remove) - -(defun alert-buffer-status (&optional buffer) - (with-current-buffer (or buffer (current-buffer)) - (let ((wind (get-buffer-window))) - (if wind - (if (eq wind (selected-window)) - (if (and (current-idle-time) - (> (float-time (current-idle-time)) - alert-reveal-idle-time)) - 'idle - 'selected) - 'visible) - 'buried)))) - -(defvar alert-active-alerts nil) - -(defun alert-remove-when-active (remover info) - (let ((idle-time (and (current-idle-time) - (float-time (current-idle-time))))) - (cond - ((and idle-time (> idle-time alert-persist-idle-time))) - ((and idle-time (> idle-time alert-reveal-idle-time)) - (run-with-timer alert-fade-time nil - #'alert-remove-when-active remover info)) - (t - (funcall remover info))))) - -(defun alert-remove-on-command () - (let (to-delete) - (dolist (alert alert-active-alerts) - (when (eq (current-buffer) (nth 0 alert)) - (push alert to-delete) - (if (nth 2 alert) - (funcall (nth 2 alert) (nth 1 alert))))) - (dolist (alert to-delete) - (setq alert-active-alerts (delq alert alert-active-alerts))))) - -(defun alert-send-notification - (alert-buffer info style-def &optional persist never-per) - (let ((notifier (plist-get style-def :notifier))) - (if notifier - (funcall notifier info))) - (let ((remover (plist-get style-def :remover))) - (add-to-list 'alert-active-alerts (list alert-buffer info remover)) - (with-current-buffer alert-buffer - (add-hook 'post-command-hook #'alert-remove-on-command nil t)) - (if (and remover (or (not persist) never-per)) - (run-with-timer alert-fade-time nil - #'alert-remove-when-active - remover info)))) - -;;;###autoload -(cl-defun alert (message &key (severity 'normal) title icon category - buffer mode data style persistent never-persist - id) - "Alert the user that something has happened. -MESSAGE is what the user will see. You may also use keyword -arguments to specify additional details. Here is a full example: - -\(alert \"This is a message\" - :severity \\='high ;; The default severity is `normal' - :title \"Title\" ;; An optional title - :category \\='example ;; A symbol to identify the message - :mode \\='text-mode ;; Normally determined automatically - :buffer (current-buffer) ;; This is the default - :data nil ;; Unused by alert.el itself - :persistent nil ;; Force the alert to be persistent; - ;; it is best not to use this - :never-persist nil ;; Force this alert to never persist - :id \\='my-id) ;; Used to replace previous message of - ;; the same id in styles that support it - :style \\='fringe) ;; Force a given style to be used; - ;; this is only for debugging! - -If no :title is given, the buffer-name of :buffer is used. If -:buffer is nil, it is the current buffer at the point of call. - -:data is an opaque value which modules can pass through to their -own styles if they wish. - -Here are some more typical examples of usage: - - ;; This is the most basic form usage - (alert \"This is an alert\") - - ;; You can adjust the severity for more important messages - (alert \"This is an alert\" :severity \\='high) - - ;; Or decrease it for purely informative ones - (alert \"This is an alert\" :severity \\='trivial) - - ;; Alerts can have optional titles. Otherwise, the title is the - ;; buffer-name of the (current-buffer) where the alert originated. - (alert \"This is an alert\" :title \"My Alert\") - - ;; Further, alerts can have categories. This allows users to - ;; selectively filter on them. - (alert \"This is an alert\" :title \"My Alert\" - :category \\='some-category-or-other)" - (cl-destructuring-bind - (alert-buffer current-major-mode current-buffer-status - current-buffer-name) - (with-current-buffer (or buffer (current-buffer)) - (list (current-buffer) - (or mode major-mode) - (alert-buffer-status) - (buffer-name))) - - (let ((base-info (list :message message - :title (or title current-buffer-name) - :icon icon - :severity severity - :category category - :buffer alert-buffer - :mode current-major-mode - :id id - :data data)) - matched) - - (if alert-log-messages - (alert-log-notify base-info)) - - (unless alert-hide-all-notifications - (catch 'finish - (dolist (config (append alert-user-configuration - alert-internal-configuration)) - (let* ((style-def (cdr (assq (or style (nth 1 config)) - alert-styles))) - (options (nth 2 config)) - (persist-p (or persistent - (cdr (assq :persistent options)))) - (persist (if (functionp persist-p) - (funcall persist-p base-info) - persist-p)) - (never-persist-p - (or never-persist - (cdr (assq :never-persist options)))) - (never-per (if (functionp never-persist-p) - (funcall never-persist-p base-info) - never-persist-p)) - (continue (cdr (assq :continue options))) - info) - (setq info (if (not (memq :persistent base-info)) - (append base-info (list :persistent persist)) - base-info) - info (if (not (memq :never-persist info)) - (append info (list :never-persist never-per)) - info)) - (when - (or style ; :style always "matches", for testing - (not - (memq - nil - (mapcar - #'(lambda (condition) - (cl-case (car condition) - (:severity - (memq severity (cdr condition))) - (:status - (memq current-buffer-status (cdr condition))) - (:mode - (string-match - (cdr condition) - (symbol-name current-major-mode))) - (:category - (and category (string-match - (cdr condition) - (if (stringp category) - category - (symbol-name category))))) - (:title - (and title - (string-match (cdr condition) title))) - (:message - (string-match (cdr condition) message)) - (:predicate - (funcall (cdr condition) info)) - (:icon - (string-match (cdr condition) icon)))) - (nth 0 config))))) - - (alert-send-notification alert-buffer info style-def - persist never-per) - (setq matched t) - (if (or style (not (if (functionp continue) - (funcall continue info) - continue))) - (throw 'finish t))))))) - - (if (and (not matched) alert-default-style) - (alert-send-notification alert-buffer base-info - (cdr (assq alert-default-style - alert-styles))))))) - -(provide 'alert) - -;;; alert.el ends here diff --git a/elpa/alert-20200303.2118/alert.elc b/elpa/alert-20200303.2118/alert.elc deleted file mode 100644 index 4dae11a9..00000000 Binary files a/elpa/alert-20200303.2118/alert.elc and /dev/null differ diff --git a/elpa/anaphora-20180618.2200/anaphora-autoloads.el b/elpa/anaphora-20180618.2200/anaphora-autoloads.el deleted file mode 100644 index cd3cf829..00000000 --- a/elpa/anaphora-20180618.2200/anaphora-autoloads.el +++ /dev/null @@ -1,228 +0,0 @@ -;;; anaphora-autoloads.el --- automatically extracted autoloads -;; -;;; Code: - -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) - - -;;;### (autoloads nil "anaphora" "anaphora.el" (0 0 0 0)) -;;; Generated autoloads from anaphora.el - -(let ((loads (get 'anaphora 'custom-loads))) (if (member '"anaphora" loads) nil (put 'anaphora 'custom-loads (cons '"anaphora" loads)))) - -(defvar anaphora-use-long-names-only nil "\ -Use only long names such as `anaphoric-if' instead of traditional `aif'.") - -(custom-autoload 'anaphora-use-long-names-only "anaphora" t) - -(defun anaphora--install-traditional-aliases (&optional arg) "\ -Install traditional short aliases for anaphoric macros. - -With negative numeric ARG, remove traditional aliases." (let ((syms (quote ((if . t) (prog1 . t) (prog2 . t) (when . when) (while . t) (and . t) (cond . cond) (lambda . lambda) (block . block) (case . case) (ecase . ecase) (typecase . typecase) (etypecase . etypecase) (let . let) (+ . t) (- . t) (* . t) (/ . t))))) (cond ((and (numberp arg) (< arg 0)) (dolist (cell syms) (when (ignore-errors (eq (symbol-function (intern-soft (format "a%s" (car cell)))) (intern-soft (format "anaphoric-%s" (car cell))))) (fmakunbound (intern (format "a%s" (car cell))))))) (t (dolist (cell syms) (let* ((builtin (car cell)) (traditional (intern (format "a%s" builtin))) (long (intern (format "anaphoric-%s" builtin)))) (defalias traditional long) (put traditional (quote lisp-indent-function) (get builtin (quote lisp-indent-function))) (put traditional (quote edebug-form-spec) (cdr cell)))))))) - -(unless anaphora-use-long-names-only (anaphora--install-traditional-aliases)) - -(autoload 'anaphoric-if "anaphora" "\ -Like `if', but the result of evaluating COND is bound to `it'. - -The variable `it' is available within THEN and ELSE. - -COND, THEN, and ELSE are otherwise as documented for `if'. - -\(fn COND THEN &rest ELSE)" nil t) - -(function-put 'anaphoric-if 'lisp-indent-function '2) - -(autoload 'anaphoric-prog1 "anaphora" "\ -Like `prog1', but the result of evaluating FIRST is bound to `it'. - -The variable `it' is available within BODY. - -FIRST and BODY are otherwise as documented for `prog1'. - -\(fn FIRST &rest BODY)" nil t) - -(function-put 'anaphoric-prog1 'lisp-indent-function '1) - -(autoload 'anaphoric-prog2 "anaphora" "\ -Like `prog2', but the result of evaluating FORM2 is bound to `it'. - -The variable `it' is available within BODY. - -FORM1, FORM2, and BODY are otherwise as documented for `prog2'. - -\(fn FORM1 FORM2 &rest BODY)" nil t) - -(function-put 'anaphoric-prog2 'lisp-indent-function '2) - -(autoload 'anaphoric-when "anaphora" "\ -Like `when', but the result of evaluating COND is bound to `it'. - -The variable `it' is available within BODY. - -COND and BODY are otherwise as documented for `when'. - -\(fn COND &rest BODY)" nil t) - -(function-put 'anaphoric-when 'lisp-indent-function '1) - -(autoload 'anaphoric-while "anaphora" "\ -Like `while', but the result of evaluating TEST is bound to `it'. - -The variable `it' is available within BODY. - -TEST and BODY are otherwise as documented for `while'. - -\(fn TEST &rest BODY)" nil t) - -(function-put 'anaphoric-while 'lisp-indent-function '1) - -(autoload 'anaphoric-and "anaphora" "\ -Like `and', but the result of the previous condition is bound to `it'. - -The variable `it' is available within all CONDITIONS after the -initial one. - -CONDITIONS are otherwise as documented for `and'. - -Note that some implementations of this macro bind only the first -condition to `it', rather than each successive condition. - -\(fn &rest CONDITIONS)" nil t) - -(autoload 'anaphoric-cond "anaphora" "\ -Like `cond', but the result of each condition is bound to `it'. - -The variable `it' is available within the remainder of each of CLAUSES. - -CLAUSES are otherwise as documented for `cond'. - -\(fn &rest CLAUSES)" nil t) - -(autoload 'anaphoric-lambda "anaphora" "\ -Like `lambda', but the function may refer to itself as `self'. - -ARGS and BODY are otherwise as documented for `lambda'. - -\(fn ARGS &rest BODY)" nil t) - -(function-put 'anaphoric-lambda 'lisp-indent-function 'defun) - -(autoload 'anaphoric-block "anaphora" "\ -Like `block', but the result of the previous expression is bound to `it'. - -The variable `it' is available within all expressions of BODY -except the initial one. - -NAME and BODY are otherwise as documented for `block'. - -\(fn NAME &rest BODY)" nil t) - -(function-put 'anaphoric-block 'lisp-indent-function '1) - -(autoload 'anaphoric-case "anaphora" "\ -Like `case', but the result of evaluating EXPR is bound to `it'. - -The variable `it' is available within CLAUSES. - -EXPR and CLAUSES are otherwise as documented for `case'. - -\(fn EXPR &rest CLAUSES)" nil t) - -(function-put 'anaphoric-case 'lisp-indent-function '1) - -(autoload 'anaphoric-ecase "anaphora" "\ -Like `ecase', but the result of evaluating EXPR is bound to `it'. - -The variable `it' is available within CLAUSES. - -EXPR and CLAUSES are otherwise as documented for `ecase'. - -\(fn EXPR &rest CLAUSES)" nil t) - -(function-put 'anaphoric-ecase 'lisp-indent-function '1) - -(autoload 'anaphoric-typecase "anaphora" "\ -Like `typecase', but the result of evaluating EXPR is bound to `it'. - -The variable `it' is available within CLAUSES. - -EXPR and CLAUSES are otherwise as documented for `typecase'. - -\(fn EXPR &rest CLAUSES)" nil t) - -(function-put 'anaphoric-typecase 'lisp-indent-function '1) - -(autoload 'anaphoric-etypecase "anaphora" "\ -Like `etypecase', but result of evaluating EXPR is bound to `it'. - -The variable `it' is available within CLAUSES. - -EXPR and CLAUSES are otherwise as documented for `etypecase'. - -\(fn EXPR &rest CLAUSES)" nil t) - -(function-put 'anaphoric-etypecase 'lisp-indent-function '1) - -(autoload 'anaphoric-let "anaphora" "\ -Like `let', but the result of evaluating FORM is bound to `it'. - -FORM and BODY are otherwise as documented for `let'. - -\(fn FORM &rest BODY)" nil t) - -(function-put 'anaphoric-let 'lisp-indent-function '1) - -(autoload 'anaphoric-+ "anaphora" "\ -Like `+', but the result of evaluating the previous expression is bound to `it'. - -The variable `it' is available within all expressions after the -initial one. - -NUMBERS-OR-MARKERS are otherwise as documented for `+'. - -\(fn &rest NUMBERS-OR-MARKERS)" nil t) - -(autoload 'anaphoric-- "anaphora" "\ -Like `-', but the result of evaluating the previous expression is bound to `it'. - -The variable `it' is available within all expressions after the -initial one. - -NUMBER-OR-MARKER and NUMBERS-OR-MARKERS are otherwise as -documented for `-'. - -\(fn &optional NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)" nil t) - -(autoload 'anaphoric-* "anaphora" "\ -Like `*', but the result of evaluating the previous expression is bound to `it'. - -The variable `it' is available within all expressions after the -initial one. - -NUMBERS-OR-MARKERS are otherwise as documented for `*'. - -\(fn &rest NUMBERS-OR-MARKERS)" nil t) - -(autoload 'anaphoric-/ "anaphora" "\ -Like `/', but the result of evaluating the previous divisor is bound to `it'. - -The variable `it' is available within all expressions after the -first divisor. - -DIVIDEND, DIVISOR, and DIVISORS are otherwise as documented for `/'. - -\(fn DIVIDEND DIVISOR &rest DIVISORS)" nil t) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "anaphora" '("anaphora-install-font-lock-keywords"))) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; anaphora-autoloads.el ends here diff --git a/elpa/anaphora-20180618.2200/anaphora-pkg.el b/elpa/anaphora-20180618.2200/anaphora-pkg.el deleted file mode 100644 index edb9e644..00000000 --- a/elpa/anaphora-20180618.2200/anaphora-pkg.el +++ /dev/null @@ -1,2 +0,0 @@ -;;; -*- no-byte-compile: t -*- -(define-package "anaphora" "20180618.2200" "anaphoric macros providing implicit temp variables" 'nil :commit "3b2da3f759b244975852e79721c4a2dbad3905cf" :keywords '("extensions") :authors '(("Roland Walker" . "walker@pobox.com")) :maintainer '("Roland Walker" . "walker@pobox.com") :url "http://github.com/rolandwalker/anaphora") diff --git a/elpa/anaphora-20180618.2200/anaphora.el b/elpa/anaphora-20180618.2200/anaphora.el deleted file mode 100644 index fa575847..00000000 --- a/elpa/anaphora-20180618.2200/anaphora.el +++ /dev/null @@ -1,461 +0,0 @@ -;;; anaphora.el --- anaphoric macros providing implicit temp variables -*- lexical-binding: t -*- -;; -;; This code is in the public domain. -;; -;; Author: Roland Walker -;; Homepage: http://github.com/rolandwalker/anaphora -;; URL: http://raw.githubusercontent.com/rolandwalker/anaphora/master/anaphora.el -;; Package-Version: 20180618.2200 -;; Version: 1.0.4 -;; Last-Updated: 18 Jun 2018 -;; EmacsWiki: Anaphora -;; Keywords: extensions -;; -;;; Commentary: -;; -;; Quickstart -;; -;; (require 'anaphora) -;; -;; (awhen (big-long-calculation) -;; (foo it) ; `it' is provided as -;; (bar it)) ; a temporary variable -;; -;; ;; anonymous function to compute factorial using `self' -;; (alambda (x) (if (= x 0) 1 (* x (self (1- x))))) -;; -;; ;; to fontify `it' and `self' -;; (with-eval-after-load "lisp-mode" -;; (anaphora-install-font-lock-keywords)) -;; -;; Explanation -;; -;; Anaphoric expressions implicitly create one or more temporary -;; variables which can be referred to during the expression. This -;; technique can improve clarity in certain cases. It also enables -;; recursion for anonymous functions. -;; -;; To use anaphora, place the anaphora.el library somewhere -;; Emacs can find it, and add the following to your ~/.emacs file: -;; -;; (require 'anaphora) -;; -;; The following macros are made available -;; -;; `aand' -;; `ablock' -;; `acase' -;; `acond' -;; `aecase' -;; `aetypecase' -;; `aif' -;; `alambda' -;; `alet' -;; `aprog1' -;; `aprog2' -;; `atypecase' -;; `awhen' -;; `awhile' -;; `a+' -;; `a-' -;; `a*' -;; `a/' -;; -;; See Also -;; -;; M-x customize-group RET anaphora RET -;; http://en.wikipedia.org/wiki/On_Lisp -;; http://en.wikipedia.org/wiki/Anaphoric_macro -;; -;; Notes -;; -;; Partially based on examples from the book "On Lisp", by Paul -;; Graham. -;; -;; Compatibility and Requirements -;; -;; GNU Emacs version 26.1 : yes -;; GNU Emacs version 25.x : yes -;; GNU Emacs version 24.x : yes -;; GNU Emacs version 23.x : yes -;; GNU Emacs version 22.x : yes -;; GNU Emacs version 21.x and lower : unknown -;; -;; Bugs -;; -;; TODO -;; -;; better face for it and self -;; -;;; License -;; -;; All code contributed by the author to this library is placed in the -;; public domain. It is the author's belief that the portions adapted -;; from examples in "On Lisp" are in the public domain. -;; -;; Regardless of the copyright status of individual functions, all -;; code herein is free software, and is provided without any express -;; or implied warranties. -;; -;;; Code: -;; - -;;; requirements - -;; for declare, labels, do, block, case, ecase, typecase, etypecase -(require 'cl-lib) - -;;; customizable variables - -;;;###autoload -(defgroup anaphora nil - "Anaphoric macros providing implicit temp variables" - :version "1.0.4" - :link '(emacs-commentary-link :tag "Commentary" "anaphora") - :link '(url-link :tag "GitHub" "http://github.com/rolandwalker/anaphora") - :link '(url-link :tag "EmacsWiki" "http://emacswiki.org/emacs/Anaphora") - :prefix "anaphora-" - :group 'extensions) - -;;;###autoload -(defcustom anaphora-use-long-names-only nil - "Use only long names such as `anaphoric-if' instead of traditional `aif'." - :type 'boolean - :group 'anaphora) - -;;; font-lock - -(defun anaphora-install-font-lock-keywords nil - "Fontify keywords `it' and `self'." - (font-lock-add-keywords 'emacs-lisp-mode `((,(concat "\\<" (regexp-opt '("it" "self") 'paren) "\\>") - 1 font-lock-variable-name-face)) 'append)) - -;;; aliases - -;;;###autoload -(progn - (defun anaphora--install-traditional-aliases (&optional arg) - "Install traditional short aliases for anaphoric macros. - -With negative numeric ARG, remove traditional aliases." - (let ((syms '( - (if . t) - (prog1 . t) - (prog2 . t) - (when . when) - (while . t) - (and . t) - (cond . cond) - (lambda . lambda) - (block . block) - (case . case) - (ecase . ecase) - (typecase . typecase) - (etypecase . etypecase) - (let . let) - (+ . t) - (- . t) - (* . t) - (/ . t) - ))) - (cond - ((and (numberp arg) - (< arg 0)) - (dolist (cell syms) - (when (ignore-errors - (eq (symbol-function (intern-soft (format "a%s" (car cell)))) - (intern-soft (format "anaphoric-%s" (car cell))))) - (fmakunbound (intern (format "a%s" (car cell))))))) - (t - (dolist (cell syms) - (let* ((builtin (car cell)) - (traditional (intern (format "a%s" builtin))) - (long (intern (format "anaphoric-%s" builtin)))) - (defalias traditional long) - (put traditional 'lisp-indent-function - (get builtin 'lisp-indent-function)) - (put traditional 'edebug-form-spec (cdr cell))))))))) - -;;;###autoload -(unless anaphora-use-long-names-only - (anaphora--install-traditional-aliases)) - -;;; macros - -;;;###autoload -(defmacro anaphoric-if (cond then &rest else) - "Like `if', but the result of evaluating COND is bound to `it'. - -The variable `it' is available within THEN and ELSE. - -COND, THEN, and ELSE are otherwise as documented for `if'." - (declare (debug t) - (indent 2)) - `(let ((it ,cond)) - (if it ,then ,@else))) - -;;;###autoload -(defmacro anaphoric-prog1 (first &rest body) - "Like `prog1', but the result of evaluating FIRST is bound to `it'. - -The variable `it' is available within BODY. - -FIRST and BODY are otherwise as documented for `prog1'." - (declare (debug t) - (indent 1)) - `(let ((it ,first)) - (progn ,@body) - it)) - -;;;###autoload -(defmacro anaphoric-prog2 (form1 form2 &rest body) - "Like `prog2', but the result of evaluating FORM2 is bound to `it'. - -The variable `it' is available within BODY. - -FORM1, FORM2, and BODY are otherwise as documented for `prog2'." - (declare (debug t) - (indent 2)) - `(progn - ,form1 - (let ((it ,form2)) - (progn ,@body) - it))) - -;;;###autoload -(defmacro anaphoric-when (cond &rest body) - "Like `when', but the result of evaluating COND is bound to `it'. - -The variable `it' is available within BODY. - -COND and BODY are otherwise as documented for `when'." - (declare (debug when) - (indent 1)) - `(anaphoric-if ,cond - (progn ,@body))) - -;;;###autoload -(defmacro anaphoric-while (test &rest body) - "Like `while', but the result of evaluating TEST is bound to `it'. - -The variable `it' is available within BODY. - -TEST and BODY are otherwise as documented for `while'." - (declare (debug t) - (indent 1)) - `(do ((it ,test ,test)) - ((not it)) - ,@body)) - -;;;###autoload -(defmacro anaphoric-and (&rest conditions) - "Like `and', but the result of the previous condition is bound to `it'. - -The variable `it' is available within all CONDITIONS after the -initial one. - -CONDITIONS are otherwise as documented for `and'. - -Note that some implementations of this macro bind only the first -condition to `it', rather than each successive condition." - (declare (debug t)) - (cond - ((null conditions) - t) - ((null (cdr conditions)) - (car conditions)) - (t - `(anaphoric-if ,(car conditions) (anaphoric-and ,@(cdr conditions)))))) - -;;;###autoload -(defmacro anaphoric-cond (&rest clauses) - "Like `cond', but the result of each condition is bound to `it'. - -The variable `it' is available within the remainder of each of CLAUSES. - -CLAUSES are otherwise as documented for `cond'." - (declare (debug cond)) - (if (null clauses) - nil - (let ((cl1 (car clauses)) - (sym (gensym))) - `(let ((,sym ,(car cl1))) - (if ,sym - (if (null ',(cdr cl1)) - ,sym - (let ((it ,sym)) ,@(cdr cl1))) - (anaphoric-cond ,@(cdr clauses))))))) - -;;;###autoload -(defmacro anaphoric-lambda (args &rest body) - "Like `lambda', but the function may refer to itself as `self'. - -ARGS and BODY are otherwise as documented for `lambda'." - (declare (debug lambda) - (indent defun)) - `(cl-labels ((self ,args ,@body)) - #'self)) - -;;;###autoload -(defmacro anaphoric-block (name &rest body) - "Like `block', but the result of the previous expression is bound to `it'. - -The variable `it' is available within all expressions of BODY -except the initial one. - -NAME and BODY are otherwise as documented for `block'." - (declare (debug block) - (indent 1)) - `(cl-block ,name - ,(funcall (anaphoric-lambda (body) - (cl-case (length body) - (0 nil) - (1 (car body)) - (t `(let ((it ,(car body))) - ,(self (cdr body)))))) - body))) - -;;;###autoload -(defmacro anaphoric-case (expr &rest clauses) - "Like `case', but the result of evaluating EXPR is bound to `it'. - -The variable `it' is available within CLAUSES. - -EXPR and CLAUSES are otherwise as documented for `case'." - (declare (debug case) - (indent 1)) - `(let ((it ,expr)) - (cl-case it ,@clauses))) - -;;;###autoload -(defmacro anaphoric-ecase (expr &rest clauses) - "Like `ecase', but the result of evaluating EXPR is bound to `it'. - -The variable `it' is available within CLAUSES. - -EXPR and CLAUSES are otherwise as documented for `ecase'." - (declare (debug ecase) - (indent 1)) - `(let ((it ,expr)) - (cl-ecase it ,@clauses))) - -;;;###autoload -(defmacro anaphoric-typecase (expr &rest clauses) - "Like `typecase', but the result of evaluating EXPR is bound to `it'. - -The variable `it' is available within CLAUSES. - -EXPR and CLAUSES are otherwise as documented for `typecase'." - (declare (debug typecase) - (indent 1)) - `(let ((it ,expr)) - (cl-typecase it ,@clauses))) - -;;;###autoload -(defmacro anaphoric-etypecase (expr &rest clauses) - "Like `etypecase', but result of evaluating EXPR is bound to `it'. - -The variable `it' is available within CLAUSES. - -EXPR and CLAUSES are otherwise as documented for `etypecase'." - (declare (debug etypecase) - (indent 1)) - `(let ((it ,expr)) - (cl-etypecase it ,@clauses))) - -;;;###autoload -(defmacro anaphoric-let (form &rest body) - "Like `let', but the result of evaluating FORM is bound to `it'. - -FORM and BODY are otherwise as documented for `let'." - (declare (debug let) - (indent 1)) - `(let ((it ,form)) - (progn ,@body))) - -;;;###autoload -(defmacro anaphoric-+ (&rest numbers-or-markers) - "Like `+', but the result of evaluating the previous expression is bound to `it'. - -The variable `it' is available within all expressions after the -initial one. - -NUMBERS-OR-MARKERS are otherwise as documented for `+'." - (declare (debug t)) - (cond - ((null numbers-or-markers) - 0) - (t - `(let ((it ,(car numbers-or-markers))) - (+ it (anaphoric-+ ,@(cdr numbers-or-markers))))))) - -;;;###autoload -(defmacro anaphoric-- (&optional number-or-marker &rest numbers-or-markers) - "Like `-', but the result of evaluating the previous expression is bound to `it'. - -The variable `it' is available within all expressions after the -initial one. - -NUMBER-OR-MARKER and NUMBERS-OR-MARKERS are otherwise as -documented for `-'." - (declare (debug t)) - (cond - ((null number-or-marker) - 0) - ((null numbers-or-markers) - `(- ,number-or-marker)) - (t - `(let ((it ,(car numbers-or-markers))) - (- ,number-or-marker (+ it (anaphoric-+ ,@(cdr numbers-or-markers)))))))) - -;;;###autoload -(defmacro anaphoric-* (&rest numbers-or-markers) - "Like `*', but the result of evaluating the previous expression is bound to `it'. - -The variable `it' is available within all expressions after the -initial one. - -NUMBERS-OR-MARKERS are otherwise as documented for `*'." - (declare (debug t)) - (cond - ((null numbers-or-markers) - 1) - (t - `(let ((it ,(car numbers-or-markers))) - (* it (anaphoric-* ,@(cdr numbers-or-markers))))))) - -;;;###autoload -(defmacro anaphoric-/ (dividend divisor &rest divisors) - "Like `/', but the result of evaluating the previous divisor is bound to `it'. - -The variable `it' is available within all expressions after the -first divisor. - -DIVIDEND, DIVISOR, and DIVISORS are otherwise as documented for `/'." - (declare (debug t)) - (cond - ((null divisors) - `(/ ,dividend ,divisor)) - (t - `(let ((it ,divisor)) - (/ ,dividend (* it (anaphoric-* ,@divisors))))))) - -(provide 'anaphora) - -;; -;; Emacs -;; -;; Local Variables: -;; indent-tabs-mode: nil -;; mangle-whitespace: t -;; require-final-newline: t -;; coding: utf-8 -;; byte-compile-warnings: (not cl-functions redefine) -;; End: -;; -;; LocalWords: Anaphora EXPR awhen COND ARGS alambda ecase typecase -;; LocalWords: etypecase aprog aand acond ablock acase aecase alet -;; LocalWords: atypecase aetypecase -;; - -;;; anaphora.el ends here diff --git a/elpa/anaphora-20180618.2200/anaphora.elc b/elpa/anaphora-20180618.2200/anaphora.elc deleted file mode 100644 index 52398f35..00000000 Binary files a/elpa/anaphora-20180618.2200/anaphora.elc and /dev/null differ diff --git a/elpa/archives/gnu/archive-contents b/elpa/archives/gnu/archive-contents deleted file mode 100644 index c7016138..00000000 --- a/elpa/archives/gnu/archive-contents +++ /dev/null @@ -1,2406 +0,0 @@ -(1 - (ace-window . - [(0 9 0) - ((avy - (0 2 0))) - "Quickly switch windows." single - ((:keywords "window" "location") - (:authors - ("Oleh Krehel" . "ohwoeowho@gmail.com")) - (:maintainer "Oleh Krehel" . "ohwoeowho@gmail.com") - (:url . "https://github.com/abo-abo/ace-window"))]) - (ack . - [(1 8) - nil "interface to ack-like tools" tar - ((:url . "https://github.com/leoliu/ack-el") - (:maintainer "JoĂŁo Távora" . "joaotavora@gmail.com") - (:authors - ("Leo Liu" . "sdl.web@gmail.com")) - (:keywords "tools" "processes" "convenience"))]) - (ada-mode . - [(7 0 1) - ((uniquify-files - (1 0 1)) - (wisi - (3 0 1)) - (emacs - (25 0))) - "major-mode for editing Ada sources" tar - ((:url . "http://www.nongnu.org/ada-mode/") - (:maintainer "Stephen Leake" . "stephen_leake@stephe-leake.org") - (:authors - ("Stephen Leake" . "stephen_leake@stephe-leake.org")) - (:keywords "languages" "ada"))]) - (ada-ref-man . - [(2012 5) - nil "Ada Reference Manual 2012" tar - ((:url . "http://stephe-leake.org/ada/arm.html") - (:maintainer "Stephen Leake" . "stephen_leake@member.fsf.org") - (:authors - ("Stephen Leake" . "stephen_leake@member.fsf.org")) - (:keywords "languages" "ada"))]) - (adaptive-wrap . - [(0 7) - nil "Smart line-wrapping with wrap-prefix" single - ((:url . "http://elpa.gnu.org/packages/adaptive-wrap.html") - (:authors - ("Stephen Berman" . "stephen.berman@gmx.net") - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stephen Berman" . "stephen.berman@gmx.net"))]) - (adjust-parens . - [(3 1) - nil "Indent and dedent Lisp code, automatically adjust close parens" tar - ((:maintainer "Barry O'Reilly" . "gundaetiapo@gmail.com") - (:authors - ("Barry O'Reilly" . "gundaetiapo@gmail.com")) - (:url . "http://elpa.gnu.org/packages/adjust-parens.html"))]) - (advice-patch . - [(0 1) - ((emacs - (24 4))) - "Use patches to advise the inside of functions" single - ((:url . "http://elpa.gnu.org/packages/advice-patch.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (aggressive-indent . - [(1 8 3) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "Minor mode to aggressively keep your code always indented" single - ((:keywords "indent" "lisp" "maint" "tools") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com") - (:url . "https://github.com/Malabarba/aggressive-indent-mode"))]) - (ahungry-theme . - [(1 10 0) - ((emacs - (24))) - "Ahungry color theme for Emacs. Make sure to (load-theme 'ahungry)." tar - ((:url . "https://github.com/ahungry/color-theme-ahungry") - (:maintainer "Matthew Carter" . "m@ahungry.com") - (:authors - ("Matthew Carter" . "m@ahungry.com")) - (:keywords "ahungry" "palette" "color" "theme" "emacs" "color-theme" "deftheme"))]) - (all . - [(1 0) - nil "Edit all lines matching a given regexp" single - ((:url . "http://elpa.gnu.org/packages/all.html") - (:keywords "matching") - (:authors - ("Per Abrahamsen" . "abraham@dina.kvl.dk")) - (:maintainer "Per Abrahamsen" . "abraham@dina.kvl.dk"))]) - (ampc . - [(0 2) - nil "Asynchronous Music Player Controller" single - ((:url . "http://elpa.gnu.org/packages/ampc.html") - (:keywords "ampc" "mpc" "mpd") - (:authors - ("Christopher Schmidt" . "christopher@ch.ristopher.com")) - (:maintainer nil . "emacs-devel@gnu.org"))]) - (arbitools . - [(0 977) - ((cl-lib - (0 5))) - "Package for chess tournaments administration" single - ((:url . "http://elpa.gnu.org/packages/arbitools.html") - (:authors - ("David Gonzalez Gandara" . "dggandara@member.fsf.org")) - (:maintainer "David Gonzalez Gandara" . "dggandara@member.fsf.org"))]) - (ascii-art-to-unicode . - [(1 12) - nil "a small artist adjunct" single - ((:keywords "ascii" "unicode" "box-drawing") - (:authors - ("Thien-Thi Nguyen" . "ttn@gnu.org")) - (:maintainer "Thien-Thi Nguyen" . "ttn@gnu.org") - (:url . "http://www.gnuvola.org/software/aa2u/"))]) - (async . - [(1 9 3) - ((cl-lib - (0 5)) - (nadvice - (0 3))) - "Asynchronous processing in Emacs" tar - ((:url . "https://github.com/jwiegley/emacs-async") - (:maintainer "John Wiegley" . "jwiegley@gmail.com") - (:authors - ("John Wiegley" . "jwiegley@gmail.com")) - (:keywords "async"))]) - (auctex . - [(12 2 0) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "Integrated environment for *TeX*" tar - ((:url . "http://www.gnu.org/software/auctex/") - (:maintainer nil . "auctex-devel@gnu.org") - (:keywords "tex" "latex" "texinfo" "context" "doctex" "preview-latex"))]) - (aumix-mode . - [(7) - nil "run the aumix program in a buffer" single - ((:keywords "multimedia" "mixer" "aumix") - (:authors - ("Kevin Ryde" . "user42_kevin@yahoo.com.au")) - (:maintainer "Kevin Ryde" . "user42_kevin@yahoo.com.au") - (:url . "http://user42.tuxfamily.org/aumix-mode/index.html"))]) - (auto-correct . - [(1 1 4) - nil "Remembers and automatically fixes past corrections" single - ((:url . "http://elpa.gnu.org/packages/auto-correct.html") - (:keywords "editing") - (:authors - ("Ian Dunn" . "dunni@gnu.org")) - (:maintainer "Ian Dunn" . "dunni@gnu.org"))]) - (auto-overlays . - [(0 10 9) - nil "Automatic regexp-delimited overlays" tar - ((:url . "http://www.dr-qubit.org/emacs.php") - (:maintainer "Toby Cubitt" . "toby-predictive@dr-qubit.org") - (:authors - ("Toby Cubitt" . "toby-predictive@dr-qubit.org")) - (:keywords "extensions"))]) - (avy . - [(0 5 0) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "Jump to arbitrary positions in visible text and select text quickly." tar - ((:url . "https://github.com/abo-abo/avy") - (:maintainer "Oleh Krehel" . "ohwoeowho@gmail.com") - (:authors - ("Oleh Krehel" . "ohwoeowho@gmail.com")) - (:keywords "point" "location"))]) - (bbdb . - [(3 2) - ((emacs - (24))) - "core of BBDB" tar - ((:maintainer "Roland Winkler" . "winkler@gnu.org") - (:url . "http://elpa.gnu.org/packages/bbdb.html"))]) - (beacon . - [(1 3 3) - ((seq - (2 14))) - "Highlight the cursor whenever the window scrolls" single - ((:keywords "convenience") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com") - (:url . "https://github.com/Malabarba/beacon"))]) - (bluetooth . - [(0 1 2) - ((emacs - (25 1)) - (dash - (2 12 0))) - "A Major mode for Bluetooth devices" single - ((:keywords "hardware") - (:authors - ("Raffael Stocker" . "r.stocker@mnet-mail.de")) - (:maintainer "Raffael Stocker" . "r.stocker@mnet-mail.de") - (:url . "https://gitlab.com/rstocker/emacs-bluetooth"))]) - (bnf-mode . - [(0 4 4) - ((cl-lib - (0 5)) - (emacs - (24 3))) - "Major mode for editing BNF grammars." tar - ((:url . "https://github.com/sergeyklay/bnf-mode") - (:maintainer "Serghei Iakovlev" . "egrep@protonmail.ch") - (:authors - ("Serghei Iakovlev" . "egrep@protonmail.ch")) - (:keywords "languages"))]) - (brief . - [(5 87) - nil "Brief Editor Emulator (Brief Mode)" tar - ((:maintainer "Luke Lee" . "luke.yx.lee@gmail.com") - (:authors - ("Luke Lee" . "luke.yx.lee@gmail.com")) - (:keywords "brief" "emulations" "crisp") - (:url . "http://elpa.gnu.org/packages/brief.html"))]) - (buffer-expose . - [(0 4 3) - ((emacs - (25)) - (cl-lib - (0 5))) - "Visual buffer switching using a window grid" single - ((:keywords "convenience") - (:authors - ("Clemens Radermacher" . "clemera@posteo.net")) - (:maintainer "Clemens Radermacher" . "clemera@posteo.net") - (:url . "https://github.com/clemera/buffer-expose"))]) - (bug-hunter . - [(1 3 1) - ((seq - (1 3)) - (cl-lib - (0 5))) - "Hunt down errors by bisecting elisp files" single - ((:keywords "lisp") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com") - (:url . "https://github.com/Malabarba/elisp-bug-hunter"))]) - (caps-lock . - [(1 0) - nil "Caps-lock as a minor mode" single - ((:url . "http://elpa.gnu.org/packages/caps-lock.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (captain . - [(1 0 3) - nil "CAPiTalization is Automatic IN emacs" single - ((:url . "http://elpa.gnu.org/packages/captain.html") - (:keywords "editing") - (:authors - ("Ian Dunn" . "dunni@gnu.org")) - (:maintainer "Ian Dunn" . "dunni@gnu.org"))]) - (chess . - [(2 0 4) - ((cl-lib - (0 5))) - "Play chess in GNU Emacs" tar - ((:maintainer "Mario Lang" . "mlang@delysid.org") - (:authors - ("John Wiegley" . "johnw@gnu.org")) - (:keywords "games") - (:url . "http://elpa.gnu.org/packages/chess.html"))]) - (cl-generic . - [(0 3) - nil "Forward cl-generic compatibility for Emacs<25" single - ((:url . "http://elpa.gnu.org/packages/cl-generic.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (cl-lib . - [(0 6 1) - nil "Forward cl-lib compatibility library for Emacs<24.3" single - ((:url . "http://elpa.gnu.org/packages/cl-lib.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (cl-print . - [(1 0) - ((emacs - (25))) - "CL-style generic printing" single - ((:url . "http://elpa.gnu.org/packages/cl-print.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (clipboard-collector . - [(0 2) - ((emacs - (25))) - "Collect clipboard entries according to regex rules" single - ((:keywords "convenience") - (:authors - ("Clemens Radermacher" . "clemera@posteo.net")) - (:maintainer "Clemens Radermacher" . "clemera@posteo.net") - (:url . "https://github.com/clemera/clipboard-collector"))]) - (cobol-mode . - [(1 0 0) - ((cl-lib - (0 5))) - "Mode for editing COBOL code" single - ((:url . "http://elpa.gnu.org/packages/cobol-mode.html") - (:keywords "languages") - (:authors - ("Edward Hart" . "edward.dan.hart@gmail.com")) - (:maintainer "Edward Hart" . "edward.dan.hart@gmail.com"))]) - (coffee-mode . - [(0 4 1 1) - nil "Major mode for CoffeeScript files" single - ((:keywords "coffeescript" "major" "mode") - (:authors - ("Chris Wanstrath" . "chris@ozmm.org")) - (:maintainer "Chris Wanstrath" . "chris@ozmm.org") - (:url . "http://github.com/defunkt/coffee-mode"))]) - (compact-docstrings . - [(0 1) - nil "Shrink blank lines in docstrings and doc comments" single - ((:keywords "convenience" "faces" "lisp" "maint" "c") - (:authors - ("ClĂ©ment Pit-Claudel" . "clement.pitclaudel@live.com")) - (:maintainer "ClĂ©ment Pit-Claudel" . "clement.pitclaudel@live.com") - (:url . "https://github.com/cpitclaudel/compact-docstrings"))]) - (company . - [(0 9 12) - ((emacs - (24 3))) - "Modular text completion framework" tar - ((:url . "http://company-mode.github.io/") - (:maintainer "Dmitry Gutov" . "dgutov@yandex.ru") - (:authors - ("Nikolaj Schumacher")) - (:keywords "abbrev" "convenience" "matching"))]) - (company-ebdb . - [(1 1) - ((company - (0 9 4)) - (ebdb - (0 2))) - "company-mode completion backend for EBDB in message-mode" single - ((:url . "http://elpa.gnu.org/packages/company-ebdb.html") - (:authors - ("Jan Tatarik" . "jan.tatarik@gmail.com")) - (:maintainer "Eric Abrahamsen" . "eric@ericabrahamsen.net"))]) - (company-math . - [(1 3) - ((company - (0 8 0)) - (math-symbol-lists - (1 2))) - "Completion backends for unicode math symbols and latex tags" tar - ((:url . "https://github.com/vspinu/company-math") - (:maintainer "Vitalie Spinu" . "spinuvit@gmail.com") - (:authors - ("Vitalie Spinu" . "spinuvit@gmail.com")) - (:keywords "unicode" "symbols" "completion"))]) - (company-statistics . - [(0 2 3) - ((emacs - (24 3)) - (company - (0 8 5))) - "Sort candidates using completion history" tar - ((:url . "https://github.com/company-mode/company-statistics") - (:maintainer "Ingo Lohmar" . "i.lohmar@gmail.com") - (:authors - ("Ingo Lohmar" . "i.lohmar@gmail.com")) - (:keywords "abbrev" "convenience" "matching"))]) - (context-coloring . - [(8 1 0) - ((emacs - (24 3))) - "Highlight by scope" tar - ((:url . "https://github.com/jacksonrayhamilton/context-coloring") - (:maintainer "Jackson Ray Hamilton" . "jackson@jacksonrayhamilton.com") - (:authors - ("Jackson Ray Hamilton" . "jackson@jacksonrayhamilton.com")) - (:keywords "convenience" "faces" "tools"))]) - (crisp . - [(1 3 6) - nil "CRiSP/Brief Emacs emulator" single - ((:url . "http://elpa.gnu.org/packages/crisp.html") - (:keywords "emulations" "brief" "crisp") - (:authors - ("Gary D. Foster" . "Gary.Foster@Corp.Sun.COM")) - (:maintainer "Luke Lee" . "luke.yx.lee@gmail.com"))]) - (csv-mode . - [(1 12) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "Major mode for editing comma/char separated values" tar - ((:maintainer nil . "emacs-devel@gnu.org") - (:authors - ("\"Francis J. Wright\"" . "F.J.Wright@qmul.ac.uk")) - (:keywords "convenience") - (:url . "http://elpa.gnu.org/packages/csv-mode.html"))]) - (cycle-quotes . - [(0 1) - nil "Cycle between quote styles" tar - ((:maintainer "Simen Heggestøyl" . "simenheg@gmail.com") - (:authors - ("Simen Heggestøyl" . "simenheg@gmail.com")) - (:keywords "convenience") - (:url . "http://elpa.gnu.org/packages/cycle-quotes.html"))]) - (darkroom . - [(0 2) - ((cl-lib - (0 5))) - "Remove visual distractions and focus on writing" single - ((:url . "http://elpa.gnu.org/packages/darkroom.html") - (:keywords "convenience" "emulations") - (:authors - ("JoĂŁo Távora" . "joaotavora@gmail.com")) - (:maintainer "JoĂŁo Távora" . "joaotavora@gmail.com"))]) - (dash . - [(2 12 0) - nil "A modern list library for Emacs" tar - ((:maintainer "Magnar Sveen" . "magnars@gmail.com") - (:authors - ("Magnar Sveen" . "magnars@gmail.com")) - (:keywords "lists") - (:url . "http://elpa.gnu.org/packages/dash.html"))]) - (dbus-codegen . - [(0 1) - ((cl-lib - (0 5))) - "Lisp code generation for D-Bus." single - ((:url . "http://elpa.gnu.org/packages/dbus-codegen.html") - (:keywords "comm" "dbus" "convenience") - (:authors - ("Daiki Ueno" . "ueno@gnu.org")) - (:maintainer nil . "emacs-devel@gnu.org"))]) - (debbugs . - [(0 22) - ((emacs - (25 1)) - (soap-client - (3 1 5))) - "SOAP library to access debbugs servers" tar - ((:maintainer "Michael Albinus" . "michael.albinus@gmx.de") - (:authors - ("Michael Albinus" . "michael.albinus@gmx.de")) - (:keywords "comm" "hypermedia") - (:url . "http://elpa.gnu.org/packages/debbugs.html"))]) - (delight . - [(1 5) - ((cl-lib - (0 5)) - (nadvice - (0 3))) - "A dimmer switch for your lighter text" single - ((:keywords "convenience") - (:authors - ("Phil Sainty" . "psainty@orcon.net.nz")) - (:maintainer "Phil Sainty" . "psainty@orcon.net.nz") - (:url . "https://savannah.nongnu.org/projects/delight"))]) - (dict-tree . - [(0 14) - ((trie - (0 3)) - (tNFA - (0 1 1)) - (heap - (0 3))) - "Dictionary data structure" single - ((:keywords "extensions" "matching" "data structures trie" "tree" "dictionary" "completion" "regexp") - (:authors - ("Toby Cubitt" . "toby-predictive@dr-qubit.org")) - (:maintainer "Toby Cubitt" . "toby-predictive@dr-qubit.org") - (:url . "http://www.dr-qubit.org/emacs.php"))]) - (diff-hl . - [(1 8 7) - ((cl-lib - (0 2)) - (emacs - (24 3))) - "Highlight uncommitted changes using VC" tar - ((:url . "https://github.com/dgutov/diff-hl") - (:maintainer "Dmitry Gutov" . "dgutov@yandex.ru") - (:authors - ("Dmitry Gutov" . "dgutov@yandex.ru")) - (:keywords "vc" "diff"))]) - (diffview . - [(1 0) - nil "View diffs in side-by-side format" single - ((:keywords "convenience" "diff") - (:authors - ("Mitchel Humpherys" . "mitch.special@gmail.com")) - (:maintainer "Mitchel Humpherys" . "mitch.special@gmail.com") - (:url . "https://github.com/mgalgs/diffview-mode"))]) - (dired-du . - [(0 5 2) - ((emacs - (24 4)) - (cl-lib - (0 5))) - "Dired with recursive directory sizes" tar - ((:maintainer "Tino Calancha" . "tino.calancha@gmail.com") - (:authors - ("Tino Calancha" . "tino.calancha@gmail.com")) - (:keywords "files" "unix" "convenience") - (:url . "http://elpa.gnu.org/packages/dired-du.html"))]) - (dired-git-info . - [(0 3 1) - ((emacs - (25))) - "Show git info in dired" single - ((:keywords "dired" "files") - (:authors - ("Clemens Radermacher" . "clemera@posteo.net")) - (:maintainer "Clemens Radermacher" . "clemera@posteo.net") - (:url . "https://github.com/clemera/dired-git-info"))]) - (disk-usage . - [(1 3 3) - ((emacs - (26 1))) - "Sort and browse disk usage listings" single - ((:keywords "files" "convenience" "tools") - (:authors - ("Pierre Neidhardt" . "mail@ambrevar.xyz")) - (:maintainer "Pierre Neidhardt" . "mail@ambrevar.xyz") - (:url . "https://gitlab.com/Ambrevar/emacs-disk-usage"))]) - (dismal . - [(1 5) - ((cl-lib - (0))) - "Dis Mode Ain't Lotus: Spreadsheet program Emacs" tar - ((:maintainer "UnMaintainer" . "emacs-devel@gnu.org") - (:authors - (nil . "David Fox, fox@cs.nyu.edu") - (nil . "Frank E. Ritter, ritter@cs.cmu.edu")) - (:url . "http://elpa.gnu.org/packages/dismal.html"))]) - (djvu . - [(1 1) - nil "Edit and view Djvu files via djvused" single - ((:url . "http://elpa.gnu.org/packages/djvu.html") - (:keywords "files" "wp") - (:authors - ("Roland Winkler" . "winkler@gnu.org")) - (:maintainer "Roland Winkler" . "winkler@gnu.org"))]) - (docbook . - [(0 1) - nil "Info-like viewer for DocBook" single - ((:url . "http://elpa.gnu.org/packages/docbook.html") - (:keywords "docs" "help") - (:authors - ("Chong Yidong" . "cyd@gnu.org")) - (:maintainer "Chong Yidong" . "cyd@gnu.org"))]) - (dts-mode . - [(0 1 0) - nil "Major mode for Device Tree source files" single - ((:url . "http://elpa.gnu.org/packages/dts-mode.html") - (:keywords "languages") - (:authors - ("Ben Gamari" . "ben@smart-cactus.org")) - (:maintainer "Ben Gamari" . "ben@smart-cactus.org"))]) - (easy-kill . - [(0 9 3) - ((emacs - (24)) - (cl-lib - (0 5))) - "kill & mark things easily" tar - ((:url . "https://github.com/leoliu/easy-kill") - (:maintainer "Leo Liu" . "sdl.web@gmail.com") - (:authors - ("Leo Liu" . "sdl.web@gmail.com")) - (:keywords "killing" "convenience"))]) - (ebdb . - [(0 6 16) - ((emacs - (25 1)) - (cl-lib - (0 5)) - (seq - (2 15))) - "Contact management package" tar - ((:url . "https://github.com/girzel/ebdb") - (:maintainer "Eric Abrahamsen" . "eric@ericabrahamsen.net") - (:authors - ("Eric Abrahamsen" . "eric@ericabrahamsen.net")) - (:keywords "convenience" "mail"))]) - (ebdb-gnorb . - [(1 0 2) - ((gnorb - (1 1 0)) - (ebdb - (0 2))) - "Utilities for connecting EBDB to Gnorb" single - ((:url . "http://elpa.gnu.org/packages/ebdb-gnorb.html") - (:authors - ("Eric Abrahamsen" . "eric@ericabrahamsen.net")) - (:maintainer "Eric Abrahamsen" . "eric@ericabrahamsen.net"))]) - (ebdb-i18n-chn . - [(1 3) - ((pyim - (1 6 0)) - (ebdb - (0 6 17))) - "China-specific internationalization support for EBDB" single - ((:url . "http://elpa.gnu.org/packages/ebdb-i18n-chn.html") - (:authors - ("Eric Abrahamsen" . "eric@ericabrahamsen.net")) - (:maintainer "Eric Abrahamsen" . "eric@ericabrahamsen.net"))]) - (ediprolog . - [(1 2) - nil "Emacs Does Interactive Prolog" single - ((:keywords "languages" "processes") - (:authors - ("Markus Triska" . "triska@metalevel.at")) - (:maintainer "Markus Triska" . "triska@metalevel.at") - (:url . "https://www.metalevel.at/ediprolog/"))]) - (eev . - [(20200224) - ((emacs - (24 1))) - "Support for e-scripts (eepitch blocks, elisp hyperlinks, etc)" tar - ((:url . "http://angg.twu.net/#eev") - (:maintainer "Eduardo Ochs" . "eduardoochs@gmail.com") - (:authors - ("Eduardo Ochs" . "eduardoochs@gmail.com")) - (:keywords "lisp" "e-scripts"))]) - (eglot . - [(1 6) - ((emacs - (26 1)) - (jsonrpc - (1 0 7)) - (flymake - (1 0 5))) - "Client for Language Server Protocol (LSP) servers" tar - ((:url . "https://github.com/joaotavora/eglot") - (:maintainer "JoĂŁo Távora" . "joaotavora@gmail.com") - (:authors - ("JoĂŁo Távora" . "joaotavora@gmail.com")) - (:keywords "convenience" "languages"))]) - (el-search . - [(1 12 6 1) - ((emacs - (25)) - (stream - (2 2 4)) - (cl-print - (1 0))) - "Expression based interactive search for Emacs Lisp" tar - ((:maintainer "Michael Heerdegen" . "michael_heerdegen@web.de") - (:authors - ("Michael Heerdegen" . "michael_heerdegen@web.de")) - (:keywords "lisp") - (:url . "http://elpa.gnu.org/packages/el-search.html"))]) - (eldoc-eval . - [(0 1) - nil "Enable eldoc support when minibuffer is in use." single - ((:url . "http://elpa.gnu.org/packages/eldoc-eval.html") - (:authors - ("Thierry Volpiatto" . "thierry.volpiatto@gmail.com")) - (:maintainer "Thierry Volpiatto" . "thierry.volpiatto@gmail.com"))]) - (electric-spacing . - [(5 0) - nil "Insert operators with surrounding spaces smartly" single - ((:url . "http://elpa.gnu.org/packages/electric-spacing.html") - (:authors - ("William Xu" . "william.xwl@gmail.com")) - (:maintainer "William Xu" . "william.xwl@gmail.com"))]) - (elisp-benchmarks . - [(1 4) - nil "elisp benchmarks collection" tar - ((:maintainer "Andrea Corallo" . "akrl@sdf.org") - (:authors - ("Andrea Corallo" . "akrl@sdf.org")) - (:keywords "languages" "lisp") - (:url . "http://elpa.gnu.org/packages/elisp-benchmarks.html"))]) - (enwc . - [(2 0) - ((emacs - (25 1))) - "The Emacs Network Client" tar - ((:url . "https://savannah.nongnu.org/p/enwc") - (:maintainer "Ian Dunn" . "dunni@gnu.org") - (:authors - ("Ian Dunn" . "dunni@gnu.org")) - (:keywords "external" "network" "wicd" "manager" "nm"))]) - (epoch-view . - [(0 0 1) - nil "Minor mode to visualize epoch timestamps" single - ((:url . "http://elpa.gnu.org/packages/epoch-view.html") - (:keywords "data" "timestamp" "epoch" "unix") - (:authors - ("Ted Zlatanov" . "tzz@lifelogs.com")) - (:maintainer "Ted Zlatanov" . "tzz@lifelogs.com"))]) - (ergoemacs-mode . - [(5 16 10 12) - ((emacs - (24 1)) - (undo-tree - (0 6 5)) - (cl-lib - (0 5))) - "Emacs mode based on common modern interface and ergonomics." tar - ((:url . "https://github.com/ergoemacs/ergoemacs-mode") - (:maintainer "Matthew L. Fidler" . "matthew.fidler@gmail.com") - (:authors - ("Xah Lee" . "xah@xahlee.org") - ("David Capello" . "davidcapello@gmail.com") - ("Matthew L. Fidler" . "matthew.fidler@gmail.com")) - (:keywords "convenience"))]) - (excorporate . - [(0 8 3) - ((emacs - (24 1)) - (fsm - (0 2 1)) - (soap-client - (3 1 5)) - (url-http-ntlm - (2 0 4)) - (nadvice - (0 3))) - "Exchange Web Services (EWS) integration" tar - ((:url . "https://www.fitzsim.org/blog/") - (:maintainer "Thomas Fitzsimmons" . "fitzsim@fitzsim.org") - (:authors - ("Thomas Fitzsimmons" . "fitzsim@fitzsim.org")) - (:keywords "calendar"))]) - (expand-region . - [(0 11 0) - nil "Increase selected region by semantic units." tar - ((:url . "https://github.com/magnars/expand-region.el") - (:maintainer "Magnar Sveen" . "magnars@gmail.com") - (:authors - ("Magnar Sveen" . "magnars@gmail.com")) - (:keywords "marking" "region"))]) - (exwm . - [(0 23) - ((xelb - (0 18))) - "Emacs X Window Manager" tar - ((:url . "https://github.com/ch11ng/exwm") - (:maintainer "Chris Feng" . "chris.w.feng@gmail.com") - (:authors - ("Chris Feng" . "chris.w.feng@gmail.com")) - (:keywords "unix"))]) - (f90-interface-browser . - [(1 1) - nil "Parse and browse f90 interfaces" single - ((:authors - ("Lawrence Mitchell" . "wence@gmx.li")) - (:maintainer "Lawrence Mitchell" . "wence@gmx.li") - (:url . "http://github.com/wence-/f90-iface/"))]) - (filladapt . - [(2 12 2) - ((emacs - (24 4))) - "Adaptive fill" single - ((:url . "http://elpa.gnu.org/packages/filladapt.html") - (:authors - ("Kyle E. Jones" . "kyle_jones@wonderworks.com")) - (:maintainer nil . "emacs-devel@gnu.org"))]) - (flylisp . - [(0 2) - ((emacs - (24 1)) - (cl-lib - (0 4))) - "Color unbalanced parentheses and parentheses inconsistent with indentation" single - ((:url . "http://elpa.gnu.org/packages/flylisp.html") - (:authors - ("Barry O'Reilly" . "gundaetiapo@gmail.com")) - (:maintainer "Barry O'Reilly" . "gundaetiapo@gmail.com"))]) - (flymake . - [(1 0 8) - ((emacs - (26 1))) - "A universal on-the-fly syntax checker" single - ((:url . "http://elpa.gnu.org/packages/flymake.html") - (:keywords "c" "languages" "tools") - (:authors - ("Pavel Kobyakov" . "pk_at_work@yahoo.com")) - (:maintainer "JoĂŁo Távora" . "joaotavora@gmail.com"))]) - (fountain-mode . - [(2 7 3) - ((emacs - (24 5))) - "Major mode for screenwriting in Fountain markup" single - ((:keywords "wp" "text") - (:authors - ("Paul W. Rankin" . "pwr@sdf.org")) - (:maintainer "Paul W. Rankin" . "pwr@sdf.org") - (:url . "https://fountain-mode.org"))]) - (frame-tabs . - [(1 1) - nil "show buffer tabs in side window" single - ((:url . "http://elpa.gnu.org/packages/frame-tabs.html") - (:keywords "frames" "tabs") - (:authors - ("Martin Rudalics" . "rudalics@gmx.at")) - (:maintainer "Martin Rudalics" . "rudalics@gmx.at"))]) - (frog-menu . - [(0 2 10) - ((emacs - (26)) - (avy - (0 4)) - (posframe - (0 4))) - "Quickly pick items from ad hoc menus" single - ((:keywords "convenience") - (:authors - ("Clemens Radermacher" . "clemera@posteo.net")) - (:maintainer "Clemens Radermacher" . "clemera@posteo.net") - (:url . "https://github.com/clemera/frog-menu"))]) - (fsm . - [(0 2 1) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "state machine library" single - ((:url . "http://elpa.gnu.org/packages/fsm.html") - (:keywords "extensions") - (:authors - ("Magnus Henoch" . "magnus.henoch@gmail.com")) - (:maintainer "Thomas Fitzsimmons" . "fitzsim@fitzsim.org"))]) - (ggtags . - [(0 8 13) - ((emacs - (24)) - (cl-lib - (0 5))) - "emacs frontend to GNU Global source code tagging system" single - ((:keywords "tools" "convenience") - (:authors - ("Leo Liu" . "sdl.web@gmail.com")) - (:maintainer "Leo Liu" . "sdl.web@gmail.com") - (:url . "https://github.com/leoliu/ggtags"))]) - (gited . - [(0 6 0) - ((emacs - (24 4)) - (cl-lib - (0 5))) - "Operate on Git branches like dired" tar - ((:maintainer "Tino Calancha" . "tino.calancha@gmail.com") - (:authors - ("Tino Calancha" . "tino.calancha@gmail.com")) - (:keywords "git" "vc" "convenience") - (:url . "http://elpa.gnu.org/packages/gited.html"))]) - (gle-mode . - [(1 1) - ((cl-lib - (0 5))) - "Major mode to edit Graphics Layout Engine files" single - ((:url . "http://elpa.gnu.org/packages/gle-mode.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (gnome-c-style . - [(0 1) - nil "minor mode for editing GNOME-style C source code" tar - ((:maintainer "Daiki Ueno" . "ueno@gnu.org") - (:authors - ("Daiki Ueno" . "ueno@gnu.org")) - (:keywords "gnome" "c" "coding style") - (:url . "http://elpa.gnu.org/packages/gnome-c-style.html"))]) - (gnorb . - [(1 6 6) - ((cl-lib - (0 5))) - "Glue code between Gnus, Org, and BBDB" tar - ((:maintainer "Eric Abrahamsen" . "eric@ericabrahamsen.net") - (:authors - ("Eric Abrahamsen" . "eric@ericabrahamsen.net")) - (:keywords "mail" "org" "gnus" "bbdb" "todo" "task") - (:url . "http://elpa.gnu.org/packages/gnorb.html"))]) - (gnu-elpa-keyring-update . - [(2019 3) - nil "Update Emacs's GPG keyring for GNU ELPA" tar - ((:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:keywords "maint" "tools") - (:url . "http://elpa.gnu.org/packages/gnu-elpa-keyring-update.html"))]) - (gnugo . - [(3 1 0) - ((ascii-art-to-unicode - (1 5)) - (xpm - (1 0 1)) - (cl-lib - (0 5))) - "play GNU Go in a buffer" tar - ((:url . "http://www.gnuvola.org/software/gnugo/") - (:maintainer "Thien-Thi Nguyen" . "ttn@gnu.org") - (:authors - ("Thien-Thi Nguyen" . "ttn@gnu.org")) - (:keywords "games" "processes"))]) - (gnus-mock . - [(0 4 4) - nil "Mock Gnus installation for testing" tar - ((:maintainer "Eric Abrahamsen" . "eric@ericabrahamsen.net") - (:authors - ("Eric Abrahamsen" . "eric@ericabrahamsen.net")) - (:url . "http://elpa.gnu.org/packages/gnus-mock.html"))]) - (gpastel . - [(0 5 0) - ((emacs - (25 1))) - "Integrates GPaste with the kill-ring" single - ((:keywords "tools") - (:authors - ("Damien Cassou" . "damien@cassou.me")) - (:maintainer "Damien Cassou" . "damien@cassou.me") - (:url . "https://gitlab.petton.fr/DamienCassou/desktop-environment"))]) - (greader . - [(0 1) - ((emacs - (25))) - "gnamĂą reader, a reader with espeak tts" tar - ((:maintainer "Michelangelo Rodriguez" . "michelangelo.rodriguez@gmail.com") - (:authors - ("Michelangelo Rodriguez" . "michelangelo.rodriguez@gmail.com")) - (:keywords "tools" "accessibility") - (:url . "http://elpa.gnu.org/packages/greader.html"))]) - (guess-language . - [(0 0 1) - ((cl-lib - (0 5)) - (emacs - (24)) - (nadvice - (0 1))) - "Robust automatic language detection" single - ((:authors - ("Titus von der Malsburg" . "malsburg@posteo.de")) - (:maintainer "Titus von der Malsburg" . "malsburg@posteo.de") - (:url . "https://github.com/tmalsburg/guess-language.el"))]) - (heap . - [(0 5) - nil "Heap (a.k.a. priority queue) data structure" single - ((:keywords "extensions" "data structures" "heap" "priority queue") - (:authors - ("Toby Cubitt" . "toby-predictive@dr-qubit.org")) - (:maintainer "Toby Cubitt" . "toby-predictive@dr-qubit.org") - (:url . "http://www.dr-qubit.org/emacs.php"))]) - (highlight-escape-sequences . - [(0 4) - nil "Highlight escape sequences" single - ((:keywords "convenience") - (:authors - ("Dmitry Gutov" . "dgutov@yandex.ru") - ("Pavel Matcula" . "dev.plvlml@gmail.com")) - (:maintainer "Dmitry Gutov" . "dgutov@yandex.ru") - (:url . "https://github.com/dgutov/highlight-escape-sequences"))]) - (hook-helpers . - [(1 1 1) - ((emacs - (25 1))) - "Anonymous, modifiable hook functions" tar - ((:url . "https://savannah.nongnu.org/projects/hook-helpers-el/") - (:maintainer "Ian Dunn" . "dunni@gnu.org") - (:authors - ("Ian Dunn" . "dunni@gnu.org")) - (:keywords "development" "hooks"))]) - (html5-schema . - [(0 1) - nil "Add HTML5 schemas for use by nXML" tar - ((:url . "https://github.com/validator/validator") - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:keywords "html" "xml"))]) - (hydra . - [(0 14 0) - ((cl-lib - (0 5))) - "Make bindings that stick around." tar - ((:url . "https://github.com/abo-abo/hydra") - (:maintainer "Oleh Krehel" . "ohwoeowho@gmail.com") - (:authors - ("Oleh Krehel" . "ohwoeowho@gmail.com")) - (:keywords "bindings"))]) - (hyperbole . - [(7 0 6) - ((emacs - (24 4))) - "GNU Hyperbole: The Everyday Hypertextual Information Manager" tar - ((:url . "http://www.gnu.org/software/hyperbole") - (:maintainer "Bob Weiner , Mats Lidell" . "matsl@gnu.org") - (:authors - ("Bob Weiner")) - (:keywords "comm" "convenience" "files" "frames" "hypermedia" "languages" "mail" "matching" "mouse" "multimedia" "outlines" "tools" "wp"))]) - (ioccur . - [(2 4) - ((emacs - (24)) - (cl-lib - (0 5))) - "Incremental occur" single - ((:authors - ("Thierry Volpiatto" . "thierry.volpiatto@gmail.com")) - (:maintainer "Thierry Volpiatto" . "thierry.volpiatto@gmail.com") - (:url . "https://github.com/thierryvolpiatto/ioccur"))]) - (iterators . - [(0 1 1) - ((emacs - (25))) - "Functions for working with iterators" single - ((:url . "http://elpa.gnu.org/packages/iterators.html") - (:keywords "extensions" "elisp") - (:authors - ("Michael Heerdegen" . "michael_heerdegen@web.de")) - (:maintainer "Michael Heerdegen" . "michael_heerdegen@web.de"))]) - (ivy . - [(0 13 0) - ((emacs - (24 5))) - "Incremental Vertical completYon" tar - ((:url . "https://github.com/abo-abo/swiper") - (:maintainer "Oleh Krehel" . "ohwoeowho@gmail.com") - (:authors - ("Oleh Krehel" . "ohwoeowho@gmail.com")) - (:keywords "matching"))]) - (ivy-explorer . - [(0 3 2) - ((emacs - (25)) - (ivy - (0 10 0))) - "Dynamic file browsing grid using ivy" single - ((:keywords "convenience" "files" "matching") - (:authors - ("Clemens Radermacher" . "clemera@posteo.net")) - (:maintainer "Clemens Radermacher" . "clemera@posteo.net") - (:url . "https://github.com/clemera/ivy-explorer"))]) - (javaimp . - [(0 7 1) - nil "Add and reorder Java import statements in Maven/Gradle projects" tar - ((:maintainer "Filipp Gunbin" . "fgunbin@fastmail.fm") - (:authors - ("Filipp Gunbin" . "fgunbin@fastmail.fm")) - (:keywords "java" "maven" "gradle" "programming") - (:url . "http://elpa.gnu.org/packages/javaimp.html"))]) - (jgraph-mode . - [(1 1) - ((cl-lib - (0 5))) - "Major mode for Jgraph files" single - ((:url . "http://elpa.gnu.org/packages/jgraph-mode.html") - (:keywords "tex" "wp") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (js2-mode . - [(20190219) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "Improved JavaScript editing mode" tar - ((:url . "https://github.com/mooz/js2-mode/") - (:maintainer "Steve Yegge" . "steve.yegge@gmail.com") - (:authors - ("Steve Yegge" . "steve.yegge@gmail.com") - ("mooz" . "stillpedant@gmail.com") - ("Dmitry Gutov" . "dgutov@yandex.ru")) - (:keywords "languages" "javascript"))]) - (json-mode . - [(0 1) - ((emacs - (25 1))) - "Major mode for editing JSON files" single - ((:url . "http://elpa.gnu.org/packages/json-mode.html") - (:keywords "data") - (:authors - ("Simen Heggestøyl" . "simenheg@gmail.com")) - (:maintainer "Simen Heggestøyl" . "simenheg@gmail.com"))]) - (jsonrpc . - [(1 0 9) - ((emacs - (25 2))) - "JSON-RPC library" single - ((:url . "http://elpa.gnu.org/packages/jsonrpc.html") - (:keywords "processes" "languages" "extensions") - (:authors - ("JoĂŁo Távora" . "joaotavora@gmail.com")) - (:maintainer "JoĂŁo Távora" . "joaotavora@gmail.com"))]) - (jumpc . - [(3 0) - nil "jump to previous insertion points" single - ((:url . "http://elpa.gnu.org/packages/jumpc.html") - (:authors - ("Ivan Kanis" . "ivan@kanis.fr")) - (:maintainer "Ivan Kanis" . "ivan@kanis.fr"))]) - (kmb . - [(0 1) - ((emacs - (24 1))) - "Kill buffers matching a regexp w/o confirmation" single - ((:url . "http://elpa.gnu.org/packages/kmb.html") - (:keywords "lisp" "convenience") - (:authors - ("Tino Calancha" . "tino.calancha@gmail.com")) - (:maintainer "Tino Calancha"))]) - (landmark . - [(1 0) - nil "Neural-network robot that learns landmarks" single - ((:url . "http://elpa.gnu.org/packages/landmark.html") - (:keywords "games" "neural network" "adaptive search" "chemotaxis") - (:authors - ("Terrence Brannon" . "metaperl@gmail.com")) - (:maintainer nil . "emacs-devel@gnu.org"))]) - (let-alist . - [(1 0 6) - ((emacs - (24 1))) - "Easily let-bind values of an assoc-list by their names" single - ((:url . "http://elpa.gnu.org/packages/let-alist.html") - (:keywords "extensions" "lisp") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com"))]) - (lex . - [(1 1) - nil "Lexical analyser construction" tar - ((:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:url . "http://elpa.gnu.org/packages/lex.html"))]) - (lmc . - [(1 4) - ((emacs - (24)) - (cl-lib - (0 5))) - "Little Man Computer in Elisp" single - ((:url . "http://elpa.gnu.org/packages/lmc.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (load-dir . - [(0 0 5) - ((cl-lib - (0 5))) - "Load all Emacs Lisp files in a given directory" single - ((:url . "http://elpa.gnu.org/packages/load-dir.html") - (:keywords "lisp" "files" "convenience") - (:maintainer "Teodor Zlatanov" . "tzz@lifelogs.com"))]) - (load-relative . - [(1 3 1) - nil "Relative file load (within a multi-file Emacs package)" single - ((:keywords "internal") - (:authors - ("Rocky Bernstein" . "rocky@gnu.org")) - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:url . "http://github.com/rocky/emacs-load-relative"))]) - (loc-changes . - [(1 2) - nil "keep track of positions even after buffer changes" single - ((:authors - ("Rocky Bernstein" . "rocky@gnu.org")) - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:url . "http://github.com/rocky/emacs-loc-changes"))]) - (loccur . - [(1 2 4) - ((emacs - (24 3))) - "Perform an occur-like folding in current buffer" single - ((:keywords "matching") - (:authors - ("Alexey Veretennikov" . "alexey.veretennikov@gmail.com")) - (:maintainer "Alexey Veretennikov" . "alexey.veretennikov@gmail.com") - (:url . "https://github.com/fourier/loccur"))]) - (map . - [(2 1) - ((emacs - (25))) - "Map manipulation functions" single - ((:url . "http://elpa.gnu.org/packages/map.html") - (:keywords "convenience" "map" "hash-table" "alist" "array") - (:authors - ("Nicolas Petton" . "nicolas@petton.fr")) - (:maintainer nil . "emacs-devel@gnu.org"))]) - (markchars . - [(0 2 1) - nil "Mark chars fitting certain characteristics" single - ((:url . "http://elpa.gnu.org/packages/markchars.html") - (:authors - ("Lennart Borgman" . "lennart.borgman@gmail.com")) - (:maintainer "Lennart Borgman" . "lennart.borgman@gmail.com"))]) - (math-symbol-lists . - [(1 2 1) - nil "Lists of Unicode math symbols and latex commands" single - ((:keywords "unicode" "symbols" "mathematics") - (:authors - ("Vitalie Spinu" . "spinuvit@gmail.com")) - (:maintainer "Vitalie Spinu" . "spinuvit@gmail.com") - (:url . "https://github.com/vspinu/math-symbol-lists"))]) - (memory-usage . - [(0 2) - nil "Analyze the memory usage of Emacs in various ways" single - ((:url . "http://elpa.gnu.org/packages/memory-usage.html") - (:keywords "maint") - (:authors - ("Stefan Monnier" . "monnier@cs.yale.edu")) - (:maintainer "Stefan Monnier" . "monnier@cs.yale.edu"))]) - (metar . - [(0 3) - ((cl-lib - (0 5))) - "Retrieve and decode METAR weather information" single - ((:url . "http://elpa.gnu.org/packages/metar.html") - (:keywords "comm") - (:authors - ("Mario Lang" . "mlang@delysid.org")) - (:maintainer "Mario Lang" . "mlang@delysid.org"))]) - (midi-kbd . - [(0 2) - ((emacs - (25))) - "Create keyboard events from Midi input" single - ((:url . "http://elpa.gnu.org/packages/midi-kbd.html") - (:keywords "convenience" "hardware" "multimedia") - (:authors - ("David Kastrup" . "dak@gnu.org")) - (:maintainer "David Kastrup" . "dak@gnu.org"))]) - (mines . - [(1 6) - ((emacs - (24 4)) - (cl-lib - (0 5))) - "Minesweeper game" tar - ((:url . "https://github.com/calancha/Minesweeper") - (:maintainer "Tino Calancha" . "tino.calancha@gmail.com") - (:authors - ("Tino Calancha" . "tino.calancha@gmail.com")) - (:keywords "games"))]) - (minibuffer-line . - [(0 1) - nil "Display status info in the minibuffer window" single - ((:url . "http://elpa.gnu.org/packages/minibuffer-line.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (minimap . - [(1 2) - nil "Sidebar showing a \"mini-map\" of a buffer" single - ((:url . "http://elpa.gnu.org/packages/minimap.html") - (:authors - ("David Engster" . "deng@randomsample.de")) - (:maintainer "David Engster" . "deng@randomsample.de"))]) - (mmm-mode . - [(0 5 7) - ((cl-lib - (0 2))) - "Allow Multiple Major Modes in a buffer" tar - ((:url . "https://github.com/purcell/mmm-mode") - (:maintainer "Dmitry Gutov" . "dgutov@yandex.ru") - (:authors - ("Michael Abraham Shulman" . "viritrilbia@gmail.com")) - (:keywords "convenience" "faces" "languages" "tools"))]) - (modus-operandi-theme . - [(0 7 0) - ((emacs - (26 1))) - "Accessible light theme (WCAG AAA)" single - ((:keywords "faces" "theme" "accessibility") - (:authors - ("Protesilaos Stavrou" . "info@protesilaos.com")) - (:maintainer "Protesilaos Stavrou" . "info@protesilaos.com") - (:url . "https://gitlab.com/protesilaos/modus-themes"))]) - (modus-vivendi-theme . - [(0 7 0) - ((emacs - (26 1))) - "Accessible dark theme (WCAG AAA)" single - ((:keywords "faces" "theme" "accessibility") - (:authors - ("Protesilaos Stavrou" . "info@protesilaos.com")) - (:maintainer "Protesilaos Stavrou" . "info@protesilaos.com") - (:url . "https://gitlab.com/protesilaos/modus-themes"))]) - (multishell . - [(1 1 5) - ((cl-lib - (0 5))) - "Easily use multiple shell buffers, local and remote" tar - ((:url . "https://github.com/kenmanheimer/EmacsMultishell") - (:maintainer "Ken Manheimer" . "ken.manheimer@gmail.com") - (:authors - ("Ken Manheimer" . "ken.manheimer@gmail.com")) - (:keywords "processes"))]) - (muse . - [(3 20 2) - nil "Authoring and publishing tool for Emacs" tar - ((:url . "http://mwolson.org/projects/EmacsMuse.html") - (:maintainer "Michael Olson" . "mwolson@gnu.org") - (:authors - ("John Wiegley" . "johnw@gnu.org")) - (:keywords "hypermedia"))]) - (myers . - [(0 1) - ((emacs - (25))) - "Random-access singly-linked lists" single - ((:url . "http://elpa.gnu.org/packages/myers.html") - (:keywords "list" "containers") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (nadvice . - [(0 3) - nil "Forward compatibility for Emacs-24.4's nadvice" single - ((:url . "http://elpa.gnu.org/packages/nadvice.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (nameless . - [(1 0 2) - ((emacs - (24 4))) - "Hide package namespace in your emacs-lisp code" single - ((:keywords "convenience" "lisp") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com") - (:url . "https://github.com/Malabarba/nameless"))]) - (names . - [(20151201 0) - ((emacs - (24 1)) - (cl-lib - (0 5)) - (nadvice - (0 3))) - "Namespaces for emacs-lisp. Avoid name clobbering without hiding symbols." tar - ((:url . "https://github.com/Malabarba/names") - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:keywords "extensions" "lisp"))]) - (nhexl-mode . - [(1 5) - ((emacs - (24 4)) - (cl-lib - (0 5))) - "Minor mode to edit files via hex-dump format" single - ((:url . "http://elpa.gnu.org/packages/nhexl-mode.html") - (:keywords "data") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (nlinum . - [(1 9) - nil "Show line numbers in the margin" single - ((:url . "http://elpa.gnu.org/packages/nlinum.html") - (:keywords "convenience") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (notes-mode . - [(1 30) - nil "Indexing system for on-line note-taking" tar - ((:maintainer nil . ".") - (:authors - (nil . ".")) - (:url . "http://elpa.gnu.org/packages/notes-mode.html"))]) - (ntlm . - [(2 1 0) - nil "NTLM (NT LanManager) authentication support" single - ((:url . "http://elpa.gnu.org/packages/ntlm.html") - (:keywords "ntlm" "sasl" "comm") - (:authors - ("Taro Kawagishi" . "tarok@transpulse.org")) - (:maintainer "Thomas Fitzsimmons" . "fitzsim@fitzsim.org"))]) - (num3-mode . - [(1 3) - nil "highlight groups of digits in long numbers" single - ((:url . "http://elpa.gnu.org/packages/num3-mode.html") - (:keywords "faces" "minor-mode") - (:authors - ("Felix Lee , Michal Nazarewicz" . "mina86@mina86.com")) - (:maintainer "Michal Nazarewicz" . "mina86@mina86.com"))]) - (oauth2 . - [(0 13) - nil "OAuth 2.0 Authorization Protocol" single - ((:url . "http://elpa.gnu.org/packages/oauth2.html") - (:keywords "comm") - (:authors - ("Julien Danjou" . "julien@danjou.info")) - (:maintainer "Julien Danjou" . "julien@danjou.info"))]) - (objed . - [(0 8 3) - ((emacs - (25)) - (cl-lib - (0 5))) - "Navigate and edit text objects." tar - ((:url . "https://github.com/clemera/objed") - (:maintainer "Clemens Radermacher" . "clemera@posteo.net") - (:authors - ("Clemens Radermacher" . "clemera@posteo.net")) - (:keywords "convenience"))]) - (olivetti . - [(1 7 1) - ((emacs - (24 5))) - "Minor mode for a nice writing environment" single - ((:url . "http://elpa.gnu.org/packages/olivetti.html") - (:keywords "wp" "text") - (:authors - ("Paul W. Rankin" . "pwr@sdf.org")) - (:maintainer "Paul W. Rankin" . "pwr@sdf.org"))]) - (omn-mode . - [(1 2) - nil "Support for OWL Manchester Notation" single - ((:url . "http://elpa.gnu.org/packages/omn-mode.html") - (:authors - ("Phillip Lord" . "phillip.lord@newcastle.ac.uk")) - (:maintainer "Phillip Lord" . "phillip.lord@newcastle.ac.uk"))]) - (on-screen . - [(1 3 3) - ((cl-lib - (0))) - "guide your eyes while scrolling" single - ((:keywords "convenience") - (:authors - ("Michael Heerdegen" . "michael_heerdegen@web.de")) - (:maintainer "Michael Heerdegen" . "michael_heerdegen@web.de") - (:url . "https://github.com/michael-heerdegen/on-screen.el"))]) - (org . - [(9 3 6) - nil "Outline-based notes management and organizer" tar - ((:url . "https://orgmode.org") - (:maintainer "Bastien Guerry" . "bzg@gnu.org") - (:authors - ("Carsten Dominik ")) - (:keywords "outlines" "hypermedia" "calendar" "wp"))]) - (org-edna . - [(1 1 1) - ((emacs - (25 1)) - (seq - (2 19)) - (org - (9 0 5))) - "Extensible Dependencies 'N' Actions" tar - ((:url . "https://savannah.nongnu.org/projects/org-edna-el/") - (:maintainer "Ian Dunn" . "dunni@gnu.org") - (:authors - ("Ian Dunn" . "dunni@gnu.org")) - (:keywords "convenience" "text" "org"))]) - (orgalist . - [(1 12) - ((emacs - (24 4))) - "Manage Org-like lists in non-Org buffers" single - ((:url . "http://elpa.gnu.org/packages/orgalist.html") - (:keywords "convenience") - (:authors - ("Nicolas Goaziou" . "mail@nicolasgoaziou.fr")) - (:maintainer "Nicolas Goaziou" . "mail@nicolasgoaziou.fr"))]) - (osc . - [(0 2) - nil "Open Sound Control protocol library" single - ((:url . "http://elpa.gnu.org/packages/osc.html") - (:keywords "comm" "processes" "multimedia") - (:authors - ("Mario Lang" . "mlang@blind.guru")) - (:maintainer "Mario Lang" . "mlang@blind.guru"))]) - (other-frame-window . - [(1 0 6) - ((emacs - (24 4))) - "Minor mode to enable global prefix keys for other frame/window buffer placement" single - ((:url . "http://elpa.gnu.org/packages/other-frame-window.html") - (:keywords "frame" "window") - (:authors - ("Stephen Leake" . "stephen_leake@member.fsf.org")) - (:maintainer "Stephen Leake" . "stephen_leake@member.fsf.org"))]) - (pabbrev . - [(4 2 1) - nil "Predictive abbreviation expansion" single - ((:url . "http://elpa.gnu.org/packages/pabbrev.html") - (:authors - ("Phillip Lord" . "phillip.lord@newcastle.ac.uk")) - (:maintainer "Phillip Lord" . "phillip.lord@newcastle.ac.uk"))]) - (paced . - [(1 1 3) - ((emacs - (25 1)) - (async - (1 9 1))) - "Predictive Abbreviation Completion and Expansion using Dictionaries" tar - ((:url . "https://savannah.nongnu.org/projects/paced-el/") - (:maintainer "Ian Dunn" . "dunni@gnu.org") - (:authors - ("Ian Dunn" . "dunni@gnu.org")) - (:keywords "convenience" "completion"))]) - (parsec . - [(0 1 3) - ((emacs - (24)) - (cl-lib - (0 5))) - "Parser combinator library" tar - ((:url . "https://github.com/cute-jumper/parsec.el") - (:maintainer "Junpeng Qiu" . "qjpchmail@gmail.com") - (:authors - ("Junpeng Qiu" . "qjpchmail@gmail.com")) - (:keywords "extensions"))]) - (path-iterator . - [(1 0) - ((emacs - (25 0))) - "An iterator for traversing a directory path." tar - ((:maintainer "Stephen Leake" . "stephen_leake@stephe-leake.org") - (:authors - ("Stephen Leake" . "stephen_leake@stephe-leake.org")) - (:url . "http://elpa.gnu.org/packages/path-iterator.html"))]) - (peg . - [(1 0) - ((emacs - (25))) - "Parsing Expression Grammars in Emacs Lisp" tar - ((:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca") - (:authors - ("Helmut Eller" . "eller.helmut@gmail.com")) - (:url . "http://elpa.gnu.org/packages/peg.html"))]) - (persist . - [(0 4) - nil "Persist Variables between Emacs Sessions" tar - ((:maintainer "Phillip Lord" . "phillip.lord@russet.org.uk") - (:authors - ("Phillip Lord" . "phillip.lord@russet.org.uk")) - (:url . "http://elpa.gnu.org/packages/persist.html"))]) - (phps-mode . - [(0 3 42) - ((emacs - (26))) - "Major mode for PHP with Semantic integration" tar - ((:url . "https://github.com/cjohansson/emacs-phps-mode") - (:maintainer "Christian Johansson" . "christian@cvj.se") - (:authors - ("Christian Johansson" . "christian@cvj.se")) - (:keywords "tools" "convenience"))]) - (pinentry . - [(0 1) - nil "GnuPG Pinentry server implementation" single - ((:url . "http://elpa.gnu.org/packages/pinentry.html") - (:keywords "gnupg") - (:authors - ("Daiki Ueno" . "ueno@gnu.org")) - (:maintainer "Daiki Ueno" . "ueno@gnu.org"))]) - (poker . - [(0 2) - nil "Texas hold 'em poker" single - ((:url . "http://elpa.gnu.org/packages/poker.html") - (:keywords "games") - (:authors - ("Mario Lang" . "mlang@delysid.org")) - (:maintainer "Mario Lang" . "mlang@delysid.org"))]) - (posframe . - [(0 7 0) - ((emacs - (26))) - "Pop a posframe (just a frame) at point" single - ((:keywords "convenience" "tooltip") - (:authors - ("Feng Shu" . "tumashu@163.com")) - (:maintainer "Feng Shu" . "tumashu@163.com") - (:url . "https://github.com/tumashu/posframe"))]) - (psgml . - [(1 3 4) - nil "SGML-editing mode with parsing support" tar - ((:maintainer "Lennart Staflin" . "lstaflin@gmail.com") - (:authors - ("Lennart Staflin" . "lenst@lysator.liu.se") - ("James Clark" . "jjc@clark.com")) - (:keywords "languages") - (:url . "http://elpa.gnu.org/packages/psgml.html"))]) - (python . - [(0 26 1) - ((emacs - (24 1)) - (cl-lib - (1 0))) - "Python's flying circus support for Emacs" single - ((:keywords "languages") - (:authors - ("Fabián E. Gallina" . "fgallina@gnu.org")) - (:maintainer nil . "emacs-devel@gnu.org") - (:url . "https://github.com/fgallina/python.el"))]) - (quarter-plane . - [(0 1) - nil "Minor mode for quarter-plane style editing" single - ((:url . "http://elpa.gnu.org/packages/quarter-plane.html") - (:keywords "convenience" "wp") - (:authors - ("Peter J. Weisberg")) - (:maintainer "Peter J. Weisberg"))]) - (queue . - [(0 2) - nil "Queue data structure" single - ((:keywords "extensions" "data structures" "queue") - (:authors - ("Inge Wallin" . "inge@lysator.liu.se") - ("Toby Cubitt" . "toby-predictive@dr-qubit.org")) - (:maintainer "Toby Cubitt" . "toby-predictive@dr-qubit.org") - (:url . "http://www.dr-qubit.org/emacs.php"))]) - (rainbow-mode . - [(1 0 4) - nil "Colorize color names in buffers" single - ((:url . "http://elpa.gnu.org/packages/rainbow-mode.html") - (:keywords "faces") - (:authors - ("Julien Danjou" . "julien@danjou.info")) - (:maintainer "Julien Danjou" . "julien@danjou.info"))]) - (rbit . - [(0 1) - nil "Red-black persistent interval trees" single - ((:url . "http://elpa.gnu.org/packages/rbit.html") - (:keywords "data structures" "binary tree" "intervals") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (rcirc-color . - [(0 4 1) - ((emacs - (24 4))) - "color nicks" single - ((:url . "http://elpa.gnu.org/packages/rcirc-color.html") - (:keywords "comm") - (:authors - ("Alex Schroeder" . "alex@gnu.org")) - (:maintainer "Alex Schroeder" . "alex@gnu.org"))]) - (rcirc-menu . - [(1 1) - nil "A menu of all your rcirc connections" single - ((:url . "http://elpa.gnu.org/packages/rcirc-menu.html") - (:keywords "comm") - (:authors - ("Alex Schroeder" . "alex@gnu.org")) - (:maintainer "Alex Schroeder" . "alex@gnu.org"))]) - (realgud . - [(1 5 1) - ((load-relative - (1 3 1)) - (loc-changes - (1 2)) - (test-simple - (1 3 0)) - (emacs - (25))) - "A modular front-end for interacting with external debuggers" tar - ((:url . "http://github.com/realgud/realgud/") - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:authors - ("Rocky Bernstein" . "rocky@gnu.org")) - (:keywords "debugger" "gdb" "python" "perl" "go" "bash" "zsh" "bashdb" "zshdb" "remake" "trepan" "perldb" "pdb"))]) - (realgud-ipdb . - [(1 0 0) - ((realgud - (1 5 0)) - (load-relative - (1 3 1)) - (emacs - (25))) - "Realgud front-end to ipdb" tar - ((:url . "http://github.com/rocky/realgud-ipdb") - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:authors - ("Rocky Bernstein" . "rocky@gnu.org")))]) - (realgud-jdb . - [(1 0 0) - ((realgud - (1 4 5)) - (load-relative - (1 2)) - (cl-lib - (0 5)) - (emacs - (25))) - "Realgud front-end to Java's jdb debugger\"" tar - ((:url . "http://github.com/realgud/realgud-jdb") - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:authors - ("Rocky Bernstein" . "rocky@gnu.org")))]) - (realgud-lldb . - [(1 0 2) - ((load-relative - (1 3 1)) - (realgud - (1 5 0)) - (emacs - (25))) - "Realgud front-end to lldb" tar - ((:url . "http://github.com/realgud/realgud-lldb") - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:authors - ("Rocky Bernstein" . "rocky@gnu.org")))]) - (realgud-node-debug . - [(1 0 0) - ((realgud - (1 4 5)) - (load-relative - (1 2)) - (cl-lib - (0 5)) - (emacs - (25))) - "Realgud front-end to older \"node debug\"" tar - ((:url . "http://github.com/realgud/realgud-node-debug") - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:authors - ("Rocky Bernstein" . "rocky@gnu.org")))]) - (realgud-node-inspect . - [(1 0 0) - ((realgud - (1 4 5)) - (load-relative - (1 2)) - (cl-lib - (0 5)) - (emacs - (24))) - "Realgud front-end to newer \"node inspect\"" tar - ((:url . "http://github.com/realgud/realgud-node-inspect") - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:authors - ("Rocky Bernstein" . "rocky@gnu.org")))]) - (realgud-trepan-ni . - [(1 0 1) - ((load-relative - (1 2)) - (realgud - (1 5 0)) - (cl-lib - (0 5)) - (emacs - (25))) - "Realgud front-end to trepan-ni" tar - ((:url . "http://github.com/realgud/realgud-trepan-ni") - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:authors - ("Rocky Bernstein" . "rocky@gnu.org")))]) - (register-list . - [(0 1) - nil "Interactively list/edit registers" single - ((:url . "http://elpa.gnu.org/packages/register-list.html") - (:keywords "register") - (:authors - ("Bastien Guerry" . "bzg@gnu.org")) - (:maintainer "Bastien Guerry" . "bzg@gnu.org"))]) - (relint . - [(1 15) - ((xr - (1 17)) - (emacs - (26 1))) - "Elisp regexp mistake finder" tar - ((:url . "https://github.com/mattiase/relint") - (:maintainer "Mattias EngdegĂĄrd" . "mattiase@acm.org") - (:authors - ("Mattias EngdegĂĄrd" . "mattiase@acm.org")) - (:keywords "lisp" "regexps"))]) - (rich-minority . - [(1 0 1) - ((cl-lib - (0 5))) - "Clean-up and Beautify the list of minor-modes." single - ((:keywords "mode-line" "faces") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com") - (:url . "https://github.com/Malabarba/rich-minority"))]) - (rnc-mode . - [(0 2) - nil "Emacs mode to edit Relax-NG Compact files" single - ((:url . "http://elpa.gnu.org/packages/rnc-mode.html") - (:keywords "xml" "relaxng") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (rudel . - [(0 3 1) - ((emacs - (24)) - (cl-lib - (0 5)) - (cl-generic - (0 3)) - (cl-print - (1 0))) - "A collaborative editing framework for Emacs" tar - ((:url . "http://rudel.sourceforge.net/") - (:maintainer "Jan Moringen" . "scymtym@users.sourceforge.net") - (:authors - ("Jan Moringen" . "scymtym@users.sourceforge.net")) - (:keywords "rudel" "collaboration"))]) - (scanner . - [(0 1) - ((emacs - (25 1)) - (dash - (2 12 0))) - "Scan documents and images" tar - ((:url . "https://gitlab.com/rstocker/scanner.git") - (:maintainer "Raffael Stocker" . "r.stocker@mnet-mail.de") - (:authors - ("Raffael Stocker" . "r.stocker@mnet-mail.de")) - (:keywords "hardware" "multimedia"))]) - (scroll-restore . - [(1 0) - nil "restore original position after scrolling" single - ((:url . "http://elpa.gnu.org/packages/scroll-restore.html") - (:keywords "scrolling") - (:authors - ("Martin Rudalics" . "rudalics@gmx.at")) - (:maintainer "Martin Rudalics" . "rudalics@gmx.at"))]) - (sed-mode . - [(1 0) - nil "Major mode to edit sed scripts" single - ((:url . "http://elpa.gnu.org/packages/sed-mode.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (seq . - [(2 20) - nil "Sequence manipulation functions" tar - ((:maintainer nil . "emacs-devel@gnu.org") - (:authors - ("Nicolas Petton" . "nicolas@petton.fr")) - (:keywords "sequences") - (:url . "http://elpa.gnu.org/packages/seq.html"))]) - (shelisp . - [(0 9 1) - nil "execute elisp in shell" single - ((:url . "http://elpa.gnu.org/packages/shelisp.html") - (:keywords "terminals" "lisp" "processes") - (:authors - ("Michael R. Mauger" . "michael@mauger.com")) - (:maintainer "Michael R. Mauger" . "michael@mauger.com"))]) - (shen-mode . - [(0 1) - nil "A major mode for editing shen source code" tar - ((:maintainer "Eric Schulte" . "schulte.eric@gmail.com") - (:authors - ("Eric Schulte" . "schulte.eric@gmail.com")) - (:keywords "languages" "shen") - (:url . "http://elpa.gnu.org/packages/shen-mode.html"))]) - (sisu-mode . - [(7 1 8) - nil "Major mode for SiSU markup text" single - ((:keywords "text" "syntax" "processes" "tools") - (:authors - ("Ralph Amissah & Ambrose Kofi Laing")) - (:maintainer "Ralph Amissah" . "ralph.amissah@gmail.com") - (:url . "http://www.sisudoc.org/"))]) - (sm-c-mode . - [(1 0) - nil "C major mode based on SMIE" single - ((:url . "http://elpa.gnu.org/packages/sm-c-mode.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (smalltalk-mode . - [(3 2 92) - nil "Major mode for the GNU Smalltalk programming language" tar - ((:maintainer "Derek Zhou" . "derek@3qin.us") - (:authors - ("Steve Byrne")) - (:url . "http://elpa.gnu.org/packages/smalltalk-mode.html"))]) - (smart-yank . - [(0 1 1) - ((emacs - (24))) - "A different approach of yank pointer handling" single - ((:url . "http://elpa.gnu.org/packages/smart-yank.html") - (:keywords "convenience") - (:authors - ("Michael Heerdegen" . "michael_heerdegen@web.de")) - (:maintainer "Michael Heerdegen" . "michael_heerdegen@web.de"))]) - (sml-mode . - [(6 10) - ((emacs - (24 3)) - (cl-lib - (0 5))) - "Major mode for editing (Standard) ML" single - ((:url . "http://elpa.gnu.org/packages/sml-mode.html") - (:keywords "sml") - (:authors - ("Lars Bo Nielsen") - (" Olin Shivers") - (" Fritz Knabe (?)") - (" Steven Gilmore (?)") - (" Matthew Morley" . "mjm@scs.leeds.ac.uk") - (" Matthias Blume" . "blume@cs.princeton.edu") - (" (Stefan Monnier)" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (soap-client . - [(3 1 5) - ((cl-lib - (0 6 1))) - "Access SOAP web services" tar - ((:url . "https://github.com/alex-hhh/emacs-soap-client") - (:maintainer "Alexandru Harsanyi" . "AlexHarsanyi@gmail.com") - (:authors - ("Alexandru Harsanyi" . "AlexHarsanyi@gmail.com")) - (:keywords "soap" "web-services" "comm" "hypermedia"))]) - (sokoban . - [(1 4 8) - ((emacs - (23 1)) - (cl-lib - (0 5))) - "Implementation of Sokoban for Emacs." tar - ((:maintainer "Dieter Deyke" . "dieter.deyke@gmail.com") - (:authors - ("Glynn Clements" . "glynn.clements@xemacs.org")) - (:keywords "games") - (:url . "http://elpa.gnu.org/packages/sokoban.html"))]) - (sotlisp . - [(1 6 2) - ((emacs - (24 1))) - "Write lisp at the speed of thought." single - ((:keywords "convenience" "lisp") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com") - (:url . "https://github.com/Malabarba/speed-of-thought-lisp"))]) - (spinner . - [(1 7 3) - nil "Add spinners and progress-bars to the mode-line for ongoing operations" single - ((:keywords "processes" "mode-line") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com") - (:url . "https://github.com/Malabarba/spinner.el"))]) - (sql-indent . - [(1 5) - ((cl-lib - (0 5))) - "Support for indenting code in SQL files." tar - ((:url . "https://github.com/alex-hhh/emacs-sql-indent") - (:maintainer "Alex Harsanyi" . "AlexHarsanyi@gmail.com") - (:authors - ("Alex Harsanyi" . "AlexHarsanyi@gmail.com")) - (:keywords "languages" "sql"))]) - (ssh-deploy . - [(3 1 11) - ((emacs - (25))) - "Deployment via Tramp, global or per directory." tar - ((:url . "https://github.com/cjohansson/emacs-ssh-deploy") - (:maintainer "Christian Johansson" . "christian@cvj.se") - (:authors - ("Christian Johansson" . "christian@cvj.se")) - (:keywords "tools" "convenience"))]) - (stream . - [(2 2 5) - ((emacs - (25))) - "Implementation of streams" tar - ((:maintainer nil . "nicolas@petton.fr") - (:authors - ("Nicolas Petton" . "nicolas@petton.fr")) - (:keywords "stream" "laziness" "sequences") - (:url . "http://elpa.gnu.org/packages/stream.html"))]) - (svg . - [(1 0) - ((emacs - (25))) - "SVG image creation functions" single - ((:url . "http://elpa.gnu.org/packages/svg.html") - (:keywords "image") - (:authors - ("Lars Magne Ingebrigtsen" . "larsi@gnus.org") - ("Felix E. Klee" . "felix.klee@inka.de")) - (:maintainer "Lars Magne Ingebrigtsen" . "larsi@gnus.org"))]) - (svg-clock . - [(1 1) - ((svg - (1 0)) - (emacs - (27 0))) - "Analog clock using Scalable Vector Graphics" single - ((:url . "http://elpa.gnu.org/packages/svg-clock.html") - (:keywords "demo" "svg" "clock") - (:authors - ("Ulf Jasper" . "ulf.jasper@web.de")) - (:maintainer "Ulf Jasper" . "ulf.jasper@web.de"))]) - (system-packages . - [(1 0 11) - ((emacs - (24 3))) - "functions to manage system packages" tar - ((:url . "https://gitlab.com/jabranham/system-packages") - (:maintainer "J. Alexander Branham" . "alex.branham@gmail.com") - (:authors - ("J. Alexander Branham" . "alex.branham@gmail.com")))]) - (tNFA . - [(0 1 1) - ((queue - (0 1))) - "Tagged non-deterministic finite-state automata" single - ((:keywords "extensions" "matching" "data structures tnfa" "nfa" "dfa" "finite state automata" "automata" "regexp") - (:authors - ("Toby Cubitt" . "toby-predictive@dr-qubit.org")) - (:maintainer "Toby Cubitt" . "toby-predictive@dr-qubit.org") - (:url . "http://www.dr-qubit.org/emacs.php"))]) - (temp-buffer-browse . - [(1 5) - ((emacs - (24))) - "temp buffer browse mode" single - ((:url . "http://elpa.gnu.org/packages/temp-buffer-browse.html") - (:keywords "convenience") - (:authors - ("Leo Liu" . "sdl.web@gmail.com")) - (:maintainer "Leo Liu" . "sdl.web@gmail.com"))]) - (test-simple . - [(1 3 0) - ((cl-lib - (0))) - "Simple Unit Test Framework for Emacs Lisp" single - ((:keywords "unit-test") - (:authors - ("Rocky Bernstein" . "rocky@gnu.org")) - (:maintainer "Rocky Bernstein" . "rocky@gnu.org") - (:url . "http://github.com/rocky/emacs-test-simple"))]) - (timerfunctions . - [(1 4 2) - ((cl-lib - (0 5)) - (emacs - (24))) - "Enhanced versions of some timer.el functions" single - ((:url . "http://elpa.gnu.org/packages/timerfunctions.html") - (:authors - ("Dave Goel" . "deego3@gmail.com")) - (:maintainer "Dave Goel" . "deego3@gmail.com"))]) - (tiny . - [(0 2 1) - nil "Quickly generate linear ranges in Emacs" tar - ((:url . "https://github.com/abo-abo/tiny") - (:maintainer "Oleh Krehel" . "ohwoeowho@gmail.com") - (:authors - ("Oleh Krehel" . "ohwoeowho@gmail.com")) - (:keywords "convenience"))]) - (tramp . - [(2 4 3 3) - ((emacs - (24 4))) - "Transparent Remote Access, Multiple Protocol" tar - ((:url . "https://savannah.gnu.org/projects/tramp") - (:maintainer "Michael Albinus" . "michael.albinus@gmx.de") - (:authors - ("Kai GroĂźjohann" . "kai.grossjohann@gmx.net") - ("Michael Albinus" . "michael.albinus@gmx.de")) - (:keywords "comm" "processes"))]) - (tramp-theme . - [(0 2) - ((emacs - (24 1))) - "Custom theme for remote buffers" single - ((:url . "http://elpa.gnu.org/packages/tramp-theme.html") - (:keywords "convenience" "faces") - (:authors - ("Michael Albinus" . "michael.albinus@gmx.de")) - (:maintainer "Michael Albinus" . "michael.albinus@gmx.de"))]) - (transcribe . - [(1 5 2) - nil "Package for audio transcriptions" single - ((:url . "http://elpa.gnu.org/packages/transcribe.html") - (:authors - ("David Gonzalez Gandara" . "dggandara@member.fsf.org")) - (:maintainer "David Gonzalez Gandara" . "dggandara@member.fsf.org"))]) - (trie . - [(0 4) - ((tNFA - (0 1 1)) - (heap - (0 3))) - "Trie data structure" single - ((:keywords "extensions" "matching" "data structures trie" "ternary search tree" "tree" "completion" "regexp") - (:authors - ("Toby Cubitt" . "toby-predictive@dr-qubit.org")) - (:maintainer "Toby Cubitt" . "toby-predictive@dr-qubit.org") - (:url . "http://www.dr-qubit.org/emacs.php"))]) - (undo-tree . - [(0 7 4) - nil "Treat undo history as a tree" single - ((:keywords "convenience" "files" "undo" "redo" "history" "tree") - (:authors - ("Toby Cubitt" . "toby-undo-tree@dr-qubit.org")) - (:maintainer "Toby Cubitt" . "toby-undo-tree@dr-qubit.org") - (:url . "http://www.dr-qubit.org/emacs.php"))]) - (uni-confusables . - [(0 1) - nil "Unicode confusables table" tar - ((:maintainer "Teodor Zlatanov" . "tzz@lifelogs.com") - (:url . "http://elpa.gnu.org/packages/uni-confusables.html"))]) - (uniquify-files . - [(1 0 2) - ((emacs - (25 0))) - "Completion style for files, minimizing directories" tar - ((:maintainer "Stephen Leake" . "stephen_leake@stephe-leake.org") - (:authors - ("Stephen Leake" . "stephen_leake@stephe-leake.org")) - (:keywords "completion" "table" "uniquify") - (:url . "http://elpa.gnu.org/packages/uniquify-files.html"))]) - (url-http-ntlm . - [(2 0 4) - ((cl-lib - (0 5)) - (ntlm - (2 1 0))) - "NTLM authentication for the url library" single - ((:keywords "comm" "data" "processes" "hypermedia") - (:authors - ("Tom Schutzer-Weissmann" . "tom.weissmann@gmail.com")) - (:maintainer "Thomas Fitzsimmons" . "fitzsim@fitzsim.org") - (:url . "https://code.google.com/p/url-http-ntlm/"))]) - (validate . - [(1 0 4) - ((emacs - (24 1)) - (cl-lib - (0 5)) - (seq - (2 16))) - "Schema validation for Emacs-lisp" single - ((:url . "http://elpa.gnu.org/packages/validate.html") - (:keywords "lisp") - (:authors - ("Artur Malabarba" . "emacs@endlessparentheses.com")) - (:maintainer "Artur Malabarba" . "emacs@endlessparentheses.com"))]) - (vcard . - [(0 1) - ((emacs - (27 1))) - "Package for handling vCard files" tar - ((:maintainer "Eric Abrahamsen" . "eric@ericabrahamsen.net") - (:authors - ("Eric Abrahamsen" . "eric@ericabrahamsen.net")) - (:url . "http://elpa.gnu.org/packages/vcard.html"))]) - (vcl-mode . - [(1 1) - nil "Major mode for Varnish Configuration Language" single - ((:url . "http://elpa.gnu.org/packages/vcl-mode.html") - (:keywords "varnish" "vcl") - (:authors - ("Sergey Poznyakoff" . "gray@gnu.org.ua")) - (:maintainer "Sergey Poznyakoff" . "gray@gnu.org.ua"))]) - (vdiff . - [(0 2 3) - ((emacs - (24 4)) - (hydra - (0 13 0))) - "A diff tool similar to vimdiff" single - ((:keywords "diff") - (:authors - ("Justin Burkett" . "justin@burkett.cc")) - (:maintainer "Justin Burkett" . "justin@burkett.cc") - (:url . "https://github.com/justbur/emacs-vdiff"))]) - (verilog-mode . - [(2020 2 23 232634261) - nil "major mode for editing verilog source in Emacs" single - ((:keywords "languages") - (:authors - ("Michael McNamara" . "mac@verilog.com") - ("Wilson Snyder" . "wsnyder@wsnyder.org")) - (:maintainer "Michael McNamara" . "mac@verilog.com") - (:url . "https://www.veripool.org"))]) - (vigenere . - [(1 0) - ((emacs - (25 1))) - "Run a vigenere cipher on a block of text ;" single - ((:keywords "data" "vigenere" "cipher") - (:authors - ("Ian Dunn" . "dunni@gnu.org")) - (:maintainer "Ian Dunn" . "dunni@gnu.org") - (:url . "https://elpa.gnu.org/packages/vigenere.html"))]) - (visual-filename-abbrev . - [(1 0) - ((emacs - (26 1))) - "Visually abbreviate filenames" single - ((:url . "http://elpa.gnu.org/packages/visual-filename-abbrev.html") - (:keywords "tools") - (:authors - ("Tassilo Horn" . "tsdh@gnu.org")) - (:maintainer "Tassilo Horn" . "tsdh@gnu.org"))]) - (visual-fill . - [(0 1) - nil "Auto-refill paragraphs without modifying the buffer" single - ((:url . "http://elpa.gnu.org/packages/visual-fill.html") - (:authors - ("Stefan Monnier" . "monnier@iro.umontreal.ca")) - (:maintainer "Stefan Monnier" . "monnier@iro.umontreal.ca"))]) - (vlf . - [(1 7 1) - nil "View Large Files" tar - ((:url . "https://github.com/m00natic/vlfi") - (:maintainer "Andrey Kotlarski" . "m00naticus@gmail.com") - (:keywords "large files" "utilities"))]) - (wcheck-mode . - [(2019 6 17) - nil "General interface for text checkers" single - ((:keywords "text" "spell" "check" "languages" "ispell") - (:authors - ("Teemu Likonen" . "tlikonen@iki.fi")) - (:maintainer "Teemu Likonen" . "tlikonen@iki.fi") - (:url . "https://github.com/tlikonen/wcheck-mode"))]) - (wconf . - [(0 2 1) - ((emacs - (24 4))) - "Minimal window layout manager" single - ((:keywords "windows" "frames" "layout") - (:authors - ("Ingo Lohmar" . "i.lohmar@gmail.com")) - (:maintainer "Ingo Lohmar" . "i.lohmar@gmail.com") - (:url . "https://github.com/ilohmar/wconf"))]) - (web-server . - [(0 1 2) - ((emacs - (24 3))) - "Emacs Web Server" tar - ((:url . "https://github.com/eschulte/emacs-web-server") - (:maintainer "Eric Schulte" . "schulte.eric@gmail.com") - (:authors - ("Eric Schulte" . "schulte.eric@gmail.com")) - (:keywords "http" "server" "network"))]) - (webfeeder . - [(1 0 0) - ((emacs - (25 1))) - "Build RSS and Atom webfeeds from HTML files" tar - ((:url . "https://gitlab.com/Ambrevar/emacs-webfeeder") - (:maintainer "Pierre Neidhardt" . "mail@ambrevar.xyz") - (:authors - ("Pierre Neidhardt" . "mail@ambrevar.xyz")) - (:keywords "news" "hypermedia" "blog" "feed" "rss" "atom"))]) - (websocket . - [(1 12) - ((cl-lib - (0 5))) - "Emacs WebSocket client and server" tar - ((:maintainer "Andrew Hyatt" . "ahyatt@gmail.com") - (:authors - ("Andrew Hyatt" . "ahyatt@gmail.com")) - (:keywords "communication" "websocket" "server") - (:url . "http://elpa.gnu.org/packages/websocket.html"))]) - (which-key . - [(3 3 0) - ((emacs - (24 4))) - "Display available keybindings in popup" tar - ((:url . "https://github.com/justbur/emacs-which-key") - (:maintainer "Justin Burkett" . "justin@burkett.cc") - (:authors - ("Justin Burkett" . "justin@burkett.cc")))]) - (windower . - [(0 0 1) - ((emacs - (25))) - "Helper functions for window manipulation." single - ((:keywords "convenience" "tools") - (:authors - ("Pierre Neidhardt" . "mail@ambrevar.xyz")) - (:maintainer "Pierre Neidhardt" . "mail@ambrevar.xyz") - (:url . "https://gitlab.com/ambrevar/windower"))]) - (windresize . - [(0 1) - nil "Resize windows interactively" single - ((:url . "http://elpa.gnu.org/packages/windresize.html") - (:keywords "window") - (:authors - ("Bastien" . "bzg@gnu.org")) - (:maintainer "Bastien" . "bzg@gnu.org"))]) - (wisi . - [(3 0 1) - ((emacs - (25 0)) - (seq - (2 20))) - "Utilities for implementing an indentation/navigation engine using a generalized LALR parser" tar - ((:url . "http://stephe-leake.org/ada/wisitoken.html") - (:maintainer "Stephen Leake" . "stephen_leake@stephe-leake.org") - (:authors - ("Stephen Leake" . "stephen_leake@stephe-leake.org")) - (:keywords "parser" "indentation" "navigation"))]) - (wisitoken-grammar-mode . - [(1 0 3) - ((wisi - (2 2 1)) - (emacs - (25 0)) - (mmm-mode - (0 5 7))) - "Major mode for editing WisiToken grammar files" tar - ((:maintainer "Stephen Leake" . "stephen_leake@stephe-leake.org") - (:authors - ("Stephen Leake" . "stephen_leake@stephe-leake.org")) - (:keywords "languages") - (:url . "http://elpa.gnu.org/packages/wisitoken-grammar-mode.html"))]) - (wpuzzle . - [(1 1) - nil "find as many word in a given time" single - ((:url . "http://elpa.gnu.org/packages/wpuzzle.html") - (:authors - ("Ivan Kanis" . "ivan@kanis.fr")) - (:maintainer "Ivan Kanis" . "ivan@kanis.fr"))]) - (xclip . - [(1 10) - nil "Copy&paste GUI clipboard from text terminal" single - ((:url . "http://elpa.gnu.org/packages/xclip.html") - (:keywords "convenience" "tools") - (:authors - ("Leo Liu" . "sdl.web@gmail.com")) - (:maintainer "Leo Liu" . "sdl.web@gmail.com"))]) - (xelb . - [(0 18) - ((emacs - (24 4)) - (cl-generic - (0 2))) - "X protocol Emacs Lisp Binding" tar - ((:url . "https://github.com/ch11ng/xelb") - (:maintainer "Chris Feng" . "chris.w.feng@gmail.com") - (:authors - ("Chris Feng" . "chris.w.feng@gmail.com")) - (:keywords "unix"))]) - (xpm . - [(1 0 4) - nil "edit XPM images" tar - ((:url . "http://www.gnuvola.org/software/xpm/") - (:maintainer "Thien-Thi Nguyen" . "ttn@gnu.org") - (:authors - ("Thien-Thi Nguyen" . "ttn@gnu.org")) - (:keywords "multimedia" "xpm"))]) - (xr . - [(1 18) - ((emacs - (26 1))) - "Convert string regexp to rx notation" tar - ((:url . "https://github.com/mattiase/xr") - (:maintainer "Mattias EngdegĂĄrd" . "mattiase@acm.org") - (:authors - ("Mattias EngdegĂĄrd" . "mattiase@acm.org")) - (:keywords "lisp" "regexps"))]) - (yasnippet . - [(0 14 0) - ((cl-lib - (0 5))) - "Yet another snippet extension for Emacs" tar - ((:url . "http://github.com/joaotavora/yasnippet") - (:maintainer "Noam Postavsky" . "npostavs@gmail.com") - (:keywords "convenience" "emulation"))]) - (yasnippet-classic-snippets . - [(1 0 2) - ((yasnippet - (0 9 1))) - "\"Classic\" yasnippet snippets" tar - ((:maintainer "Noam Postavsky" . "npostavs@gmail.com") - (:keywords "snippets") - (:url . "http://elpa.gnu.org/packages/yasnippet-classic-snippets.html"))]) - (zones . - [(2019 7 13) - nil "Zones of text - like multiple regions" single - ((:keywords "narrow" "restriction" "widen" "region" "zone") - (:authors - ("Drew Adams")) - (:maintainer "Drew Adams" . "drew.adams@oracle.com") - (:url . "https://elpa.gnu.org/packages/zones.html"))]) - (ztree . - [(1 0 5) - ((cl-lib - (0))) - "Text mode directory tree" tar - ((:url . "https://github.com/fourier/ztree") - (:maintainer "Alexey Veretennikov" . "alexey.veretennikov@gmail.com") - (:authors - ("Alexey Veretennikov" . "alexey.veretennikov@gmail.com")) - (:keywords "files" "tools"))])) diff --git a/elpa/archives/gnu/archive-contents.signed b/elpa/archives/gnu/archive-contents.signed deleted file mode 100644 index 34e3f86b..00000000 --- a/elpa/archives/gnu/archive-contents.signed +++ /dev/null @@ -1 +0,0 @@ -Good signature from 066DAFCB81E42C40 GNU ELPA Signing Agent (2019) (trust undefined) created at 2020-04-13T11:05:02+0200 using RSA \ No newline at end of file diff --git a/elpa/async-20200113.1745/async-autoloads.el b/elpa/async-20200113.1745/async-autoloads.el deleted file mode 100644 index de07d21f..00000000 --- a/elpa/async-20200113.1745/async-autoloads.el +++ /dev/null @@ -1,174 +0,0 @@ -;;; async-autoloads.el --- automatically extracted autoloads -;; -;;; Code: - -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) - - -;;;### (autoloads nil "async" "async.el" (0 0 0 0)) -;;; Generated autoloads from async.el - -(autoload 'async-start-process "async" "\ -Start the executable PROGRAM asynchronously named NAME. See `async-start'. -PROGRAM is passed PROGRAM-ARGS, calling FINISH-FUNC with the -process object when done. If FINISH-FUNC is nil, the future -object will return the process object when the program is -finished. Set DEFAULT-DIRECTORY to change PROGRAM's current -working directory. - -\(fn NAME PROGRAM FINISH-FUNC &rest PROGRAM-ARGS)" nil nil) - -(autoload 'async-start "async" "\ -Execute START-FUNC (often a lambda) in a subordinate Emacs process. -When done, the return value is passed to FINISH-FUNC. Example: - - (async-start - ;; What to do in the child process - (lambda () - (message \"This is a test\") - (sleep-for 3) - 222) - - ;; What to do when it finishes - (lambda (result) - (message \"Async process done, result should be 222: %s\" - result))) - -If FINISH-FUNC is nil or missing, a future is returned that can -be inspected using `async-get', blocking until the value is -ready. Example: - - (let ((proc (async-start - ;; What to do in the child process - (lambda () - (message \"This is a test\") - (sleep-for 3) - 222)))) - - (message \"I'm going to do some work here\") ;; .... - - (message \"Waiting on async process, result should be 222: %s\" - (async-get proc))) - -If you don't want to use a callback, and you don't care about any -return value from the child process, pass the `ignore' symbol as -the second argument (if you don't, and never call `async-get', it -will leave *emacs* process buffers hanging around): - - (async-start - (lambda () - (delete-file \"a remote file on a slow link\" nil)) - 'ignore) - -Note: Even when FINISH-FUNC is present, a future is still -returned except that it yields no value (since the value is -passed to FINISH-FUNC). Call `async-get' on such a future always -returns nil. It can still be useful, however, as an argument to -`async-ready' or `async-wait'. - -\(fn START-FUNC &optional FINISH-FUNC)" nil nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "async" '("async-"))) - -;;;*** - -;;;### (autoloads nil "async-bytecomp" "async-bytecomp.el" (0 0 0 -;;;;;; 0)) -;;; Generated autoloads from async-bytecomp.el - -(autoload 'async-byte-recompile-directory "async-bytecomp" "\ -Compile all *.el files in DIRECTORY asynchronously. -All *.elc files are systematically deleted before proceeding. - -\(fn DIRECTORY &optional QUIET)" nil nil) - -(defvar async-bytecomp-package-mode nil "\ -Non-nil if Async-Bytecomp-Package mode is enabled. -See the `async-bytecomp-package-mode' command -for a description of this minor mode. -Setting this variable directly does not take effect; -either customize it (see the info node `Easy Customization') -or call the function `async-bytecomp-package-mode'.") - -(custom-autoload 'async-bytecomp-package-mode "async-bytecomp" nil) - -(autoload 'async-bytecomp-package-mode "async-bytecomp" "\ -Byte compile asynchronously packages installed with package.el. -Async compilation of packages can be controlled by -`async-bytecomp-allowed-packages'. - -\(fn &optional ARG)" t nil) - -(autoload 'async-byte-compile-file "async-bytecomp" "\ -Byte compile Lisp code FILE asynchronously. - -Same as `byte-compile-file' but asynchronous. - -\(fn FILE)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "async-bytecomp" '("async-byte"))) - -;;;*** - -;;;### (autoloads nil "dired-async" "dired-async.el" (0 0 0 0)) -;;; Generated autoloads from dired-async.el - -(defvar dired-async-mode nil "\ -Non-nil if Dired-Async mode is enabled. -See the `dired-async-mode' command -for a description of this minor mode. -Setting this variable directly does not take effect; -either customize it (see the info node `Easy Customization') -or call the function `dired-async-mode'.") - -(custom-autoload 'dired-async-mode "dired-async" nil) - -(autoload 'dired-async-mode "dired-async" "\ -Do dired actions asynchronously. - -\(fn &optional ARG)" t nil) - -(autoload 'dired-async-do-copy "dired-async" "\ -Run â€dired-do-copy’ asynchronously. - -\(fn &optional ARG)" t nil) - -(autoload 'dired-async-do-symlink "dired-async" "\ -Run â€dired-do-symlink’ asynchronously. - -\(fn &optional ARG)" t nil) - -(autoload 'dired-async-do-hardlink "dired-async" "\ -Run â€dired-do-hardlink’ asynchronously. - -\(fn &optional ARG)" t nil) - -(autoload 'dired-async-do-rename "dired-async" "\ -Run â€dired-do-rename’ asynchronously. - -\(fn &optional ARG)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired-async" '("dired-async-"))) - -;;;*** - -;;;### (autoloads nil "smtpmail-async" "smtpmail-async.el" (0 0 0 -;;;;;; 0)) -;;; Generated autoloads from smtpmail-async.el - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "smtpmail-async" '("async-smtpmail-"))) - -;;;*** - -;;;### (autoloads nil nil ("async-pkg.el") (0 0 0 0)) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; async-autoloads.el ends here diff --git a/elpa/async-20200113.1745/async-bytecomp.el b/elpa/async-20200113.1745/async-bytecomp.el deleted file mode 100644 index 1198497f..00000000 --- a/elpa/async-20200113.1745/async-bytecomp.el +++ /dev/null @@ -1,210 +0,0 @@ -;;; async-bytecomp.el --- Compile elisp files asynchronously -*- lexical-binding: t -*- - -;; Copyright (C) 2014-2016 Free Software Foundation, Inc. - -;; Authors: John Wiegley -;; Thierry Volpiatto - -;; Keywords: dired async byte-compile -;; X-URL: https://github.com/jwiegley/dired-async - -;; 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 2, 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 GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: -;; -;; This package provide the `async-byte-recompile-directory' function -;; which allows, as the name says to recompile a directory outside of -;; your running emacs. -;; The benefit is your files will be compiled in a clean environment without -;; the old *.el files loaded. -;; Among other things, this fix a bug in package.el which recompile -;; the new files in the current environment with the old files loaded, creating -;; errors in most packages after upgrades. -;; -;; NB: This package is advicing the function `package--compile'. - -;;; Code: - -(require 'cl-lib) -(require 'async) - -(defcustom async-bytecomp-allowed-packages - ;; FIXME: Arguably the default should be `all', but currently - ;; this minor mode is silently/forcefully enabled by Helm and Magit to ensure - ;; they get compiled asynchronously, so this conservative default value is - ;; here to make sure that the mode can be enabled without the user's - ;; explicit consent. - '(async forge helm helm-core helm-ls-git helm-ls-hg magit) - "Packages in this list will be compiled asynchronously by `package--compile'. -All the dependencies of these packages will be compiled async too, -so no need to add dependencies to this list. -The value of this variable can also be the symbol `all', in this case -all packages are always compiled asynchronously." - :group 'async - :type '(choice - (const :tag "All packages" all) - (repeat symbol))) - -(defvar async-byte-compile-log-file - (concat user-emacs-directory "async-bytecomp.log")) - -;;;###autoload -(defun async-byte-recompile-directory (directory &optional quiet) - "Compile all *.el files in DIRECTORY asynchronously. -All *.elc files are systematically deleted before proceeding." - (cl-loop with dir = (directory-files directory t "\\.elc\\'") - unless dir return nil - for f in dir - when (file-exists-p f) do (delete-file f)) - ;; Ensure async is reloaded when async.elc is deleted. - ;; This happen when recompiling its own directory. - (load "async") - (let ((call-back - (lambda (&optional _ignore) - (if (file-exists-p async-byte-compile-log-file) - (let ((buf (get-buffer-create byte-compile-log-buffer)) - (n 0)) - (with-current-buffer buf - (goto-char (point-max)) - (let ((inhibit-read-only t)) - (insert-file-contents async-byte-compile-log-file) - (compilation-mode)) - (display-buffer buf) - (delete-file async-byte-compile-log-file) - (unless quiet - (save-excursion - (goto-char (point-min)) - (while (re-search-forward "^.*:Error:" nil t) - (cl-incf n))) - (if (> n 0) - (message "Failed to compile %d files in directory `%s'" n directory) - (message "Directory `%s' compiled asynchronously with warnings" directory))))) - (unless quiet - (message "Directory `%s' compiled asynchronously with success" directory)))))) - (async-start - `(lambda () - (require 'bytecomp) - ,(async-inject-variables "\\`\\(load-path\\)\\|byte\\'") - (let ((default-directory (file-name-as-directory ,directory)) - error-data) - (add-to-list 'load-path default-directory) - (byte-recompile-directory ,directory 0 t) - (when (get-buffer byte-compile-log-buffer) - (setq error-data (with-current-buffer byte-compile-log-buffer - (buffer-substring-no-properties (point-min) (point-max)))) - (unless (string= error-data "") - (with-temp-file ,async-byte-compile-log-file - (erase-buffer) - (insert error-data)))))) - call-back) - (unless quiet (message "Started compiling asynchronously directory %s" directory)))) - -(defvar package-archive-contents) -(defvar package-alist) -(declare-function package-desc-reqs "package.el" (cl-x)) - -(defun async-bytecomp--get-package-deps (pkgs) - ;; Same as `package--get-deps' but parse instead `package-archive-contents' - ;; because PKG is not already installed and not present in `package-alist'. - ;; However fallback to `package-alist' in case PKG no more present - ;; in `package-archive-contents' due to modification to `package-archives'. - ;; See issue #58. - (let ((seen '())) - (while pkgs - (let ((pkg (pop pkgs))) - (unless (memq pkg seen) - (let ((pkg-desc (cadr (or (assq pkg package-archive-contents) - (assq pkg package-alist))))) - (when pkg-desc - (push pkg seen) - (setq pkgs (append (mapcar #'car (package-desc-reqs pkg-desc)) - pkgs))))))) - seen)) - -(defadvice package--compile (around byte-compile-async) - (let ((cur-package (package-desc-name pkg-desc)) - (pkg-dir (package-desc-dir pkg-desc))) - (if (or (member async-bytecomp-allowed-packages '(t all (all))) - (memq cur-package (async-bytecomp--get-package-deps - async-bytecomp-allowed-packages))) - (progn - (when (eq cur-package 'async) - (fmakunbound 'async-byte-recompile-directory)) - ;; Add to `load-path' the latest version of async and - ;; reload it when reinstalling async. - (when (string= cur-package "async") - (cl-pushnew pkg-dir load-path) - (load "async-bytecomp")) - ;; `async-byte-recompile-directory' will add directory - ;; as needed to `load-path'. - (async-byte-recompile-directory (package-desc-dir pkg-desc) t)) - ad-do-it))) - -;;;###autoload -(define-minor-mode async-bytecomp-package-mode - "Byte compile asynchronously packages installed with package.el. -Async compilation of packages can be controlled by -`async-bytecomp-allowed-packages'." - :group 'async - :global t - (if async-bytecomp-package-mode - (ad-activate 'package--compile) - (ad-deactivate 'package--compile))) - -;;;###autoload -(defun async-byte-compile-file (file) - "Byte compile Lisp code FILE asynchronously. - -Same as `byte-compile-file' but asynchronous." - (interactive "fFile: ") - (let ((call-back - (lambda (&optional _ignore) - (let ((bn (file-name-nondirectory file))) - (if (file-exists-p async-byte-compile-log-file) - (let ((buf (get-buffer-create byte-compile-log-buffer)) - start) - (with-current-buffer buf - (goto-char (setq start (point-max))) - (let ((inhibit-read-only t)) - (insert-file-contents async-byte-compile-log-file) - (compilation-mode)) - (display-buffer buf) - (delete-file async-byte-compile-log-file) - (save-excursion - (goto-char start) - (if (re-search-forward "^.*:Error:" nil t) - (message "Failed to compile `%s'" bn) - (message "`%s' compiled asynchronously with warnings" bn))))) - (message "`%s' compiled asynchronously with success" bn)))))) - (async-start - `(lambda () - (require 'bytecomp) - ,(async-inject-variables "\\`load-path\\'") - (let ((default-directory ,(file-name-directory file))) - (add-to-list 'load-path default-directory) - (byte-compile-file ,file) - (when (get-buffer byte-compile-log-buffer) - (setq error-data (with-current-buffer byte-compile-log-buffer - (buffer-substring-no-properties (point-min) (point-max)))) - (unless (string= error-data "") - (with-temp-file ,async-byte-compile-log-file - (erase-buffer) - (insert error-data)))))) - call-back))) - -(provide 'async-bytecomp) - -;;; async-bytecomp.el ends here diff --git a/elpa/async-20200113.1745/async-bytecomp.elc b/elpa/async-20200113.1745/async-bytecomp.elc deleted file mode 100644 index 1a350c76..00000000 Binary files a/elpa/async-20200113.1745/async-bytecomp.elc and /dev/null differ diff --git a/elpa/async-20200113.1745/async-pkg.el b/elpa/async-20200113.1745/async-pkg.el deleted file mode 100644 index dbce789b..00000000 --- a/elpa/async-20200113.1745/async-pkg.el +++ /dev/null @@ -1,8 +0,0 @@ -(define-package "async" "20200113.1745" "Asynchronous processing in Emacs" - '((emacs "24.3")) - :keywords - '("async") - :url "https://github.com/jwiegley/emacs-async") -;; Local Variables: -;; no-byte-compile: t -;; End: diff --git a/elpa/async-20200113.1745/async.el b/elpa/async-20200113.1745/async.el deleted file mode 100644 index 6437a301..00000000 --- a/elpa/async-20200113.1745/async.el +++ /dev/null @@ -1,408 +0,0 @@ -;;; async.el --- Asynchronous processing -*- lexical-binding: t -*- - -;; Copyright (C) 2012-2016 Free Software Foundation, Inc. - -;; Author: John Wiegley -;; Created: 18 Jun 2012 -;; Version: 1.9.4 -;; Package-Requires: ((emacs "24.3")) -;; Keywords: convenience async -;; URL: https://github.com/jwiegley/emacs-async - -;; 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 2, 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 GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; Adds the ability to call asynchronous functions and process with ease. See -;; the documentation for `async-start' and `async-start-process'. - -;;; Code: - -(eval-when-compile (require 'cl-lib)) - -(defgroup async nil - "Simple asynchronous processing in Emacs" - :group 'emacs) - -(defcustom async-variables-noprops-function #'async--purecopy - "Default function to remove text properties in variables." - :group 'async - :type 'function) - -(defvar async-debug nil) -(defvar async-send-over-pipe t) -(defvar async-in-child-emacs nil) -(defvar async-callback nil) -(defvar async-callback-for-process nil) -(defvar async-callback-value nil) -(defvar async-callback-value-set nil) -(defvar async-current-process nil) -(defvar async--procvar nil) - -(defun async--purecopy (object) - "Remove text properties in OBJECT. - -Argument OBJECT may be a list or a string, if anything else it -is returned unmodified." - (cond ((stringp object) - (substring-no-properties object)) - ((consp object) - (cl-loop for elm in object - ;; A string. - if (stringp elm) - collect (substring-no-properties elm) - else - ;; Proper lists. - if (and (consp elm) (null (cdr (last elm)))) - collect (async--purecopy elm) - else - ;; Dotted lists. - ;; We handle here only dotted list where car and cdr - ;; are atoms i.e. (x . y) and not (x . (x . y)) or - ;; (x . (x y)) which should fit most cases. - if (and (consp elm) (cdr (last elm))) - collect (let ((key (car elm)) - (val (cdr elm))) - (cons (if (stringp key) - (substring-no-properties key) - key) - (if (stringp val) - (substring-no-properties val) - val))) - else - collect elm)) - (t object))) - -(defun async-inject-variables - (include-regexp &optional predicate exclude-regexp noprops) - "Return a `setq' form that replicates part of the calling environment. - -It sets the value for every variable matching INCLUDE-REGEXP and -also PREDICATE. It will not perform injection for any variable -matching EXCLUDE-REGEXP (if present) or representing a `syntax-table' -i.e. ending by \"-syntax-table\". -When NOPROPS is non nil it tries to strip out text properties of each -variable's value with `async-variables-noprops-function'. - -It is intended to be used as follows: - - (async-start - `(lambda () - (require 'smtpmail) - (with-temp-buffer - (insert ,(buffer-substring-no-properties (point-min) (point-max))) - ;; Pass in the variable environment for smtpmail - ,(async-inject-variables \"\\`\\(smtpmail\\|\\(user-\\)?mail\\)-\") - (smtpmail-send-it))) - 'ignore)" - `(setq - ,@(let (bindings) - (mapatoms - (lambda (sym) - (let* ((sname (and (boundp sym) (symbol-name sym))) - (value (and sname (symbol-value sym)))) - (when (and sname - (or (null include-regexp) - (string-match include-regexp sname)) - (or (null exclude-regexp) - (not (string-match exclude-regexp sname))) - (not (string-match "-syntax-table\\'" sname))) - (unless (or (stringp value) - (memq value '(nil t)) - (numberp value) - (vectorp value)) - (setq value `(quote ,value))) - (when noprops - (setq value (funcall async-variables-noprops-function - value))) - (when (or (null predicate) - (funcall predicate sym)) - (setq bindings (cons value bindings) - bindings (cons sym bindings))))))) - bindings))) - -(defalias 'async-inject-environment 'async-inject-variables) - -(defun async-handle-result (func result buf) - (if (null func) - (progn - (set (make-local-variable 'async-callback-value) result) - (set (make-local-variable 'async-callback-value-set) t)) - (unwind-protect - (if (and (listp result) - (eq 'async-signal (nth 0 result))) - (signal (car (nth 1 result)) - (cdr (nth 1 result))) - (funcall func result)) - (unless async-debug - (kill-buffer buf))))) - -(defun async-when-done (proc &optional _change) - "Process sentinel used to retrieve the value from the child process." - (when (eq 'exit (process-status proc)) - (with-current-buffer (process-buffer proc) - (let ((async-current-process proc)) - (if (= 0 (process-exit-status proc)) - (if async-callback-for-process - (if async-callback - (prog1 - (funcall async-callback proc) - (unless async-debug - (kill-buffer (current-buffer)))) - (set (make-local-variable 'async-callback-value) proc) - (set (make-local-variable 'async-callback-value-set) t)) - (goto-char (point-max)) - (backward-sexp) - (async-handle-result async-callback (read (current-buffer)) - (current-buffer))) - (set (make-local-variable 'async-callback-value) - (list 'error - (format "Async process '%s' failed with exit code %d" - (process-name proc) (process-exit-status proc)))) - (set (make-local-variable 'async-callback-value-set) t)))))) - -(defun async--receive-sexp (&optional stream) - (let ((sexp (decode-coding-string (base64-decode-string - (read stream)) 'utf-8-auto)) - ;; Parent expects UTF-8 encoded text. - (coding-system-for-write 'utf-8-auto)) - (if async-debug - (message "Received sexp {{{%s}}}" (pp-to-string sexp))) - (setq sexp (read sexp)) - (if async-debug - (message "Read sexp {{{%s}}}" (pp-to-string sexp))) - (eval sexp))) - -(defun async--insert-sexp (sexp) - (let (print-level - print-length - (print-escape-nonascii t) - (print-circle t)) - (prin1 sexp (current-buffer)) - ;; Just in case the string we're sending might contain EOF - (encode-coding-region (point-min) (point-max) 'utf-8-auto) - (base64-encode-region (point-min) (point-max) t) - (goto-char (point-min)) (insert ?\") - (goto-char (point-max)) (insert ?\" ?\n))) - -(defun async--transmit-sexp (process sexp) - (with-temp-buffer - (if async-debug - (message "Transmitting sexp {{{%s}}}" (pp-to-string sexp))) - (async--insert-sexp sexp) - (process-send-region process (point-min) (point-max)))) - -(defun async-batch-invoke () - "Called from the child Emacs process' command line." - ;; Make sure 'message' and 'prin1' encode stuff in UTF-8, as parent - ;; process expects. - (let ((coding-system-for-write 'utf-8-auto)) - (setq async-in-child-emacs t - debug-on-error async-debug) - (if debug-on-error - (prin1 (funcall - (async--receive-sexp (unless async-send-over-pipe - command-line-args-left)))) - (condition-case err - (prin1 (funcall - (async--receive-sexp (unless async-send-over-pipe - command-line-args-left)))) - (error - (prin1 (list 'async-signal err))))))) - -(defun async-ready (future) - "Query a FUTURE to see if it is ready. - -I.e., if no blocking -would result from a call to `async-get' on that FUTURE." - (and (memq (process-status future) '(exit signal)) - (let ((buf (process-buffer future))) - (if (buffer-live-p buf) - (with-current-buffer buf - async-callback-value-set) - t)))) - -(defun async-wait (future) - "Wait for FUTURE to become ready." - (while (not (async-ready future)) - (sleep-for 0.05))) - -(defun async-get (future) - "Get the value from process FUTURE when it is ready. -FUTURE is returned by `async-start' or `async-start-process' when -its FINISH-FUNC is nil." - (and future (async-wait future)) - (let ((buf (process-buffer future))) - (when (buffer-live-p buf) - (with-current-buffer buf - (async-handle-result - #'identity async-callback-value (current-buffer)))))) - -(defun async-message-p (value) - "Return non-nil of VALUE is an async.el message packet." - (and (listp value) - (plist-get value :async-message))) - -(defun async-send (&rest args) - "Send the given messages to the asychronous Emacs PROCESS." - (let ((args (append args '(:async-message t)))) - (if async-in-child-emacs - (if async-callback - (funcall async-callback args)) - (async--transmit-sexp (car args) (list 'quote (cdr args)))))) - -(defun async-receive () - "Send the given messages to the asychronous Emacs PROCESS." - (async--receive-sexp)) - -;;;###autoload -(defun async-start-process (name program finish-func &rest program-args) - "Start the executable PROGRAM asynchronously named NAME. See `async-start'. -PROGRAM is passed PROGRAM-ARGS, calling FINISH-FUNC with the -process object when done. If FINISH-FUNC is nil, the future -object will return the process object when the program is -finished. Set DEFAULT-DIRECTORY to change PROGRAM's current -working directory." - (let* ((buf (generate-new-buffer (concat "*" name "*"))) - (proc (let ((process-connection-type nil)) - (apply #'start-process name buf program program-args)))) - (with-current-buffer buf - (set (make-local-variable 'async-callback) finish-func) - (set-process-sentinel proc #'async-when-done) - (unless (string= name "emacs") - (set (make-local-variable 'async-callback-for-process) t)) - proc))) - -(defvar async-quiet-switch "-Q" - "The Emacs parameter to use to call emacs without config. -Can be one of \"-Q\" or \"-q\". -Default is \"-Q\" but it is sometimes useful to use \"-q\" to have a -enhanced config or some more variables loaded.") - -;;;###autoload -(defun async-start (start-func &optional finish-func) - "Execute START-FUNC (often a lambda) in a subordinate Emacs process. -When done, the return value is passed to FINISH-FUNC. Example: - - (async-start - ;; What to do in the child process - (lambda () - (message \"This is a test\") - (sleep-for 3) - 222) - - ;; What to do when it finishes - (lambda (result) - (message \"Async process done, result should be 222: %s\" - result))) - -If FINISH-FUNC is nil or missing, a future is returned that can -be inspected using `async-get', blocking until the value is -ready. Example: - - (let ((proc (async-start - ;; What to do in the child process - (lambda () - (message \"This is a test\") - (sleep-for 3) - 222)))) - - (message \"I'm going to do some work here\") ;; .... - - (message \"Waiting on async process, result should be 222: %s\" - (async-get proc))) - -If you don't want to use a callback, and you don't care about any -return value from the child process, pass the `ignore' symbol as -the second argument (if you don't, and never call `async-get', it -will leave *emacs* process buffers hanging around): - - (async-start - (lambda () - (delete-file \"a remote file on a slow link\" nil)) - 'ignore) - -Note: Even when FINISH-FUNC is present, a future is still -returned except that it yields no value (since the value is -passed to FINISH-FUNC). Call `async-get' on such a future always -returns nil. It can still be useful, however, as an argument to -`async-ready' or `async-wait'." - (let ((sexp start-func) - ;; Subordinate Emacs will send text encoded in UTF-8. - (coding-system-for-read 'utf-8-auto)) - (setq async--procvar - (async-start-process - "emacs" (file-truename - (expand-file-name invocation-name - invocation-directory)) - finish-func - async-quiet-switch "-l" - ;; Using `locate-library' ensure we use the right file - ;; when the .elc have been deleted. - (locate-library "async") - "-batch" "-f" "async-batch-invoke" - (if async-send-over-pipe - "" - (with-temp-buffer - (async--insert-sexp (list 'quote sexp)) - (buffer-string))))) - (if async-send-over-pipe - (async--transmit-sexp async--procvar (list 'quote sexp))) - async--procvar)) - -(defmacro async-sandbox(func) - "Evaluate FUNC in a separate Emacs process, synchronously." - `(async-get (async-start ,func))) - -(defun async--fold-left (fn forms bindings) - (let ((res forms)) - (dolist (binding bindings) - (setq res (funcall fn res - (if (listp binding) - binding - (list binding))))) - res)) - -(defmacro async-let (bindings &rest forms) - "Implements `let', but each binding is established asynchronously. -For example: - - (async-let ((x (foo)) - (y (bar))) - (message \"%s %s\" x y)) - - expands to ==> - - (async-start (foo) - (lambda (x) - (async-start (bar) - (lambda (y) - (message \"%s %s\" x y)))))" - (declare (indent 1)) - (async--fold-left - (lambda (acc binding) - (let ((fun (pcase (cadr binding) - ((and (pred functionp) f) f) - (f `(lambda () ,f))))) - `(async-start ,fun - (lambda (,(car binding)) - ,acc)))) - `(progn ,@forms) - (reverse bindings))) - -(provide 'async) - -;;; async.el ends here diff --git a/elpa/async-20200113.1745/async.elc b/elpa/async-20200113.1745/async.elc deleted file mode 100644 index c19fa6b3..00000000 Binary files a/elpa/async-20200113.1745/async.elc and /dev/null differ diff --git a/elpa/async-20200113.1745/dired-async.el b/elpa/async-20200113.1745/dired-async.el deleted file mode 100644 index 1dba956b..00000000 --- a/elpa/async-20200113.1745/dired-async.el +++ /dev/null @@ -1,408 +0,0 @@ -;;; dired-async.el --- Asynchronous dired actions -*- lexical-binding: t -*- - -;; Copyright (C) 2012-2016 Free Software Foundation, Inc. - -;; Authors: John Wiegley -;; Thierry Volpiatto - -;; Keywords: dired async network -;; X-URL: https://github.com/jwiegley/dired-async - -;; 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 2, 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 GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; This file provide a redefinition of `dired-create-file' function, -;; performs copies, moves and all what is handled by `dired-create-file' -;; in the background using a slave Emacs process, -;; by means of the async.el module. -;; To use it, put this in your .emacs: - -;; (dired-async-mode 1) - -;; This will enable async copy/rename etc... -;; in dired and helm. - -;;; Code: - -(require 'cl-lib) -(require 'dired-aux) -(require 'async) - -(eval-when-compile - (defvar async-callback)) - -(defgroup dired-async nil - "Copy rename files asynchronously from dired." - :group 'dired) - -(defcustom dired-async-env-variables-regexp - "\\`\\(tramp-\\(default\\|connection\\|remote\\)\\|ange-ftp\\)-.*" - "Variables matching this regexp will be loaded on Child Emacs." - :type 'regexp - :group 'dired-async) - -(defcustom dired-async-message-function 'dired-async-mode-line-message - "Function to use to notify result when operation finish. -Should take same args as `message'." - :group 'dired-async - :type 'function) - -(defcustom dired-async-log-file "/tmp/dired-async.log" - "File use to communicate errors from Child Emacs to host Emacs." - :group 'dired-async - :type 'string) - -(defcustom dired-async-mode-lighter '(:eval - (when (eq major-mode 'dired-mode) - " Async")) - "Mode line lighter used for `dired-async-mode'." - :group 'dired-async - :risky t - :type 'sexp) - -(defface dired-async-message - '((t (:foreground "yellow"))) - "Face used for mode-line message." - :group 'dired-async) - -(defface dired-async-failures - '((t (:foreground "red"))) - "Face used for mode-line message." - :group 'dired-async) - -(defface dired-async-mode-message - '((t (:foreground "Gold"))) - "Face used for `dired-async--modeline-mode' lighter." - :group 'dired-async) - -(define-minor-mode dired-async--modeline-mode - "Notify mode-line that an async process run." - :group 'dired-async - :global t - :lighter (:eval (propertize (format " [%s Async job(s) running]" - (length (dired-async-processes))) - 'face 'dired-async-mode-message)) - (unless dired-async--modeline-mode - (let ((visible-bell t)) (ding)))) - -(defun dired-async-mode-line-message (text face &rest args) - "Notify end of operation in `mode-line'." - (message nil) - (let ((mode-line-format (concat - " " (propertize - (if args - (apply #'format text args) - text) - 'face face)))) - (force-mode-line-update) - (sit-for 3) - (force-mode-line-update))) - -(defun dired-async-processes () - (cl-loop for p in (process-list) - when (cl-loop for c in (process-command p) thereis - (string= "async-batch-invoke" c)) - collect p)) - -(defun dired-async-kill-process () - (interactive) - (let* ((processes (dired-async-processes)) - (proc (car (last processes)))) - (and proc (delete-process proc)) - (unless (> (length processes) 1) - (dired-async--modeline-mode -1)))) - -(defun dired-async-after-file-create (total operation failures skipped) - "Callback function used for operation handled by `dired-create-file'." - (unless (dired-async-processes) - ;; Turn off mode-line notification - ;; only when last process end. - (dired-async--modeline-mode -1)) - (when operation - (if (file-exists-p dired-async-log-file) - (progn - (pop-to-buffer (get-buffer-create dired-log-buffer)) - (goto-char (point-max)) - (setq inhibit-read-only t) - (insert "Error: ") - (insert-file-contents dired-async-log-file) - (special-mode) - (shrink-window-if-larger-than-buffer) - (delete-file dired-async-log-file)) - (run-with-timer - 0.1 nil - (lambda () - ;; First send error messages. - (cond (failures - (funcall dired-async-message-function - "%s failed for %d of %d file%s -- See *Dired log* buffer" - 'dired-async-failures - (car operation) (length failures) - total (dired-plural-s total))) - (skipped - (funcall dired-async-message-function - "%s: %d of %d file%s skipped -- See *Dired log* buffer" - 'dired-async-failures - (car operation) (length skipped) total - (dired-plural-s total)))) - (when dired-buffers - (cl-loop for (_f . b) in dired-buffers - when (buffer-live-p b) - do (with-current-buffer b - (when (and (not (file-remote-p default-directory nil t)) - (file-exists-p default-directory)) - (revert-buffer nil t))))) - ;; Finally send the success message. - (funcall dired-async-message-function - "Asynchronous %s of %s on %s file%s done" - 'dired-async-message - (car operation) (cadr operation) - total (dired-plural-s total))))))) - -(defun dired-async-maybe-kill-ftp () - "Return a form to kill ftp process in child emacs." - (quote - (progn - (require 'cl-lib) - (let ((buf (cl-loop for b in (buffer-list) - thereis (and (string-match - "\\`\\*ftp.*" - (buffer-name b)) b)))) - (when buf (kill-buffer buf)))))) - -(defvar overwrite-query) -(defun dired-async-create-files (file-creator operation fn-list name-constructor - &optional _marker-char) - "Same as `dired-create-files' but asynchronous. - -See `dired-create-files' for the behavior of arguments." - (setq overwrite-query nil) - (let ((total (length fn-list)) - failures async-fn-list skipped callback - async-quiet-switch) - (let (to) - (dolist (from fn-list) - (setq to (funcall name-constructor from)) - (if (and (equal to from) - (null (eq file-creator 'backup-file))) - (progn - (setq to nil) - (dired-log "Cannot %s to same file: %s\n" - (downcase operation) from))) - (if (not to) - (setq skipped (cons (dired-make-relative from) skipped)) - (let* ((overwrite (and (null (eq file-creator 'backup-file)) - (file-exists-p to))) - (dired-overwrite-confirmed ; for dired-handle-overwrite - (and overwrite - (let ((help-form `(format "\ -Type SPC or `y' to overwrite file `%s', -DEL or `n' to skip to next, -ESC or `q' to not overwrite any of the remaining files, -`!' to overwrite all remaining files with no more questions." ,to))) - (dired-query 'overwrite-query "Overwrite `%s'?" to))))) - ;; Handle the `dired-copy-file' file-creator specially - ;; When copying a directory to another directory or - ;; possibly to itself or one of its subdirectories. - ;; e.g "~/foo/" => "~/test/" - ;; or "~/foo/" =>"~/foo/" - ;; or "~/foo/ => ~/foo/bar/") - ;; In this case the 'name-constructor' have set the destination - ;; TO to "~/test/foo" because the old emacs23 behavior - ;; of `copy-directory' was to not create the subdirectory - ;; and instead copy the contents. - ;; With the new behavior of `copy-directory' - ;; (similar to the `cp' shell command) we don't - ;; need such a construction of the target directory, - ;; so modify the destination TO to "~/test/" instead of "~/test/foo/". - (let ((destname (file-name-directory to))) - (when (and (file-directory-p from) - (file-directory-p to) - (eq file-creator 'dired-copy-file)) - (setq to destname)) - ;; If DESTNAME is a subdirectory of FROM, not a symlink, - ;; and the method in use is copying, signal an error. - (and (eq t (car (file-attributes destname))) - (eq file-creator 'dired-copy-file) - (file-in-directory-p destname from) - (error "Cannot copy `%s' into its subdirectory `%s'" - from to))) - (if overwrite - (or (and dired-overwrite-confirmed - (push (cons from to) async-fn-list)) - (progn - (push (dired-make-relative from) failures) - (dired-log "%s `%s' to `%s' failed\n" - operation from to))) - (push (cons from to) async-fn-list))))) - ;; Fix tramp issue #80 with emacs-26, use "-q" only when needed. - (setq async-quiet-switch - (if (and (boundp 'tramp-cache-read-persistent-data) - async-fn-list - (cl-loop for (_from . to) in async-fn-list - thereis (file-remote-p to))) - "-q" "-Q")) - ;; When failures have been printed to dired log add the date at bob. - (when (or failures skipped) (dired-log t)) - ;; When async-fn-list is empty that's mean only one file - ;; had to be copied and user finally answer NO. - ;; In this case async process will never start and callback - ;; will have no chance to run, so notify failures here. - (unless async-fn-list - (cond (failures - (funcall dired-async-message-function - "%s failed for %d of %d file%s -- See *Dired log* buffer" - 'dired-async-failures - operation (length failures) - total (dired-plural-s total))) - (skipped - (funcall dired-async-message-function - "%s: %d of %d file%s skipped -- See *Dired log* buffer" - 'dired-async-failures - operation (length skipped) total - (dired-plural-s total))))) - ;; Setup callback. - (setq callback - (lambda (&optional _ignore) - (dired-async-after-file-create - total (list operation (length async-fn-list)) failures skipped) - (when (string= (downcase operation) "rename") - (cl-loop for (file . to) in async-fn-list - for bf = (get-file-buffer file) - for destp = (file-exists-p to) - do (and bf destp - (with-current-buffer bf - (set-visited-file-name to t t)))))))) - ;; Start async process. - (when async-fn-list - (async-start `(lambda () - (require 'cl-lib) (require 'dired-aux) (require 'dired-x) - ,(async-inject-variables dired-async-env-variables-regexp) - (let ((dired-recursive-copies (quote always)) - (dired-copy-preserve-time - ,dired-copy-preserve-time)) - (setq overwrite-backup-query nil) - ;; Inline `backup-file' as long as it is not - ;; available in emacs. - (defalias 'backup-file - ;; Same feature as "cp -f --backup=numbered from to" - ;; Symlinks are copied as file from source unlike - ;; `dired-copy-file' which is same as cp -d. - ;; Directories are omitted. - (lambda (from to ok) - (cond ((file-directory-p from) (ignore)) - (t (let ((count 0)) - (while (let ((attrs (file-attributes to))) - (and attrs (null (nth 0 attrs)))) - (cl-incf count) - (setq to (concat (file-name-sans-versions to) - (format ".~%s~" count))))) - (condition-case err - (copy-file from to ok dired-copy-preserve-time) - (file-date-error - (dired-log "Can't set date on %s:\n%s\n" from err))))))) - ;; Now run the FILE-CREATOR function on files. - (cl-loop with fn = (quote ,file-creator) - for (from . dest) in (quote ,async-fn-list) - do (condition-case err - (funcall fn from dest t) - (file-error - (dired-log "%s: %s\n" (car err) (cdr err))) - nil)) - (when (get-buffer dired-log-buffer) - (dired-log t) - (with-current-buffer dired-log-buffer - (write-region (point-min) (point-max) - ,dired-async-log-file)))) - ,(dired-async-maybe-kill-ftp)) - callback) - ;; Run mode-line notifications while process running. - (dired-async--modeline-mode 1) - (message "%s proceeding asynchronously..." operation)))) - -(defvar wdired-use-interactive-rename) -(defun dired-async-wdired-do-renames (old-fn &rest args) - ;; Perhaps a better fix would be to ask for renaming BEFORE starting - ;; OLD-FN when `wdired-use-interactive-rename' is non-nil. For now - ;; just bind it to nil to ensure no questions will be asked between - ;; each rename. - (let (wdired-use-interactive-rename) - (apply old-fn args))) - -(defadvice wdired-do-renames (around wdired-async) - (let (wdired-use-interactive-rename) - ad-do-it)) - -(defadvice dired-create-files (around dired-async) - (dired-async-create-files file-creator operation fn-list - name-constructor marker-char)) - -;;;###autoload -(define-minor-mode dired-async-mode - "Do dired actions asynchronously." - :group 'dired-async - :lighter dired-async-mode-lighter - :global t - (if dired-async-mode - (if (fboundp 'advice-add) - (progn (advice-add 'dired-create-files :override #'dired-async-create-files) - (advice-add 'wdired-do-renames :around #'dired-async-wdired-do-renames)) - (ad-activate 'dired-create-files) - (ad-activate 'wdired-do-renames)) - (if (fboundp 'advice-remove) - (progn (advice-remove 'dired-create-files #'dired-async-create-files) - (advice-remove 'wdired-do-renames #'dired-async-wdired-do-renames)) - (ad-deactivate 'dired-create-files) - (ad-deactivate 'wdired-do-renames)))) - -(defmacro dired-async--with-async-create-files (&rest body) - "Evaluate BODY with â€dired-create-files’ set to â€dired-async-create-files’." - (declare (indent 0)) - `(cl-letf (((symbol-function 'dired-create-files) #'dired-async-create-files)) - ,@body)) - -;;;###autoload -(defun dired-async-do-copy (&optional arg) - "Run â€dired-do-copy’ asynchronously." - (interactive "P") - (dired-async--with-async-create-files - (dired-do-copy arg))) - -;;;###autoload -(defun dired-async-do-symlink (&optional arg) - "Run â€dired-do-symlink’ asynchronously." - (interactive "P") - (dired-async--with-async-create-files - (dired-do-symlink arg))) - -;;;###autoload -(defun dired-async-do-hardlink (&optional arg) - "Run â€dired-do-hardlink’ asynchronously." - (interactive "P") - (dired-async--with-async-create-files - (dired-do-hardlink arg))) - -;;;###autoload -(defun dired-async-do-rename (&optional arg) - "Run â€dired-do-rename’ asynchronously." - (interactive "P") - (dired-async--with-async-create-files - (dired-do-rename arg))) - -(provide 'dired-async) - -;;; dired-async.el ends here diff --git a/elpa/async-20200113.1745/dired-async.elc b/elpa/async-20200113.1745/dired-async.elc deleted file mode 100644 index 5f57380c..00000000 Binary files a/elpa/async-20200113.1745/dired-async.elc and /dev/null differ diff --git a/elpa/async-20200113.1745/smtpmail-async.el b/elpa/async-20200113.1745/smtpmail-async.el deleted file mode 100644 index ac269231..00000000 --- a/elpa/async-20200113.1745/smtpmail-async.el +++ /dev/null @@ -1,73 +0,0 @@ -;;; smtpmail-async.el --- Send e-mail with smtpmail.el asynchronously -*- lexical-binding: t -*- - -;; Copyright (C) 2012-2016 Free Software Foundation, Inc. - -;; Author: John Wiegley -;; Created: 18 Jun 2012 - -;; Keywords: email async -;; X-URL: https://github.com/jwiegley/emacs-async - -;; 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 2, 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 GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; Send e-mail with smtpmail.el asynchronously. To use: -;; -;; (require 'smtpmail-async) -;; -;; (setq send-mail-function 'async-smtpmail-send-it -;; message-send-mail-function 'async-smtpmail-send-it) -;; -;; This assumes you already have smtpmail.el working. - -;;; Code: - -(defgroup smtpmail-async nil - "Send e-mail with smtpmail.el asynchronously" - :group 'smptmail) - -(require 'async) -(require 'smtpmail) -(require 'message) - -(defvar async-smtpmail-before-send-hook nil - "Hook running in the child emacs in `async-smtpmail-send-it'. -It is called just before calling `smtpmail-send-it'.") - -(defun async-smtpmail-send-it () - (let ((to (message-field-value "To")) - (buf-content (buffer-substring-no-properties - (point-min) (point-max)))) - (message "Delivering message to %s..." to) - (async-start - `(lambda () - (require 'smtpmail) - (with-temp-buffer - (insert ,buf-content) - (set-buffer-multibyte nil) - ;; Pass in the variable environment for smtpmail - ,(async-inject-variables - "\\`\\(smtpmail\\|async-smtpmail\\|\\(user-\\)?mail\\)-\\|auth-sources\\|epg\\|nsm" - nil "\\`\\(mail-header-format-function\\|smtpmail-address-buffer\\|mail-mode-abbrev-table\\)") - (run-hooks 'async-smtpmail-before-send-hook) - (smtpmail-send-it))) - (lambda (&optional _ignore) - (message "Delivering message to %s...done" to))))) - -(provide 'smtpmail-async) - -;;; smtpmail-async.el ends here diff --git a/elpa/async-20200113.1745/smtpmail-async.elc b/elpa/async-20200113.1745/smtpmail-async.elc deleted file mode 100644 index 9eb611a1..00000000 Binary files a/elpa/async-20200113.1745/smtpmail-async.elc and /dev/null differ diff --git a/elpa/atom-one-dark-theme-readme.txt b/elpa/atom-one-dark-theme-readme.txt deleted file mode 100644 index bc3d7cb8..00000000 --- a/elpa/atom-one-dark-theme-readme.txt +++ /dev/null @@ -1 +0,0 @@ -An Emacs port of the Atom One Dark theme from Atom.io. diff --git a/elpa/avy-20200311.1106/avy-autoloads.el b/elpa/avy-20200311.1106/avy-autoloads.el deleted file mode 100644 index 28a10e8f..00000000 --- a/elpa/avy-20200311.1106/avy-autoloads.el +++ /dev/null @@ -1,272 +0,0 @@ -;;; avy-autoloads.el --- automatically extracted autoloads -;; -;;; Code: - -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) - - -;;;### (autoloads nil "avy" "avy.el" (0 0 0 0)) -;;; Generated autoloads from avy.el - -(autoload 'avy-goto-char "avy" "\ -Jump to the currently visible CHAR. -The window scope is determined by `avy-all-windows' (ARG negates it). - -\(fn CHAR &optional ARG)" t nil) - -(autoload 'avy-goto-char-in-line "avy" "\ -Jump to the currently visible CHAR in the current line. - -\(fn CHAR)" t nil) - -(autoload 'avy-goto-char-2 "avy" "\ -Jump to the currently visible CHAR1 followed by CHAR2. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched. - -\(fn CHAR1 CHAR2 &optional ARG BEG END)" t nil) - -(autoload 'avy-goto-char-2-above "avy" "\ -Jump to the currently visible CHAR1 followed by CHAR2. -This is a scoped version of `avy-goto-char-2', where the scope is -the visible part of the current buffer up to point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. - -\(fn CHAR1 CHAR2 &optional ARG)" t nil) - -(autoload 'avy-goto-char-2-below "avy" "\ -Jump to the currently visible CHAR1 followed by CHAR2. -This is a scoped version of `avy-goto-char-2', where the scope is -the visible part of the current buffer following point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. - -\(fn CHAR1 CHAR2 &optional ARG)" t nil) - -(autoload 'avy-isearch "avy" "\ -Jump to one of the current isearch candidates. - -\(fn)" t nil) - -(autoload 'avy-goto-word-0 "avy" "\ -Jump to a word start. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched. - -\(fn ARG &optional BEG END)" t nil) - -(autoload 'avy-goto-whitespace-end "avy" "\ -Jump to the end of a whitespace sequence. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched. - -\(fn ARG &optional BEG END)" t nil) - -(autoload 'avy-goto-word-1 "avy" "\ -Jump to the currently visible CHAR at a word start. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched. -When SYMBOL is non-nil, jump to symbol start instead of word start. - -\(fn CHAR &optional ARG BEG END SYMBOL)" t nil) - -(autoload 'avy-goto-word-1-above "avy" "\ -Jump to the currently visible CHAR at a word start. -This is a scoped version of `avy-goto-word-1', where the scope is -the visible part of the current buffer up to point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. - -\(fn CHAR &optional ARG)" t nil) - -(autoload 'avy-goto-word-1-below "avy" "\ -Jump to the currently visible CHAR at a word start. -This is a scoped version of `avy-goto-word-1', where the scope is -the visible part of the current buffer following point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. - -\(fn CHAR &optional ARG)" t nil) - -(autoload 'avy-goto-symbol-1 "avy" "\ -Jump to the currently visible CHAR at a symbol start. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. - -\(fn CHAR &optional ARG)" t nil) - -(autoload 'avy-goto-symbol-1-above "avy" "\ -Jump to the currently visible CHAR at a symbol start. -This is a scoped version of `avy-goto-symbol-1', where the scope is -the visible part of the current buffer up to point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. - -\(fn CHAR &optional ARG)" t nil) - -(autoload 'avy-goto-symbol-1-below "avy" "\ -Jump to the currently visible CHAR at a symbol start. -This is a scoped version of `avy-goto-symbol-1', where the scope is -the visible part of the current buffer following point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. - -\(fn CHAR &optional ARG)" t nil) - -(autoload 'avy-goto-subword-0 "avy" "\ -Jump to a word or subword start. -The window scope is determined by `avy-all-windows' (ARG negates it). - -When PREDICATE is non-nil it's a function of zero parameters that -should return true. - -BEG and END narrow the scope where candidates are searched. - -\(fn &optional ARG PREDICATE BEG END)" t nil) - -(autoload 'avy-goto-subword-1 "avy" "\ -Jump to the currently visible CHAR at a subword start. -The window scope is determined by `avy-all-windows' (ARG negates it). -The case of CHAR is ignored. - -\(fn CHAR &optional ARG)" t nil) - -(autoload 'avy-goto-word-or-subword-1 "avy" "\ -Forward to `avy-goto-subword-1' or `avy-goto-word-1'. -Which one depends on variable `subword-mode'. - -\(fn)" t nil) - -(autoload 'avy-goto-line "avy" "\ -Jump to a line start in current buffer. - -When ARG is 1, jump to lines currently visible, with the option -to cancel to `goto-line' by entering a number. - -When ARG is 4, negate the window scope determined by -`avy-all-windows'. - -Otherwise, forward to `goto-line' with ARG. - -\(fn &optional ARG)" t nil) - -(autoload 'avy-goto-line-above "avy" "\ -Goto visible line above the cursor. -OFFSET changes the distance between the closest key to the cursor and -the cursor -When BOTTOM-UP is non-nil, display avy candidates from top to bottom - -\(fn &optional OFFSET BOTTOM-UP)" t nil) - -(autoload 'avy-goto-line-below "avy" "\ -Goto visible line below the cursor. -OFFSET changes the distance between the closest key to the cursor and -the cursor -When BOTTOM-UP is non-nil, display avy candidates from top to bottom - -\(fn &optional OFFSET BOTTOM-UP)" t nil) - -(autoload 'avy-goto-end-of-line "avy" "\ -Call `avy-goto-line' and move to the end of the line. - -\(fn &optional ARG)" t nil) - -(autoload 'avy-copy-line "avy" "\ -Copy a selected line above the current line. -ARG lines can be used. - -\(fn ARG)" t nil) - -(autoload 'avy-move-line "avy" "\ -Move a selected line above the current line. -ARG lines can be used. - -\(fn ARG)" t nil) - -(autoload 'avy-copy-region "avy" "\ -Select two lines and copy the text between them to point. - -The window scope is determined by `avy-all-windows' or -`avy-all-windows-alt' when ARG is non-nil. - -\(fn ARG)" t nil) - -(autoload 'avy-move-region "avy" "\ -Select two lines and move the text between them above the current line. - -\(fn)" t nil) - -(autoload 'avy-kill-region "avy" "\ -Select two lines and kill the region between them. - -The window scope is determined by `avy-all-windows' or -`avy-all-windows-alt' when ARG is non-nil. - -\(fn ARG)" t nil) - -(autoload 'avy-kill-ring-save-region "avy" "\ -Select two lines and save the region between them to the kill ring. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. - -\(fn ARG)" t nil) - -(autoload 'avy-kill-whole-line "avy" "\ -Select line and kill the whole selected line. - -With a numerical prefix ARG, kill ARG line(s) starting from the -selected line. If ARG is negative, kill backward. - -If ARG is zero, kill the selected line but exclude the trailing -newline. - -\\[universal-argument] 3 \\[avy-kil-whole-line] kill three lines -starting from the selected line. \\[universal-argument] -3 - -\\[avy-kill-whole-line] kill three lines backward including the -selected line. - -\(fn ARG)" t nil) - -(autoload 'avy-kill-ring-save-whole-line "avy" "\ -Select line and save the whole selected line as if killed, but don’t kill it. - -This command is similar to `avy-kill-whole-line', except that it -saves the line(s) as if killed, but does not kill it(them). - -With a numerical prefix ARG, kill ARG line(s) starting from the -selected line. If ARG is negative, kill backward. - -If ARG is zero, kill the selected line but exclude the trailing -newline. - -\(fn ARG)" t nil) - -(autoload 'avy-setup-default "avy" "\ -Setup the default shortcuts. - -\(fn)" nil nil) - -(autoload 'avy-goto-char-timer "avy" "\ -Read one or many consecutive chars and jump to the first one. -The window scope is determined by `avy-all-windows' (ARG negates it). - -\(fn &optional ARG)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "avy" '("avy-"))) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; avy-autoloads.el ends here diff --git a/elpa/avy-20200311.1106/avy-pkg.el b/elpa/avy-20200311.1106/avy-pkg.el deleted file mode 100644 index 441d8fe8..00000000 --- a/elpa/avy-20200311.1106/avy-pkg.el +++ /dev/null @@ -1,2 +0,0 @@ -;;; -*- no-byte-compile: t -*- -(define-package "avy" "20200311.1106" "Jump to arbitrary positions in visible text and select text quickly." '((emacs "24.1") (cl-lib "0.5")) :commit "3bf83140fad4c28f2dc4c7107b9d8fef84d17cb9" :keywords '("point" "location") :authors '(("Oleh Krehel" . "ohwoeowho@gmail.com")) :maintainer '("Oleh Krehel" . "ohwoeowho@gmail.com") :url "https://github.com/abo-abo/avy") diff --git a/elpa/avy-20200311.1106/avy.el b/elpa/avy-20200311.1106/avy.el deleted file mode 100644 index 75c61874..00000000 --- a/elpa/avy-20200311.1106/avy.el +++ /dev/null @@ -1,2197 +0,0 @@ -;;; avy.el --- Jump to arbitrary positions in visible text and select text quickly. -*- lexical-binding: t -*- - -;; Copyright (C) 2015-2019 Free Software Foundation, Inc. - -;; Author: Oleh Krehel -;; URL: https://github.com/abo-abo/avy -;; Package-Version: 20200311.1106 -;; Version: 0.5.0 -;; Package-Requires: ((emacs "24.1") (cl-lib "0.5")) -;; Keywords: point, location - -;; This file is part of GNU Emacs. - -;; This file 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, 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. - -;; For a full copy of the GNU General Public License -;; see . - -;;; Commentary: -;; -;; With Avy, you can move point to any position in Emacs – even in a -;; different window – using very few keystrokes. For this, you look at -;; the position where you want point to be, invoke Avy, and then enter -;; the sequence of characters displayed at that position. -;; -;; If the position you want to jump to can be determined after only -;; issuing a single keystroke, point is moved to the desired position -;; immediately after that keystroke. In case this isn't possible, the -;; sequence of keystrokes you need to enter is comprised of more than -;; one character. Avy uses a decision tree where each candidate position -;; is a leaf and each edge is described by a character which is distinct -;; per level of the tree. By entering those characters, you navigate the -;; tree, quickly arriving at the desired candidate position, such that -;; Avy can move point to it. -;; -;; Note that this only makes sense for positions you are able to see -;; when invoking Avy. These kinds of positions are supported: -;; -;; * character positions -;; * word or subword start positions -;; * line beginning positions -;; * link positions -;; * window positions -;; -;; If you're familiar with the popular `ace-jump-mode' package, this -;; package does all that and more, without the implementation -;; headache. - -;;; Code: -(require 'cl-lib) -(require 'ring) - -;;* Customization -(defgroup avy nil - "Jump to things tree-style." - :group 'convenience - :prefix "avy-") - -(defcustom avy-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l) - "Default keys for jumping. -Any key is either a character representing a self-inserting -key (letters, digits, punctuation, etc.) or a symbol denoting a -non-printing key like an arrow key (left, right, up, down). For -non-printing keys, a corresponding entry in -`avy-key-to-char-alist' must exist in order to visualize the key -in the avy overlays. - -If `avy-style' is set to words, make sure there are at least three -keys different than the following: a, e, i, o, u, y" - :type '(repeat :tag "Keys" (choice - (character :tag "char") - (symbol :tag "non-printing key")))) - -(defconst avy--key-type - '(choice :tag "Command" - (const avy-goto-char) - (const avy-goto-char-2) - (const avy-isearch) - (const avy-goto-line) - (const avy-goto-subword-0) - (const avy-goto-subword-1) - (const avy-goto-word-0) - (const avy-goto-word-1) - (const avy-copy-line) - (const avy-copy-region) - (const avy-move-line) - (const avy-move-region) - (const avy-kill-whole-line) - (const avy-kill-region) - (const avy-kill-ring-save-whole-line) - (const avy-kill-ring-save-region) - (function :tag "Other command"))) - -(defcustom avy-keys-alist nil - "Alist of avy-jump commands to `avy-keys' overriding the default `avy-keys'." - :type `(alist - :key-type ,avy--key-type - :value-type (repeat :tag "Keys" character))) - -(defcustom avy-orders-alist '((avy-goto-char . avy-order-closest)) - "Alist of candidate ordering functions. -Usually, candidates appear in their point position order." - :type `(alist - :key-type ,avy--key-type - :value-type function)) - -(defcustom avy-words - '("am" "by" "if" "is" "it" "my" "ox" "up" - "ace" "act" "add" "age" "ago" "aim" "air" "ale" "all" "and" "ant" "any" - "ape" "apt" "arc" "are" "arm" "art" "ash" "ate" "awe" "axe" "bad" "bag" - "ban" "bar" "bat" "bay" "bed" "bee" "beg" "bet" "bid" "big" "bit" "bob" - "bot" "bow" "box" "boy" "but" "cab" "can" "cap" "car" "cat" "cog" "cop" - "cow" "cry" "cup" "cut" "day" "dew" "did" "die" "dig" "dim" "dip" "dog" - "dot" "dry" "dub" "dug" "dye" "ear" "eat" "eel" "egg" "ego" "elf" "eve" - "eye" "fan" "far" "fat" "fax" "fee" "few" "fin" "fit" "fix" "flu" "fly" - "foe" "fog" "for" "fox" "fry" "fun" "fur" "gag" "gap" "gas" "gel" "gem" - "get" "gig" "gin" "gnu" "god" "got" "gum" "gun" "gut" "guy" "gym" "had" - "hag" "ham" "has" "hat" "her" "hid" "him" "hip" "his" "hit" "hop" "hot" - "how" "hub" "hue" "hug" "hut" "ice" "icy" "imp" "ink" "inn" "ion" "ire" - "ivy" "jab" "jam" "jar" "jaw" "jet" "job" "jog" "joy" "key" "kid" "kit" - "lag" "lap" "lay" "let" "lid" "lie" "lip" "lit" "lob" "log" "lot" "low" - "mad" "man" "map" "mat" "may" "men" "met" "mix" "mob" "mop" "mud" "mug" - "nag" "nap" "new" "nil" "nod" "nor" "not" "now" "nun" "oak" "odd" "off" - "oil" "old" "one" "orb" "ore" "ork" "our" "out" "owl" "own" "pad" "pan" - "par" "pat" "paw" "pay" "pea" "pen" "pet" "pig" "pin" "pit" "pod" "pot" - "pry" "pub" "pun" "put" "rag" "ram" "ran" "rat" "raw" "ray" "red" "rib" - "rim" "rip" "rob" "rod" "rot" "row" "rub" "rug" "rum" "run" "sad" "sat" - "saw" "say" "sea" "see" "sew" "she" "shy" "sin" "sip" "sit" "six" "ski" - "sky" "sly" "sob" "son" "soy" "spy" "sum" "sun" "tab" "tad" "tag" "tan" - "tap" "tar" "tax" "tea" "the" "tie" "tin" "tip" "toe" "ton" "too" "top" - "toy" "try" "tub" "two" "urn" "use" "van" "war" "was" "wax" "way" "web" - "wed" "wet" "who" "why" "wig" "win" "wit" "woe" "won" "wry" "you" "zap" - "zip" "zoo") - "Words to use in case `avy-style' is set to `words'. -Every word should contain at least one vowel i.e. one of the following -characters: a, e, i, o, u, y -They do not have to be sorted but no word should be a prefix of another one." - :type '(repeat string)) - -(defcustom avy-style 'at-full - "The default method of displaying the overlays. -Use `avy-styles-alist' to customize this per-command." - :type '(choice - (const :tag "Pre" pre) - (const :tag "At" at) - (const :tag "At Full" at-full) - (const :tag "Post" post) - (const :tag "De Bruijn" de-bruijn) - (const :tag "Words" words))) - -(defcustom avy-styles-alist nil - "Alist of avy-jump commands to the style for each command. -If the commands isn't on the list, `avy-style' is used." - :type '(alist - :key-type (choice :tag "Command" - (const avy-goto-char) - (const avy-goto-char-2) - (const avy-isearch) - (const avy-goto-line) - (const avy-goto-subword-0) - (const avy-goto-subword-1) - (const avy-goto-word-0) - (const avy-goto-word-1) - (const avy-copy-line) - (const avy-copy-region) - (const avy-move-line) - (const avy-move-region) - (const avy-kill-whole-line) - (const avy-kill-region) - (const avy-kill-ring-save-whole-line) - (const avy-kill-ring-save-region) - (function :tag "Other command")) - :value-type (choice - (const :tag "Pre" pre) - (const :tag "At" at) - (const :tag "At Full" at-full) - (const :tag "Post" post) - (const :tag "De Bruijn" de-bruijn) - (const :tag "Words" words)))) - -(defcustom avy-dispatch-alist - '((?x . avy-action-kill-move) - (?X . avy-action-kill-stay) - (?t . avy-action-teleport) - (?m . avy-action-mark) - (?n . avy-action-copy) - (?y . avy-action-yank) - (?i . avy-action-ispell) - (?z . avy-action-zap-to-char)) - "List of actions for `avy-handler-default'. - -Each item is (KEY . ACTION). When KEY not on `avy-keys' is -pressed during the dispatch, ACTION is set to replace the default -`avy-action-goto' once a candidate is finally selected." - :type - '(alist - :key-type (choice (character :tag "Char")) - :value-type (choice - (const :tag "Mark" avy-action-mark) - (const :tag "Copy" avy-action-copy) - (const :tag "Kill and move point" avy-action-kill-move) - (const :tag "Kill" avy-action-kill-stay)))) - -(defcustom avy-background nil - "When non-nil, a gray background will be added during the selection." - :type 'boolean) - -(defcustom avy-all-windows t - "Determine the list of windows to consider in search of candidates." - :type - '(choice - (const :tag "All Frames" all-frames) - (const :tag "This Frame" t) - (const :tag "This Window" nil))) - -(defcustom avy-case-fold-search t - "Non-nil if searches should ignore case." - :type 'boolean) - -(defcustom avy-word-punc-regexp "[!-/:-@[-`{-~]" - "Regexp of punctuation chars that count as word starts for `avy-goto-word-1. -When nil, punctuation chars will not be matched. - -\"[!-/:-@[-`{-~]\" will match all printable punctuation chars." - :type 'regexp) - -(defcustom avy-goto-word-0-regexp "\\b\\sw" - "Regexp that determines positions for `avy-goto-word-0'." - :type '(choice - (const :tag "Default" "\\b\\sw") - (const :tag "Symbol" "\\_<\\(\\sw\\|\\s_\\)") - (const :tag "Not whitespace" "[^ \r\n\t]+") - (regexp :tag "Regex"))) - -(defcustom avy-ignored-modes '(image-mode doc-view-mode pdf-view-mode) - "List of modes to ignore when searching for candidates. -Typically, these modes don't use the text representation." - :type 'list) - -(defcustom avy-single-candidate-jump t - "In case there is only one candidate jumps directly to it." - :type 'boolean) - -(defcustom avy-del-last-char-by '(?\b ?\d) - "List of event types, i.e. key presses, that delete the last -character read. The default represents `C-h' and `DEL'. See -`event-convert-list'." - :type 'list) - -(defvar avy-ring (make-ring 20) - "Hold the window and point history.") - -(defvar avy-translate-char-function #'identity - "Function to translate user input key into another key. -For example, to make SPC do the same as ?a, use -\(lambda (c) (if (= c 32) ?a c)).") - -(defface avy-lead-face-0 - '((t (:foreground "white" :background "#4f57f9"))) - "Face used for first non-terminating leading chars.") - -(defface avy-lead-face-1 - '((t (:foreground "white" :background "gray"))) - "Face used for matched leading chars.") - -(defface avy-lead-face-2 - '((t (:foreground "white" :background "#f86bf3"))) - "Face used for leading chars.") - -(defface avy-lead-face - '((t (:foreground "white" :background "#e52b50"))) - "Face used for the leading chars.") - -(defface avy-background-face - '((t (:foreground "gray40"))) - "Face for whole window background during selection.") - -(defface avy-goto-char-timer-face - '((t (:inherit highlight))) - "Face for matches during reading chars using `avy-goto-char-timer'.") - -(defconst avy-lead-faces '(avy-lead-face - avy-lead-face-0 - avy-lead-face-2 - avy-lead-face - avy-lead-face-0 - avy-lead-face-2) - "Face sequence for `avy--overlay-at-full'.") - -(defvar avy-key-to-char-alist '((left . ?â—€) - (right . ?â–¶) - (up . ?â–˛) - (down . ?â–Ľ) - (prior . ?â–ł) - (next . ?â–˝)) - "An alist from non-character keys to printable chars used in avy overlays. -This alist must contain all keys used in `avy-keys' which are not -self-inserting keys and thus aren't read as characters.") - -;;* Internals -;;** Tree -(defmacro avy-multipop (lst n) - "Remove LST's first N elements and return them." - `(if (<= (length ,lst) ,n) - (prog1 ,lst - (setq ,lst nil)) - (prog1 ,lst - (setcdr - (nthcdr (1- ,n) (prog1 ,lst (setq ,lst (nthcdr ,n ,lst)))) - nil)))) - -(defun avy--de-bruijn (keys n) - "De Bruijn sequence for alphabet KEYS and subsequences of length N." - (let* ((k (length keys)) - (a (make-list (* n k) 0)) - sequence) - (cl-labels ((db (T p) - (if (> T n) - (if (eq (% n p) 0) - (setq sequence - (append sequence - (cl-subseq a 1 (1+ p))))) - (setf (nth T a) (nth (- T p) a)) - (db (1+ T) p) - (cl-loop for j from (1+ (nth (- T p) a)) to (1- k) do - (setf (nth T a) j) - (db (1+ T) T))))) - (db 1 1) - (mapcar (lambda (n) - (nth n keys)) - sequence)))) - -(defun avy--path-alist-1 (lst seq-len keys) - "Build a De Bruin sequence from LST. -SEQ-LEN is how many elements of KEYS it takes to identify a match." - (let ((db-seq (avy--de-bruijn keys seq-len)) - prev-pos prev-seq prev-win path-alist) - ;; The De Bruijn seq is cyclic, so append the seq-len - 1 first chars to - ;; the end. - (setq db-seq (nconc db-seq (cl-subseq db-seq 0 (1- seq-len)))) - (cl-labels ((subseq-and-pop () - (when (nth (1- seq-len) db-seq) - (prog1 (cl-subseq db-seq 0 seq-len) - (pop db-seq))))) - (while lst - (let* ((cur (car lst)) - (pos (cond - ;; ace-window has matches of the form (pos . wnd) - ((integerp (car cur)) (car cur)) - ;; avy-jump have form ((start . end) . wnd) - ((consp (car cur)) (caar cur)) - (t (error "Unexpected match representation: %s" cur)))) - (win (cdr cur)) - (path (if prev-pos - (let ((diff (if (eq win prev-win) - (- pos prev-pos) - 0))) - (when (and (> diff 0) (< diff seq-len)) - (while (and (nth (1- seq-len) db-seq) - (not - (eq 0 - (cl-search - (cl-subseq prev-seq diff) - (cl-subseq db-seq 0 seq-len))))) - (pop db-seq))) - (subseq-and-pop)) - (subseq-and-pop)))) - (if (not path) - (setq lst nil - path-alist nil) - (push (cons path (car lst)) path-alist) - (setq prev-pos pos - prev-seq path - prev-win win - lst (cdr lst)))))) - (nreverse path-alist))) - -(defun avy-order-closest (x) - (abs (- (caar x) (point)))) - -(defvar avy-command nil - "Store the current command symbol. -E.g. 'avy-goto-line or 'avy-goto-char.") - -(defun avy-tree (lst keys) - "Coerce LST into a balanced tree. -The degree of the tree is the length of KEYS. -KEYS are placed appropriately on internal nodes." - (let* ((len (length keys)) - (order-fn (cdr (assq avy-command avy-orders-alist))) - (lst (if order-fn - (cl-sort lst #'< :key order-fn) - lst))) - (cl-labels - ((rd (ls) - (let ((ln (length ls))) - (if (< ln len) - (cl-pairlis keys - (mapcar (lambda (x) (cons 'leaf x)) ls)) - (let ((ks (copy-sequence keys)) - res) - (dolist (s (avy-subdiv ln len)) - (push (cons (pop ks) - (if (eq s 1) - (cons 'leaf (pop ls)) - (rd (avy-multipop ls s)))) - res)) - (nreverse res)))))) - (rd lst)))) - -(defun avy-subdiv (n b) - "Distribute N in B terms in a balanced way." - (let* ((p (1- (floor (+ (log n b) 1e-6)))) - (x1 (expt b p)) - (x2 (* b x1)) - (delta (- n x2)) - (n2 (/ delta (- x2 x1))) - (n1 (- b n2 1))) - (append - (make-list n1 x1) - (list - (- n (* n1 x1) (* n2 x2))) - (make-list n2 x2)))) - -(defun avy-traverse (tree walker &optional recur-key) - "Traverse TREE generated by `avy-tree'. -WALKER is a function that takes KEYS and LEAF. - -RECUR-KEY is used in recursion. - -LEAF is a member of LST argument of `avy-tree'. - -KEYS is the path from the root of `avy-tree' to LEAF." - (dolist (br tree) - (let ((key (cons (car br) recur-key))) - (if (eq (cadr br) 'leaf) - (funcall walker key (cddr br)) - (avy-traverse (cdr br) walker key))))) - -(defvar avy-action nil - "Function to call at the end of select.") - -(defun avy-handler-default (char) - "The default handler for a bad CHAR." - (let (dispatch) - (cond ((setq dispatch (assoc char avy-dispatch-alist)) - (unless (eq avy-style 'words) - (setq avy-action (cdr dispatch))) - (throw 'done 'restart)) - ((memq char '(?\e ?\C-g)) - ;; exit silently - (throw 'done 'abort)) - ((eq char ??) - (avy-show-dispatch-help) - (throw 'done 'restart)) - ((mouse-event-p char) - (signal 'user-error (list "Mouse event not handled" char))) - (t - (message "No such candidate: %s, hit `C-g' to quit." - (if (characterp char) (string char) char)))))) - -(defun avy-show-dispatch-help () - "Display action shortucts in echo area." - (let ((len (length "avy-action-"))) - (message "%s" (mapconcat - (lambda (x) - (format "%s: %s" - (propertize - (char-to-string (car x)) - 'face 'aw-key-face) - (substring (symbol-name (cdr x)) len))) - avy-dispatch-alist - " ")))) - -(defvar avy-handler-function 'avy-handler-default - "A function to call for a bad `read-key' in `avy-read'.") - -(defvar avy-current-path "" - "Store the current incomplete path during `avy-read'.") - -(defun avy-mouse-event-window (char) - "If CHAR is a mouse event, return the window of the event if any or the selected window. -Return nil if not a mouse event." - (when (mouse-event-p char) - (cond ((windowp (posn-window (event-start char))) - (posn-window (event-start char))) - ((framep (posn-window (event-start char))) - (frame-selected-window (posn-window (event-start char)))) - (t (selected-window))))) - -(defun avy-read (tree display-fn cleanup-fn) - "Select a leaf from TREE using consecutive `read-key'. - -DISPLAY-FN should take CHAR and LEAF and signify that LEAFs -associated with CHAR will be selected if CHAR is pressed. This is -commonly done by adding a CHAR overlay at LEAF position. - -CLEANUP-FN should take no arguments and remove the effects of -multiple DISPLAY-FN invocations." - (catch 'done - (setq avy-current-path "") - (while tree - (let ((avy--leafs nil)) - (avy-traverse tree - (lambda (path leaf) - (push (cons path leaf) avy--leafs))) - (dolist (x avy--leafs) - (funcall display-fn (car x) (cdr x)))) - (let ((char (funcall avy-translate-char-function (read-key))) - window - branch) - (funcall cleanup-fn) - (if (setq window (avy-mouse-event-window char)) - (throw 'done (cons char window)) - (if (setq branch (assoc char tree)) - (progn - ;; Ensure avy-current-path stores the full path prior to - ;; exit so other packages can utilize its value. - (setq avy-current-path - (concat avy-current-path (string (avy--key-to-char char)))) - (if (eq (car (setq tree (cdr branch))) 'leaf) - (throw 'done (cdr tree)))) - (funcall avy-handler-function char))))))) - -(defun avy-read-de-bruijn (lst keys) - "Select from LST dispatching on KEYS." - ;; In theory, the De Bruijn sequence B(k,n) has k^n subsequences of length n - ;; (the path length) usable as paths, thus that's the lower bound. Due to - ;; partially overlapping matches, not all subsequences may be usable, so it's - ;; possible that the path-len must be incremented, e.g., if we're matching - ;; for x and a buffer contains xaxbxcx only every second subsequence is - ;; usable for the four matches. - (catch 'done - (let* ((path-len (ceiling (log (length lst) (length keys)))) - (alist (avy--path-alist-1 lst path-len keys))) - (while (not alist) - (cl-incf path-len) - (setq alist (avy--path-alist-1 lst path-len keys))) - (let* ((len (length (caar alist))) - (i 0)) - (setq avy-current-path "") - (while (< i len) - (dolist (x (reverse alist)) - (avy--overlay-at-full (reverse (car x)) (cdr x))) - (let ((char (funcall avy-translate-char-function (read-key)))) - (avy--remove-leading-chars) - (setq alist - (delq nil - (mapcar (lambda (x) - (when (eq (caar x) char) - (cons (cdr (car x)) (cdr x)))) - alist))) - (setq avy-current-path - (concat avy-current-path (string (avy--key-to-char char)))) - (cl-incf i) - (unless alist - (funcall avy-handler-function char)))) - (cdar alist))))) - -(defun avy-read-words (lst words) - "Select from LST using WORDS." - (catch 'done - (let ((num-words (length words)) - (num-entries (length lst)) - alist) - ;; If there are not enough words to cover all the candidates, - ;; we use a De Bruijn sequence to generate the remaining ones. - (when (< num-words num-entries) - (let ((keys avy-keys) - (bad-keys '(?a ?e ?i ?o ?u ?y)) - (path-len 1) - (num-remaining (- num-entries num-words)) - tmp-alist) - ;; Delete all keys which could lead to duplicates. - ;; We want at least three keys left to work with. - (dolist (x bad-keys) - (when (memq x keys) - (setq keys (delq ?a keys)))) - (when (< (length keys) 3) - (signal 'user-error - '("Please add more keys to the variable `avy-keys'."))) - ;; Generate the sequence and add the keys to the existing words. - (while (not tmp-alist) - (cl-incf path-len) - (setq tmp-alist (avy--path-alist-1 lst path-len keys))) - (while (>= (cl-decf num-remaining) 0) - (push (mapconcat 'string (caar tmp-alist) nil) (cdr (last words))) - (setq tmp-alist (cdr tmp-alist))))) - (dolist (x lst) - (push (cons (string-to-list (pop words)) x) alist)) - (setq avy-current-path "") - (while (or (> (length alist) 1) - (caar alist)) - (dolist (x (reverse alist)) - (avy--overlay-at-full (reverse (car x)) (cdr x))) - (let ((char (funcall avy-translate-char-function (read-key)))) - (avy--remove-leading-chars) - (setq alist - (delq nil - (mapcar (lambda (x) - (when (eq (caar x) char) - (cons (cdr (car x)) (cdr x)))) - alist))) - (setq avy-current-path - (concat avy-current-path (string (avy--key-to-char char)))) - (unless alist - (funcall avy-handler-function char)))) - (cdar alist)))) - -;;** Rest -(defun avy-window-list () - "Return a list of windows depending on `avy-all-windows'." - (cond ((eq avy-all-windows 'all-frames) - (cl-mapcan #'window-list (frame-list))) - - ((eq avy-all-windows t) - (window-list)) - - ((null avy-all-windows) - (list (selected-window))) - - (t - (error "Unrecognized option: %S" avy-all-windows)))) - -(defcustom avy-all-windows-alt nil - "The alternative `avy-all-windows' for use with \\[universal-argument]." - :type '(choice - (const :tag "Current window" nil) - (const :tag "All windows on the current frame" t) - (const :tag "All windows on all frames" all-frames))) - -(defmacro avy-dowindows (flip &rest body) - "Depending on FLIP and `avy-all-windows' run BODY in each or selected window." - (declare (indent 1) - (debug (form body))) - `(let ((avy-all-windows (if ,flip - avy-all-windows-alt - avy-all-windows))) - (dolist (wnd (avy-window-list)) - (with-selected-window wnd - (unless (memq major-mode avy-ignored-modes) - ,@body))))) - -(defun avy-resume () - "Stub to hold last avy command. -Commands using `avy-with' macro can be resumed." - (interactive)) - -(defmacro avy-with (command &rest body) - "Set `avy-keys' according to COMMAND and execute BODY. -Set `avy-style' according to COMMAND as well." - (declare (indent 1) - (debug (form body))) - `(let ((avy-keys (or (cdr (assq ',command avy-keys-alist)) - avy-keys)) - (avy-style (or (cdr (assq ',command avy-styles-alist)) - avy-style)) - (avy-command ',command)) - (setq avy-action nil) - (setf (symbol-function 'avy-resume) - (lambda () - (interactive) - ,@(if (eq command 'avy-goto-char-timer) - (cdr body) - body))) - ,@body)) - -(defun avy-action-goto (pt) - "Goto PT." - (let ((frame (window-frame (selected-window)))) - (unless (equal frame (selected-frame)) - (select-frame-set-input-focus frame) - (raise-frame frame)) - (goto-char pt))) - -(defun avy-forward-item () - (if (eq avy-command 'avy-goto-line) - (end-of-line) - (forward-sexp)) - (point)) - -(defun avy-action-mark (pt) - "Mark sexp at PT." - (goto-char pt) - (set-mark (point)) - (avy-forward-item)) - -(defun avy-action-copy (pt) - "Copy sexp starting on PT." - (save-excursion - (let (str) - (goto-char pt) - (avy-forward-item) - (setq str (buffer-substring pt (point))) - (kill-new str) - (message "Copied: %s" str))) - (let ((dat (ring-ref avy-ring 0))) - (select-frame-set-input-focus - (window-frame (cdr dat))) - (select-window (cdr dat)) - (goto-char (car dat)))) - -(defun avy-action-yank (pt) - "Yank sexp starting at PT at the current point." - (avy-action-copy pt) - (yank) - t) - -(defun avy-action-kill-move (pt) - "Kill sexp at PT and move there." - (goto-char pt) - (avy-forward-item) - (kill-region pt (point)) - (message "Killed: %s" (current-kill 0)) - (point)) - -(defun avy-action-kill-stay (pt) - "Kill sexp at PT." - (save-excursion - (goto-char pt) - (avy-forward-item) - (kill-region pt (point)) - (just-one-space)) - (message "Killed: %s" (current-kill 0)) - (select-window - (cdr - (ring-ref avy-ring 0))) - t) - -(defun avy-action-zap-to-char (pt) - "Kill from point up to PT." - (if (> pt (point)) - (kill-region (point) pt) - (kill-region pt (point)))) - -(defun avy-action-teleport (pt) - "Kill sexp starting on PT and yank into the current location." - (avy-action-kill-stay pt) - (select-window - (cdr - (ring-ref avy-ring 0))) - (save-excursion - (yank)) - t) - -(declare-function flyspell-correct-word-before-point "flyspell") - -(defcustom avy-flyspell-correct-function #'flyspell-correct-word-before-point - "Function called to correct word by `avy-action-ispell' when -`flyspell-mode' is enabled." - :type 'function) - -(defun avy-action-ispell (pt) - "Auto correct word at PT." - (save-excursion - (goto-char pt) - (cond - ((eq avy-command 'avy-goto-line) - (ispell-region - (line-beginning-position) - (line-end-position))) - ((bound-and-true-p flyspell-mode) - (funcall avy-flyspell-correct-function)) - ((looking-at-p "\\b") - (ispell-word)) - (t - (progn - (backward-word) - (when (looking-at-p "\\b") - (ispell-word))))))) - -(defvar avy-pre-action #'avy-pre-action-default - "Function to call before `avy-action' is called.") - -(defun avy-pre-action-default (res) - (avy-push-mark) - (when (and (consp res) - (windowp (cdr res))) - (let* ((window (cdr res)) - (frame (window-frame window))) - (unless (equal frame (selected-frame)) - (select-frame-set-input-focus frame)) - (select-window window)))) - -(defun avy--process-1 (candidates overlay-fn &optional cleanup-fn) - (let ((len (length candidates))) - (cond ((= len 0) - nil) - ((and (= len 1) avy-single-candidate-jump) - (car candidates)) - (t - (unwind-protect - (progn - (avy--make-backgrounds - (avy-window-list)) - (cond ((eq avy-style 'de-bruijn) - (avy-read-de-bruijn - candidates avy-keys)) - ((eq avy-style 'words) - (avy-read-words - candidates avy-words)) - (t - (avy-read (avy-tree candidates avy-keys) - overlay-fn - (or cleanup-fn #'avy--remove-leading-chars))))) - (avy--done)))))) - -(defvar avy-last-candidates nil - "Store the last candidate list.") - -(defun avy--last-candidates-cycle (advancer) - (let* ((avy-last-candidates - (cl-remove-if-not - (lambda (x) (equal (cdr x) (selected-window))) - avy-last-candidates)) - (min-dist - (apply #'min - (mapcar (lambda (x) (abs (- (caar x) (point)))) avy-last-candidates))) - (pos - (cl-position-if - (lambda (x) - (= (- (caar x) (point)) min-dist)) - avy-last-candidates))) - (funcall advancer pos avy-last-candidates))) - -(defun avy-prev () - "Go to the previous candidate of the last `avy-read'." - (interactive) - (avy--last-candidates-cycle - (lambda (pos lst) - (when (> pos 0) - (goto-char (caar (nth (1- pos) lst))))))) - -(defun avy-next () - "Go to the next candidate of the last `avy-read'." - (interactive) - (avy--last-candidates-cycle - (lambda (pos lst) - (when (< pos (1- (length lst))) - (goto-char (caar (nth (1+ pos) lst))))))) - -(defun avy-process (candidates &optional overlay-fn cleanup-fn) - "Select one of CANDIDATES using `avy-read'. -Use OVERLAY-FN to visualize the decision overlay. -CLEANUP-FN should take no arguments and remove the effects of -multiple OVERLAY-FN invocations." - (setq overlay-fn (or overlay-fn (avy--style-fn avy-style))) - (setq cleanup-fn (or cleanup-fn #'avy--remove-leading-chars)) - (unless (and (consp (car candidates)) - (windowp (cdar candidates))) - (setq candidates - (mapcar (lambda (x) (cons x (selected-window))) - candidates))) - (setq avy-last-candidates (copy-sequence candidates)) - (let ((original-cands (copy-sequence candidates)) - (res (avy--process-1 candidates overlay-fn cleanup-fn))) - (cond - ((null res) - (if (and (eq avy-style 'words) candidates) - (avy-process original-cands overlay-fn cleanup-fn) - (message "zero candidates") - t)) - ((eq res 'restart) - (avy-process original-cands overlay-fn cleanup-fn)) - ;; ignore exit from `avy-handler-function' - ((eq res 'exit)) - ((eq res 'abort) - nil) - (t - (funcall avy-pre-action res) - (setq res (car res)) - (funcall (or avy-action 'avy-action-goto) - (if (consp res) - (car res) - res)) - res)))) - -(define-obsolete-function-alias 'avy--process 'avy-process - "0.4.0") - -(defvar avy--overlays-back nil - "Hold overlays for when `avy-background' is t.") - -(defun avy--make-backgrounds (wnd-list) - "Create a dim background overlay for each window on WND-LIST." - (when avy-background - (setq avy--overlays-back - (mapcar (lambda (w) - (let ((ol (make-overlay - (window-start w) - (window-end w) - (window-buffer w)))) - (overlay-put ol 'face 'avy-background-face) - (overlay-put ol 'window w) - ol)) - wnd-list)))) - -(defun avy--done () - "Clean up overlays." - (mapc #'delete-overlay avy--overlays-back) - (setq avy--overlays-back nil) - (avy--remove-leading-chars)) - -(defun avy--visible-p (s) - (let ((invisible (get-char-property s 'invisible))) - (or (null invisible) - (eq t buffer-invisibility-spec) - (null (assoc invisible buffer-invisibility-spec))))) - -(defun avy--next-visible-point () - "Return the next closest point without 'invisible property." - (let ((s (point))) - (while (and (not (= (point-max) (setq s (next-char-property-change s)))) - (not (avy--visible-p s)))) - s)) - -(defun avy--next-invisible-point () - "Return the next closest point with 'invisible property." - (let ((s (point))) - (while (and (not (= (point-max) (setq s (next-char-property-change s)))) - (avy--visible-p s))) - s)) - -(defun avy--find-visible-regions (rbeg rend) - "Return a list of all visible regions between RBEG and REND." - (setq rbeg (max rbeg (point-min))) - (setq rend (min rend (point-max))) - (when (< rbeg rend) - (let (visibles beg) - (save-excursion - (save-restriction - (narrow-to-region rbeg rend) - (setq beg (goto-char (point-min))) - (while (not (= (point) (point-max))) - (goto-char (avy--next-invisible-point)) - (push (cons beg (point)) visibles) - (setq beg (goto-char (avy--next-visible-point)))) - (nreverse visibles)))))) - -(defun avy--regex-candidates (regex &optional beg end pred group) - "Return all elements that match REGEX. -Each element of the list is ((BEG . END) . WND) -When PRED is non-nil, it's a filter for matching point positions. -When GROUP is non-nil, (BEG . END) should delimit that regex group." - (setq group (or group 0)) - (let ((case-fold-search (or avy-case-fold-search - (string= regex (downcase regex)))) - candidates) - (avy-dowindows current-prefix-arg - (dolist (pair (avy--find-visible-regions - (or beg (window-start)) - (or end (window-end (selected-window) t)))) - (save-excursion - (goto-char (car pair)) - (while (re-search-forward regex (cdr pair) t) - (when (avy--visible-p (1- (point))) - (when (or (null pred) - (funcall pred)) - (push (cons - (if (numberp group) - (cons (match-beginning group) - (match-end group)) - (funcall group)) - wnd) candidates))))))) - (nreverse candidates))) - -(defvar avy--overlay-offset 0 - "The offset to apply in `avy--overlay'.") - -(defvar avy--overlays-lead nil - "Hold overlays for leading chars.") - -(defun avy--remove-leading-chars () - "Remove leading char overlays." - (mapc #'delete-overlay avy--overlays-lead) - (setq avy--overlays-lead nil)) - -(defun avy--old-str (pt wnd) - "Return a one-char string at PT in WND." - (let ((old-str (with-selected-window wnd - (buffer-substring pt (1+ pt))))) - (if avy-background - (propertize old-str 'face 'avy-background-face) - old-str))) - -(defun avy--overlay (str beg end wnd &optional compose-fn) - "Create an overlay with STR from BEG to END in WND. -COMPOSE-FN is a lambda that concatenates the old string at BEG with STR." - (let ((eob (with-selected-window wnd (point-max)))) - (when (<= beg eob) - (let* ((beg (+ beg avy--overlay-offset)) - (ol (make-overlay beg (or end (1+ beg)) (window-buffer wnd))) - (old-str (if (eq beg eob) "" (avy--old-str beg wnd))) - (os-line-prefix (get-text-property 0 'line-prefix old-str)) - (os-wrap-prefix (get-text-property 0 'wrap-prefix old-str)) - other-ol) - (when os-line-prefix - (add-text-properties 0 1 `(line-prefix ,os-line-prefix) str)) - (when os-wrap-prefix - (add-text-properties 0 1 `(wrap-prefix ,os-wrap-prefix) str)) - (when (setq other-ol (cl-find-if - (lambda (o) (overlay-get o 'goto-address)) - (overlays-at beg))) - (add-text-properties - 0 (length old-str) - `(face ,(overlay-get other-ol 'face)) old-str)) - (overlay-put ol 'window wnd) - (overlay-put ol 'category 'avy) - (overlay-put ol (if (eq beg eob) - 'after-string - 'display) - (funcall - (or compose-fn #'concat) - str old-str)) - (push ol avy--overlays-lead))))) - -(defcustom avy-highlight-first nil - "When non-nil highlight the first decision char with `avy-lead-face-0'. -Do this even when the char is terminating." - :type 'boolean) - -(defun avy--key-to-char (c) - "If C is no character, translate it using `avy-key-to-char-alist'." - (cond ((characterp c) c) - ((cdr (assoc c avy-key-to-char-alist))) - ((mouse-event-p c) c) - (t - (error "Unknown key %s" c)))) - -(defun avy-candidate-beg (leaf) - "Return the start position for LEAF." - (cond ((numberp leaf) - leaf) - ((consp (car leaf)) - (caar leaf)) - (t - (car leaf)))) - -(defun avy-candidate-end (leaf) - "Return the end position for LEAF." - (cond ((numberp leaf) - leaf) - ((consp (car leaf)) - (cdar leaf)) - (t - (car leaf)))) - -(defun avy-candidate-wnd (leaf) - "Return the window for LEAF." - (if (consp leaf) - (cdr leaf) - (selected-window))) - -(defun avy--overlay-pre (path leaf) - "Create an overlay with PATH at LEAF. -PATH is a list of keys from tree root to LEAF. -LEAF is normally ((BEG . END) . WND)." - (let* ((path (mapcar #'avy--key-to-char path)) - (str (propertize (apply #'string (reverse path)) - 'face 'avy-lead-face))) - (when (or avy-highlight-first (> (length str) 1)) - (set-text-properties 0 1 '(face avy-lead-face-0) str)) - (setq str (concat - (propertize avy-current-path - 'face 'avy-lead-face-1) - str)) - (avy--overlay - str - (avy-candidate-beg leaf) nil - (avy-candidate-wnd leaf)))) - -(defun avy--overlay-at (path leaf) - "Create an overlay with PATH at LEAF. -PATH is a list of keys from tree root to LEAF. -LEAF is normally ((BEG . END) . WND)." - (let* ((path (mapcar #'avy--key-to-char path)) - (str (propertize - (string (car (last path))) - 'face 'avy-lead-face))) - (avy--overlay - str - (avy-candidate-beg leaf) nil - (avy-candidate-wnd leaf) - (lambda (str old-str) - (cond ((string= old-str "\n") - (concat str "\n")) - ;; add padding for wide-width character - ((eq (string-width old-str) 2) - (concat str " ")) - (t - str)))))) - -(defun avy--overlay-at-full (path leaf) - "Create an overlay with PATH at LEAF. -PATH is a list of keys from tree root to LEAF. -LEAF is normally ((BEG . END) . WND)." - (let* ((path (mapcar #'avy--key-to-char path)) - (str (propertize - (apply #'string (reverse path)) - 'face 'avy-lead-face)) - (len (length path)) - (beg (avy-candidate-beg leaf)) - (wnd (cdr leaf)) - end) - (dotimes (i len) - (set-text-properties i (1+ i) - `(face ,(nth i avy-lead-faces)) - str)) - (when (eq avy-style 'de-bruijn) - (setq str (concat - (propertize avy-current-path - 'face 'avy-lead-face-1) - str)) - (setq len (length str))) - (with-selected-window wnd - (save-excursion - (goto-char beg) - (let* ((lep (if (bound-and-true-p visual-line-mode) - (save-excursion - (end-of-visual-line) - (point)) - (line-end-position))) - ;; `end-of-visual-line' is bugged sometimes - (lep (if (< lep beg) - (line-end-position) - lep)) - (len-and-str (avy--update-offset-and-str len str lep))) - (setq len (car len-and-str)) - (setq str (cdr len-and-str)) - (setq end (if (= beg lep) - (1+ beg) - (min (+ beg - (if (eq (char-after) ?\t) - 1 - len)) - lep))) - (when (and (bound-and-true-p visual-line-mode) - (> len (- end beg)) - (not (eq lep beg))) - (setq len (- end beg)) - (let ((old-str (apply #'string (reverse path)))) - (setq str - (substring - (propertize - old-str - 'face - (if (= (length old-str) 1) - 'avy-lead-face - 'avy-lead-face-0)) - 0 len))))))) - (avy--overlay - str beg end wnd - (lambda (str old-str) - (cond ((string= old-str "\n") - (concat str "\n")) - ((string= old-str "\t") - (concat str (make-string (max (- tab-width len) 0) ?\ ))) - (t - ;; add padding for wide-width character - (if (eq (string-width old-str) 2) - (concat str " ") - str))))))) - -(defun avy--overlay-post (path leaf) - "Create an overlay with PATH at LEAF. -PATH is a list of keys from tree root to LEAF. -LEAF is normally ((BEG . END) . WND)." - (let* ((path (mapcar #'avy--key-to-char path)) - (str (propertize (apply #'string (reverse path)) - 'face 'avy-lead-face))) - (when (or avy-highlight-first (> (length str) 1)) - (set-text-properties 0 1 '(face avy-lead-face-0) str)) - (setq str (concat - (propertize avy-current-path - 'face 'avy-lead-face-1) - str)) - (avy--overlay - str - (avy-candidate-end leaf) nil - (avy-candidate-wnd leaf)))) - -(defun avy--update-offset-and-str (offset str lep) - "Recalculate the length of the new overlay at point. - -OFFSET is the previous overlay length. -STR is the overlay string that we wish to add. -LEP is the line end position. - -We want to add an overlay between point and END=point+OFFSET. -When other overlays already exist between point and END, set -OFFSET to be the difference between the start of the first -overlay and point. This is equivalent to truncating our new -overlay, so that it doesn't intersect with overlays that already -exist." - (let* ((wnd (selected-window)) - (beg (point)) - (oov (delq nil - (mapcar - (lambda (o) - (and (eq (overlay-get o 'category) 'avy) - (eq (overlay-get o 'window) wnd) - (overlay-start o))) - (overlays-in beg (min (+ beg offset) lep)))))) - (when oov - (setq offset (- (apply #'min oov) beg)) - (setq str (substring str 0 offset))) - (let ((other-ov (cl-find-if - (lambda (o) - (and (eq (overlay-get o 'category) 'avy) - (eq (overlay-start o) beg) - (not (eq (overlay-get o 'window) wnd)))) - (overlays-in (point) (min (+ (point) offset) lep))))) - (when (and other-ov - (> (overlay-end other-ov) - (+ beg offset))) - (setq str (concat str (buffer-substring - (+ beg offset) - (overlay-end other-ov)))) - (setq offset (- (overlay-end other-ov) - beg)))) - (cons offset str))) - -(defun avy--style-fn (style) - "Transform STYLE symbol to a style function." - (cl-case style - (pre #'avy--overlay-pre) - (at #'avy--overlay-at) - (at-full 'avy--overlay-at-full) - (post #'avy--overlay-post) - (de-bruijn #'avy--overlay-at-full) - (words #'avy--overlay-at-full) - (ignore #'ignore) - (t (error "Unexpected style %S" style)))) - -(cl-defun avy-jump (regex &key window-flip beg end action pred group) - "Jump to REGEX. -The window scope is determined by `avy-all-windows'. -When WINDOW-FLIP is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched. -ACTION is a function that takes point position as an argument. -When PRED is non-nil, it's a filter for matching point positions. -When GROUP is non-nil, it's either a match group in REGEX, or a function -that returns a cons of match beginning and end." - (setq avy-action (or action avy-action)) - (let ((avy-all-windows - (if window-flip - (not avy-all-windows) - avy-all-windows))) - (avy-process - (avy--regex-candidates regex beg end pred group)))) - -(defun avy--generic-jump (regex window-flip &optional beg end) - "Jump to REGEX. -The window scope is determined by `avy-all-windows'. -When WINDOW-FLIP is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched." - (declare (obsolete avy-jump "0.4.0")) - (let ((avy-all-windows - (if window-flip - (not avy-all-windows) - avy-all-windows))) - (avy-process - (avy--regex-candidates regex beg end)))) - -;;* Commands -;;;###autoload -(defun avy-goto-char (char &optional arg) - "Jump to the currently visible CHAR. -The window scope is determined by `avy-all-windows' (ARG negates it)." - (interactive (list (read-char "char: " t) - current-prefix-arg)) - (avy-with avy-goto-char - (avy-jump - (if (= 13 char) - "\n" - (regexp-quote (string char))) - :window-flip arg))) - -;;;###autoload -(defun avy-goto-char-in-line (char) - "Jump to the currently visible CHAR in the current line." - (interactive (list (read-char "char: " t))) - (avy-with avy-goto-char - (avy-jump - (regexp-quote (string char)) - :beg (line-beginning-position) - :end (line-end-position)))) - -;;;###autoload -(defun avy-goto-char-2 (char1 char2 &optional arg beg end) - "Jump to the currently visible CHAR1 followed by CHAR2. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched." - (interactive (list (read-char "char 1: " t) - (read-char "char 2: " t) - current-prefix-arg - nil nil)) - (when (eq char1 ? ) - (setq char1 ?\n)) - (when (eq char2 ? ) - (setq char2 ?\n)) - (avy-with avy-goto-char-2 - (avy-jump - (regexp-quote (string char1 char2)) - :window-flip arg - :beg beg - :end end))) - -;;;###autoload -(defun avy-goto-char-2-above (char1 char2 &optional arg) - "Jump to the currently visible CHAR1 followed by CHAR2. -This is a scoped version of `avy-goto-char-2', where the scope is -the visible part of the current buffer up to point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive (list (read-char "char 1: " t) - (read-char "char 2: " t) - current-prefix-arg)) - (avy-with avy-goto-char-2-above - (avy-goto-char-2 - char1 char2 arg - (window-start) (point)))) - -;;;###autoload -(defun avy-goto-char-2-below (char1 char2 &optional arg) - "Jump to the currently visible CHAR1 followed by CHAR2. -This is a scoped version of `avy-goto-char-2', where the scope is -the visible part of the current buffer following point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive (list (read-char "char 1: " t) - (read-char "char 2: " t) - current-prefix-arg)) - (avy-with avy-goto-char-2-below - (avy-goto-char-2 - char1 char2 arg - (point) (window-end (selected-window) t)))) - -;;;###autoload -(defun avy-isearch () - "Jump to one of the current isearch candidates." - (interactive) - (avy-with avy-isearch - (let ((avy-background nil) - (avy-case-fold-search case-fold-search)) - (prog1 - (avy-process - (avy--regex-candidates (if isearch-regexp - isearch-string - (regexp-quote isearch-string)))) - (isearch-done))))) - -;;;###autoload -(defun avy-goto-word-0 (arg &optional beg end) - "Jump to a word start. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched." - (interactive "P") - (avy-with avy-goto-word-0 - (avy-jump avy-goto-word-0-regexp - :window-flip arg - :beg beg - :end end))) - -;;;###autoload -(defun avy-goto-whitespace-end (arg &optional beg end) - "Jump to the end of a whitespace sequence. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched." - (interactive "P") - (avy-with avy-goto-whitespace-end - (avy-jump "[ \t]+\\|\n[ \t]*" - :window-flip arg - :beg beg - :end end - :group (lambda () (cons (point) (1+ (point))))))) - -(defun avy-goto-word-0-above (arg) - "Jump to a word start between window start and point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive "P") - (avy-with avy-goto-word-0 - (avy-goto-word-0 arg (window-start) (point)))) - -(defun avy-goto-word-0-below (arg) - "Jump to a word start between point and window end. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive "P") - (avy-with avy-goto-word-0 - (avy-goto-word-0 arg (point) (window-end (selected-window) t)))) - -(defun avy-goto-whitespace-end-above (arg) - "Jump to the end of a whitespace sequence between point and window end. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive "P") - (avy-with avy-goto-whitespace-end - (avy-goto-whitespace-end arg (window-start) (point)))) - -(defun avy-goto-whitespace-end-below (arg) - "Jump to the end of a whitespace sequence between window start and point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive "P") - (avy-with avy-goto-whitespace-end - (avy-goto-whitespace-end arg (point) (window-end (selected-window) t)))) - -;;;###autoload -(defun avy-goto-word-1 (char &optional arg beg end symbol) - "Jump to the currently visible CHAR at a word start. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched. -When SYMBOL is non-nil, jump to symbol start instead of word start." - (interactive (list (read-char "char: " t) - current-prefix-arg)) - (avy-with avy-goto-word-1 - (let* ((str (string char)) - (regex (cond ((string= str ".") - "\\.") - ((and avy-word-punc-regexp - (string-match avy-word-punc-regexp str)) - (regexp-quote str)) - ((<= char 26) - str) - (t - (concat - (if symbol "\\_<" "\\b") - str))))) - (avy-jump regex - :window-flip arg - :beg beg - :end end)))) - -;;;###autoload -(defun avy-goto-word-1-above (char &optional arg) - "Jump to the currently visible CHAR at a word start. -This is a scoped version of `avy-goto-word-1', where the scope is -the visible part of the current buffer up to point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive (list (read-char "char: " t) - current-prefix-arg)) - (avy-with avy-goto-word-1 - (avy-goto-word-1 char arg (window-start) (point)))) - -;;;###autoload -(defun avy-goto-word-1-below (char &optional arg) - "Jump to the currently visible CHAR at a word start. -This is a scoped version of `avy-goto-word-1', where the scope is -the visible part of the current buffer following point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive (list (read-char "char: " t) - current-prefix-arg)) - (avy-with avy-goto-word-1 - (avy-goto-word-1 char arg (point) (window-end (selected-window) t)))) - -;;;###autoload -(defun avy-goto-symbol-1 (char &optional arg) - "Jump to the currently visible CHAR at a symbol start. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive (list (read-char "char: " t) - current-prefix-arg)) - (avy-with avy-goto-symbol-1 - (avy-goto-word-1 char arg nil nil t))) - -;;;###autoload -(defun avy-goto-symbol-1-above (char &optional arg) - "Jump to the currently visible CHAR at a symbol start. -This is a scoped version of `avy-goto-symbol-1', where the scope is -the visible part of the current buffer up to point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive (list (read-char "char: " t) - current-prefix-arg)) - (avy-with avy-goto-symbol-1-above - (avy-goto-word-1 char arg (window-start) (point) t))) - -;;;###autoload -(defun avy-goto-symbol-1-below (char &optional arg) - "Jump to the currently visible CHAR at a symbol start. -This is a scoped version of `avy-goto-symbol-1', where the scope is -the visible part of the current buffer following point. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive (list (read-char "char: " t) - current-prefix-arg)) - (avy-with avy-goto-symbol-1-below - (avy-goto-word-1 char arg (point) (window-end (selected-window) t) t))) - -(declare-function subword-backward "subword") -(defvar subword-backward-regexp) - -(defcustom avy-subword-extra-word-chars '(?{ ?= ?} ?* ?: ?> ?<) - "A list of characters that should temporarily match \"\\w\". -This variable is used by `avy-goto-subword-0' and `avy-goto-subword-1'." - :type '(repeat character)) - -;;;###autoload -(defun avy-goto-subword-0 (&optional arg predicate beg end) - "Jump to a word or subword start. -The window scope is determined by `avy-all-windows' (ARG negates it). - -When PREDICATE is non-nil it's a function of zero parameters that -should return true. - -BEG and END narrow the scope where candidates are searched." - (interactive "P") - (require 'subword) - (avy-with avy-goto-subword-0 - (let ((case-fold-search nil) - (subword-backward-regexp - "\\(\\(\\W\\|[[:lower:][:digit:]]\\)\\([!-/:@`~[:upper:]]+\\W*\\)\\|\\W\\w+\\)") - candidates) - (avy-dowindows arg - (let ((syn-tbl (copy-syntax-table))) - (dolist (char avy-subword-extra-word-chars) - (modify-syntax-entry char "w" syn-tbl)) - (with-syntax-table syn-tbl - (let ((ws (or beg (window-start))) - window-cands) - (save-excursion - (goto-char (or end (window-end (selected-window) t))) - (subword-backward) - (while (> (point) ws) - (when (or (null predicate) - (and predicate (funcall predicate))) - (unless (not (avy--visible-p (point))) - (push (cons (cons (point) (1+ (point))) - (selected-window)) window-cands))) - (subword-backward)) - (and (= (point) ws) - (or (null predicate) - (and predicate (funcall predicate))) - (not (get-char-property (point) 'invisible)) - (push (cons (cons (point) (1+ (point))) - (selected-window)) window-cands))) - (setq candidates (nconc candidates window-cands)))))) - (avy-process candidates)))) - -;;;###autoload -(defun avy-goto-subword-1 (char &optional arg) - "Jump to the currently visible CHAR at a subword start. -The window scope is determined by `avy-all-windows' (ARG negates it). -The case of CHAR is ignored." - (interactive (list (read-char "char: " t) - current-prefix-arg)) - (avy-with avy-goto-subword-1 - (let ((char (downcase char))) - (avy-goto-subword-0 - arg (lambda () - (and (char-after) - (eq (downcase (char-after)) char))))))) - -;;;###autoload -(defun avy-goto-word-or-subword-1 () - "Forward to `avy-goto-subword-1' or `avy-goto-word-1'. -Which one depends on variable `subword-mode'." - (interactive) - (if (bound-and-true-p subword-mode) - (call-interactively #'avy-goto-subword-1) - (call-interactively #'avy-goto-word-1))) - -(defvar visual-line-mode) - -(defcustom avy-indent-line-overlay nil - "When non-nil, `avy-goto-line' will display the line overlay next to the first non-whitespace character of each line." - :type 'boolean) - -(defun avy--line-cands (&optional arg beg end bottom-up) - "Get candidates for selecting a line. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched. -When BOTTOM-UP is non-nil, display avy candidates from top to bottom" - (let (candidates) - (avy-dowindows arg - (let ((ws (or beg (window-start)))) - (save-excursion - (save-restriction - (narrow-to-region ws (or end (window-end (selected-window) t))) - (goto-char (point-min)) - (while (< (point) (point-max)) - (when (member (get-char-property - (max (1- (point)) ws) 'invisible) '(nil org-link)) - (push (cons - (if (eq avy-style 'post) - (line-end-position) - (save-excursion - (when avy-indent-line-overlay - (skip-chars-forward " \t")) - (point))) - (selected-window)) candidates)) - (if visual-line-mode - (progn - (setq temporary-goal-column 0) - (line-move-visual 1 t)) - (forward-line 1))))))) - (if bottom-up - candidates - (nreverse candidates)))) - -(defun avy--linum-strings () - "Get strings for `avy-linum-mode'." - (let* ((lines (mapcar #'car (avy--line-cands))) - (line-tree (avy-tree lines avy-keys)) - (line-list nil)) - (avy-traverse - line-tree - (lambda (path _leaf) - (let ((str (propertize (apply #'string (reverse path)) - 'face 'avy-lead-face))) - (when (> (length str) 1) - (set-text-properties 0 1 '(face avy-lead-face-0) str)) - (push str line-list)))) - (nreverse line-list))) - -(defvar linum-available) -(defvar linum-overlays) -(defvar linum-format) -(declare-function linum--face-width "linum") - -(define-minor-mode avy-linum-mode - "Minor mode that uses avy hints for `linum-mode'." - :group 'avy - (if avy-linum-mode - (progn - (require 'linum) - (advice-add 'linum-update-window :around 'avy--linum-update-window) - (linum-mode 1)) - (advice-remove 'linum-update-window 'avy--linum-update-window) - (linum-mode -1))) - -(defun avy--linum-update-window (_ win) - "Update line numbers for the portion visible in window WIN." - (goto-char (window-start win)) - (let ((line (line-number-at-pos)) - (limit (window-end win t)) - (fmt (cond ((stringp linum-format) linum-format) - ((eq linum-format 'dynamic) - (let ((w (length (number-to-string - (count-lines (point-min) (point-max)))))) - (concat "%" (number-to-string w) "d"))))) - (width 0) - (avy-strs (when avy-linum-mode - (avy--linum-strings)))) - (run-hooks 'linum-before-numbering-hook) - ;; Create an overlay (or reuse an existing one) for each - ;; line visible in this window, if necessary. - (while (and (not (eobp)) (< (point) limit)) - (let* ((str - (cond (avy-linum-mode - (pop avy-strs)) - (fmt - (propertize (format fmt line) 'face 'linum)) - (t - (funcall linum-format line)))) - (visited (catch 'visited - (dolist (o (overlays-in (point) (point))) - (when (equal-including-properties - (overlay-get o 'linum-str) str) - (unless (memq o linum-overlays) - (push o linum-overlays)) - (setq linum-available (delq o linum-available)) - (throw 'visited t)))))) - (setq width (max width (length str))) - (unless visited - (let ((ov (if (null linum-available) - (make-overlay (point) (point)) - (move-overlay (pop linum-available) (point) (point))))) - (push ov linum-overlays) - (overlay-put ov 'before-string - (propertize " " 'display `((margin left-margin) ,str))) - (overlay-put ov 'linum-str str)))) - ;; Text may contain those nasty intangible properties, but that - ;; shouldn't prevent us from counting those lines. - (let ((inhibit-point-motion-hooks t)) - (forward-line)) - (setq line (1+ line))) - (when (display-graphic-p) - (setq width (ceiling - (/ (* width 1.0 (linum--face-width 'linum)) - (frame-char-width))))) - (set-window-margins win width (cdr (window-margins win))))) - -(defun avy--line (&optional arg beg end bottom-up) - "Select a line. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'. -BEG and END narrow the scope where candidates are searched. -When BOTTOM-UP is non-nil, display avy candidates from top to bottom" - (setq avy-action (or avy-action #'identity)) - (let ((avy-style (if avy-linum-mode - (progn - (message "Goto line:") - 'ignore) - avy-style))) - (avy-process - (avy--line-cands arg beg end bottom-up)))) - -;;;###autoload -(defun avy-goto-line (&optional arg) - "Jump to a line start in current buffer. - -When ARG is 1, jump to lines currently visible, with the option -to cancel to `goto-line' by entering a number. - -When ARG is 4, negate the window scope determined by -`avy-all-windows'. - -Otherwise, forward to `goto-line' with ARG." - (interactive "p") - (setq arg (or arg 1)) - (if (not (memq arg '(1 4))) - (progn - (goto-char (point-min)) - (forward-line (1- arg))) - (avy-with avy-goto-line - (let* ((avy-handler-old avy-handler-function) - (avy-handler-function - (lambda (char) - (if (or (< char ?0) - (> char ?9)) - (funcall avy-handler-old char) - (let ((line (read-from-minibuffer - "Goto line: " (string char)))) - (when line - (avy-push-mark) - (save-restriction - (widen) - (goto-char (point-min)) - (forward-line (1- (string-to-number line)))) - (throw 'done 'exit)))))) - (r (avy--line (eq arg 4)))) - (when (and (not (memq r '(t nil))) (eq avy-action #'identity)) - (avy-action-goto r)))))) - -;;;###autoload -(defun avy-goto-line-above (&optional offset bottom-up) - "Goto visible line above the cursor. -OFFSET changes the distance between the closest key to the cursor and -the cursor -When BOTTOM-UP is non-nil, display avy candidates from top to bottom" - (interactive) - (if offset - (setq offset (+ 2 (- offset)))) - (let* ((avy-all-windows nil) - (r (avy--line nil (window-start) - (line-beginning-position (or offset 1)) - bottom-up))) - (unless (eq r t) - (avy-action-goto r)))) - -;;;###autoload -(defun avy-goto-line-below (&optional offset bottom-up) - "Goto visible line below the cursor. -OFFSET changes the distance between the closest key to the cursor and -the cursor -When BOTTOM-UP is non-nil, display avy candidates from top to bottom" - (interactive) - (if offset - (setq offset (+ offset 1))) - (let* ((avy-all-windows nil) - (r (avy--line - nil (line-beginning-position (or offset 2)) - (window-end (selected-window) t) - bottom-up))) - (unless (eq r t) - (avy-action-goto r)))) - -(defcustom avy-line-insert-style 'above - "How to insert the newly copied/cut line." - :type '(choice - (const :tag "Above" above) - (const :tag "Below" below))) - -;;;###autoload -(defun avy-goto-end-of-line (&optional arg) - "Call `avy-goto-line' and move to the end of the line." - (interactive "p") - (avy-goto-line arg) - (end-of-line)) - -;;;###autoload -(defun avy-copy-line (arg) - "Copy a selected line above the current line. -ARG lines can be used." - (interactive "p") - (let ((initial-window (selected-window))) - (avy-with avy-copy-line - (let* ((start (avy--line)) - (str (buffer-substring-no-properties - start - (save-excursion - (goto-char start) - (move-end-of-line arg) - (point))))) - (select-window initial-window) - (cond ((eq avy-line-insert-style 'above) - (beginning-of-line) - (save-excursion - (insert str "\n"))) - ((eq avy-line-insert-style 'below) - (end-of-line) - (insert "\n" str) - (beginning-of-line)) - (t - (user-error "Unexpected `avy-line-insert-style'"))))))) - -;;;###autoload -(defun avy-move-line (arg) - "Move a selected line above the current line. -ARG lines can be used." - (interactive "p") - (let ((initial-window (selected-window))) - (avy-with avy-move-line - (let ((start (avy--line))) - (save-excursion - (goto-char start) - (kill-whole-line arg)) - (select-window initial-window) - (cond ((eq avy-line-insert-style 'above) - (beginning-of-line) - (save-excursion - (insert - (current-kill 0)))) - ((eq avy-line-insert-style 'below) - (end-of-line) - (newline) - (save-excursion - (insert (substring (current-kill 0) 0 -1)))) - (t - (user-error "Unexpected `avy-line-insert-style'"))))))) - -;;;###autoload -(defun avy-copy-region (arg) - "Select two lines and copy the text between them to point. - -The window scope is determined by `avy-all-windows' or -`avy-all-windows-alt' when ARG is non-nil." - (interactive "P") - (let ((initial-window (selected-window))) - (avy-with avy-copy-region - (let* ((beg (save-selected-window - (avy--line arg))) - (end (avy--line arg)) - (str (buffer-substring-no-properties - beg - (save-excursion - (goto-char end) - (line-end-position))))) - (select-window initial-window) - (cond ((eq avy-line-insert-style 'above) - (beginning-of-line) - (save-excursion - (insert str "\n"))) - ((eq avy-line-insert-style 'below) - (end-of-line) - (newline) - (save-excursion - (insert str))) - (t - (user-error "Unexpected `avy-line-insert-style'"))))))) - -;;;###autoload -(defun avy-move-region () - "Select two lines and move the text between them above the current line." - (interactive) - (avy-with avy-move-region - (let* ((initial-window (selected-window)) - (beg (avy--line)) - (end (avy--line)) - text) - (when (> beg end) - (cl-rotatef beg end)) - (setq end (save-excursion - (goto-char end) - (1+ (line-end-position)))) - (setq text (buffer-substring beg end)) - (move-beginning-of-line nil) - (delete-region beg end) - (select-window initial-window) - (insert text)))) - -;;;###autoload -(defun avy-kill-region (arg) - "Select two lines and kill the region between them. - -The window scope is determined by `avy-all-windows' or -`avy-all-windows-alt' when ARG is non-nil." - (interactive "P") - (let ((initial-window (selected-window))) - (avy-with avy-kill-region - (let* ((beg (save-selected-window - (list (avy--line arg) (selected-window)))) - (end (list (avy--line arg) (selected-window)))) - (cond - ((not (numberp (car beg))) - (user-error "Fail to select the beginning of region")) - ((not (numberp (car end))) - (user-error "Fail to select the end of region")) - ;; Restrict operation to same window. It's better if it can be - ;; different windows but same buffer; however, then the cloned - ;; buffers with different narrowed regions might cause problem. - ((not (equal (cdr beg) (cdr end))) - (user-error "Selected points are not in the same window")) - ((< (car beg) (car end)) - (save-excursion - (kill-region - (car beg) - (progn (goto-char (car end)) (forward-visible-line 1) (point))))) - (t - (save-excursion - (kill-region - (progn (goto-char (car beg)) (forward-visible-line 1) (point)) - (car end))))))) - (select-window initial-window))) - -;;;###autoload -(defun avy-kill-ring-save-region (arg) - "Select two lines and save the region between them to the kill ring. -The window scope is determined by `avy-all-windows'. -When ARG is non-nil, do the opposite of `avy-all-windows'." - (interactive "P") - (let ((initial-window (selected-window))) - (avy-with avy-kill-ring-save-region - (let* ((beg (save-selected-window - (list (avy--line arg) (selected-window)))) - (end (list (avy--line arg) (selected-window)))) - (cond - ((not (numberp (car beg))) - (user-error "Fail to select the beginning of region")) - ((not (numberp (car end))) - (user-error "Fail to select the end of region")) - ((not (equal (cdr beg) (cdr end))) - (user-error "Selected points are not in the same window")) - ((< (car beg) (car end)) - (save-excursion - (kill-ring-save - (car beg) - (progn (goto-char (car end)) (forward-visible-line 1) (point))))) - (t - (save-excursion - (kill-ring-save - (progn (goto-char (car beg)) (forward-visible-line 1) (point)) - (car end))))))) - (select-window initial-window))) - -;;;###autoload -(defun avy-kill-whole-line (arg) - "Select line and kill the whole selected line. - -With a numerical prefix ARG, kill ARG line(s) starting from the -selected line. If ARG is negative, kill backward. - -If ARG is zero, kill the selected line but exclude the trailing -newline. - -\\[universal-argument] 3 \\[avy-kil-whole-line] kill three lines -starting from the selected line. \\[universal-argument] -3 - -\\[avy-kill-whole-line] kill three lines backward including the -selected line." - (interactive "P") - (let ((initial-window (selected-window))) - (avy-with avy-kill-whole-line - (let* ((start (avy--line))) - (if (not (numberp start)) - (user-error "Fail to select the line to kill") - (save-excursion (goto-char start) - (kill-whole-line arg))))) - (select-window initial-window))) - -;;;###autoload -(defun avy-kill-ring-save-whole-line (arg) - "Select line and save the whole selected line as if killed, but don’t kill it. - -This command is similar to `avy-kill-whole-line', except that it -saves the line(s) as if killed, but does not kill it(them). - -With a numerical prefix ARG, kill ARG line(s) starting from the -selected line. If ARG is negative, kill backward. - -If ARG is zero, kill the selected line but exclude the trailing -newline." - (interactive "P") - (let ((initial-window (selected-window))) - (avy-with avy-kill-ring-save-whole-line - (let* ((start (avy--line))) - (if (not (numberp start)) - (user-error "Fail to select the line to kill") - (save-excursion - (let ((kill-read-only-ok t) - (buffer-read-only t)) - (goto-char start) - (kill-whole-line arg)))))) - (select-window initial-window))) - -;;;###autoload -(defun avy-setup-default () - "Setup the default shortcuts." - (eval-after-load "isearch" - '(define-key isearch-mode-map (kbd "C-'") 'avy-isearch))) - -(defcustom avy-timeout-seconds 0.5 - "How many seconds to wait for the second char." - :type 'float) - -(defcustom avy-enter-times-out t - "Whether enter exits avy-goto-char-timer early. If nil it matches newline" - :type 'boolean) - -(defun avy--read-candidates (&optional re-builder) - "Read as many chars as possible and return their occurrences. -At least one char must be read, and then repeatedly one next char -may be read if it is entered before `avy-timeout-seconds'. DEL -deletes the last char entered, and RET exits with the currently -read string immediately instead of waiting for another char for -`avy-timeout-seconds'. -The format of the result is the same as that of `avy--regex-candidates'. -This function obeys `avy-all-windows' setting. -RE-BUILDER is a function that takes a string and returns a regex. -When nil, `regexp-quote' is used. -If a group is captured, the first group is highlighted. -Otherwise, the whole regex is highlighted." - (let ((str "") - (re-builder (or re-builder #'regexp-quote)) - char break overlays regex) - (unwind-protect - (progn - (avy--make-backgrounds - (avy-window-list)) - (while (and (not break) - (setq char - (read-char (format "%d char%s: " - (length overlays) - (if (string= str "") - str - (format " (%s)" str))) - t - (and (not (string= str "")) - avy-timeout-seconds)))) - ;; Unhighlight - (dolist (ov overlays) - (delete-overlay ov)) - (setq overlays nil) - (cond - ;; Handle RET - ((= char 13) - (if avy-enter-times-out - (setq break t) - (setq str (concat str (list ?\n))))) - ;; Handle C-h, DEL - ((memq char avy-del-last-char-by) - (let ((l (length str))) - (when (>= l 1) - (setq str (substring str 0 (1- l)))))) - ;; Handle ESC - ((= char 27) - (keyboard-quit)) - (t - (setq str (concat str (list char))))) - ;; Highlight - (when (>= (length str) 1) - (let ((case-fold-search - (or avy-case-fold-search (string= str (downcase str)))) - found) - (avy-dowindows current-prefix-arg - (dolist (pair (avy--find-visible-regions - (window-start) - (window-end (selected-window) t))) - (save-excursion - (goto-char (car pair)) - (setq regex (funcall re-builder str)) - (while (re-search-forward regex (cdr pair) t) - (unless (not (avy--visible-p (1- (point)))) - (let* ((idx (if (= (length (match-data)) 4) 1 0)) - (ov (make-overlay - (match-beginning idx) (match-end idx)))) - (setq found t) - (push ov overlays) - (overlay-put - ov 'window (selected-window)) - (overlay-put - ov 'face 'avy-goto-char-timer-face))))))) - ;; No matches at all, so there's surely a typo in the input. - (unless found (beep))))) - (nreverse (mapcar (lambda (ov) - (cons (cons (overlay-start ov) - (overlay-end ov)) - (overlay-get ov 'window))) - overlays))) - (dolist (ov overlays) - (delete-overlay ov)) - (avy--done)))) - -(defvar avy--old-cands nil) - -;;;###autoload -(defun avy-goto-char-timer (&optional arg) - "Read one or many consecutive chars and jump to the first one. -The window scope is determined by `avy-all-windows' (ARG negates it)." - (interactive "P") - (let ((avy-all-windows (if arg - (not avy-all-windows) - avy-all-windows))) - (avy-with avy-goto-char-timer - (setq avy--old-cands (avy--read-candidates)) - (avy-process avy--old-cands)))) - -(defun avy-push-mark () - "Store the current point and window." - (let ((inhibit-message t)) - (ring-insert avy-ring - (cons (point) (selected-window))) - (unless (region-active-p) - (push-mark)))) - -(defun avy-pop-mark () - "Jump back to the last location of `avy-push-mark'." - (interactive) - (let (res) - (condition-case nil - (progn - (while (not (window-live-p - (cdr (setq res (ring-remove avy-ring 0)))))) - (let* ((window (cdr res)) - (frame (window-frame window))) - (when (and (frame-live-p frame) - (not (eq frame (selected-frame)))) - (select-frame-set-input-focus frame)) - (select-window window) - (goto-char (car res)))) - (error - (set-mark-command 4))))) - -;; ** Org-mode -(defvar org-reverse-note-order) -(declare-function org-refile "org") -(declare-function org-back-to-heading "org") -(declare-function org-reveal "org") - -(defvar org-after-refile-insert-hook) - -(defun avy-org-refile-as-child () - "Refile current heading as first child of heading selected with `avy.'" - ;; Inspired by `org-teleport': http://kitchingroup.cheme.cmu.edu/blog/2016/03/18/Org-teleport-headlines/ - (interactive) - (let* ((org-reverse-note-order t) - (marker (save-excursion - (avy-with avy-goto-line - (unless (eq 't (avy-jump (rx bol (1+ "*") (1+ space)))) - ;; `avy-jump' returns t when aborted with C-g. - (point-marker))))) - (filename (buffer-file-name (or (buffer-base-buffer (marker-buffer marker)) - (marker-buffer marker)))) - (rfloc (list nil filename nil marker)) - ;; Ensure the refiled heading is visible. - (org-after-refile-insert-hook (if (member 'org-reveal org-after-refile-insert-hook) - org-after-refile-insert-hook - (cons #'org-reveal org-after-refile-insert-hook)))) - (when marker - ;; Only attempt refile if avy session was not aborted. - (org-refile nil nil rfloc)))) - -(defun avy-org-goto-heading-timer (&optional arg) - "Read one or many characters and jump to matching Org headings. -The window scope is determined by `avy-all-windows' (ARG negates it)." - (interactive "P") - (let ((avy-all-windows (if arg - (not avy-all-windows) - avy-all-windows))) - (avy-with avy-goto-char-timer - (avy-process - (avy--read-candidates - (lambda (input) - (format "^\\*+ .*\\(%s\\)" input)))) - (org-back-to-heading)))) - -(provide 'avy) - -;;; avy.el ends here diff --git a/elpa/avy-20200311.1106/avy.elc b/elpa/avy-20200311.1106/avy.elc deleted file mode 100644 index 13c6a776..00000000 Binary files a/elpa/avy-20200311.1106/avy.elc and /dev/null differ diff --git a/elpa/berrys-theme-20191201.1609/berrys-theme-autoloads.el b/elpa/berrys-theme-20191201.1609/berrys-theme-autoloads.el deleted file mode 100644 index 9bcc80a1..00000000 --- a/elpa/berrys-theme-20191201.1609/berrys-theme-autoloads.el +++ /dev/null @@ -1,24 +0,0 @@ -;;; berrys-theme-autoloads.el --- automatically extracted autoloads -;; -;;; Code: - -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) - - -;;;### (autoloads nil "berrys-theme" "berrys-theme.el" (0 0 0 0)) -;;; Generated autoloads from berrys-theme.el - -(when (and (boundp 'custom-theme-load-path) load-file-name) (add-to-list 'custom-theme-load-path (file-name-as-directory (file-name-directory load-file-name)))) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "berrys-theme" '("berrys"))) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; berrys-theme-autoloads.el ends here diff --git a/elpa/berrys-theme-20191201.1609/berrys-theme-pkg.el b/elpa/berrys-theme-20191201.1609/berrys-theme-pkg.el deleted file mode 100644 index e460e5e9..00000000 --- a/elpa/berrys-theme-20191201.1609/berrys-theme-pkg.el +++ /dev/null @@ -1,2 +0,0 @@ -;;; -*- no-byte-compile: t -*- -(define-package "berrys-theme" "20191201.1609" "A light, clean and elegant theme" '((emacs "24.1")) :commit "888a14206b2fb3dc45b5273aeb05075f3e0b5f60" :authors '(("Slava Buzin" . "v8v.buzin@gmail.com")) :maintainer '("Slava Buzin" . "v8v.buzin@gmail.com") :url "https://github.com/vbuzin/berrys-theme") diff --git a/elpa/berrys-theme-20191201.1609/berrys-theme.el b/elpa/berrys-theme-20191201.1609/berrys-theme.el deleted file mode 100644 index 1e2aeac6..00000000 --- a/elpa/berrys-theme-20191201.1609/berrys-theme.el +++ /dev/null @@ -1,399 +0,0 @@ -;;; berrys-theme.el --- A light, clean and elegant theme -*- lexical-binding: t; -*- - -;; Copyright © 2019-present Slava Buzin - -;; Title: Berrys Theme -;; Project: berrys-theme -;; Version: 0.1.0 -;; Package-Version: 20191201.1609 -;; URL: https://github.com/vbuzin/berrys-theme -;; Author: Slava Buzin -;; Package-Requires: ((emacs "24.1")) -;; License: MIT - -;;; Commentary: - -;; Berrys is a 9 colorspace theme build to run in GUI mode -;; with support for some third-party syntax- and UI packages. - -;;; Code: - -(deftheme berrys "A light, clean and elegant theme") - -;;;; Colors -(let* ((class '((class color) (min-colors 89))) - (berrys00 nil) - - (berrys01 "#FAFAFA") - (berrys02 "#2C302E") - (berrys03 "#646881") - (berrys04 "#E2E3E8") - - (berrys05 "#1098F7") - (berrys06 "#B2EAFF") - - (berrys07 nil) - - (berrys08 "#00AC00") - - (berrys09 "#D89800") - - (berrys10 "#B80C09") - - (berrys-cursor berrys05) - (berrys-comment berrys03) - (berrys-string berrys03) - - (berrys-warning berrys09) - (berrys-error berrys10)) - - (custom-theme-set-faces - 'berrys - - ;;; Core - ;; ============================================================================= - ;; => Base - `(bold ((,class (:weight bold)))) - `(bold-italic ((,class (:weight bold :slant italic)))) - `(default ((,class (:foreground ,berrys02 :background ,berrys01)))) - `(error ((,class (:foreground ,berrys-error)))) - `(fixed-pitch-serif ((,class (:family unspecified)))) - `(font-lock-builtin-face ((,class (:foreground ,berrys02 :weight bold)))) - `(font-lock-comment-face ((,class (:foreground ,berrys-comment :slant italic)))) - `(font-lock-comment-delimiter-face ((,class (:foreground ,berrys-comment :slant italic)))) - `(font-lock-constant-face ((,class (:foreground ,berrys02 :weight bold)))) - `(font-lock-doc-face ((,class (:inherit (font-lock-comment-face))))) - `(font-lock-function-name-face ((,class (:foreground ,berrys02 :weight bold)))) - `(font-lock-keyword-face ((,class (:foreground ,berrys02 :weight bold)))) - `(font-lock-string-face ((,class (:foreground ,berrys-string)))) - `(font-lock-type-face ((,class (:foreground ,berrys02 :slant italic)))) - `(font-lock-variable-name-face ((,class (:foreground ,berrys02)))) - `(font-lock-warning-face ((,class (:inherit warning)))) - `(shadow ((,class (:foreground ,berrys03)))) - `(warning ((,class (:foreground ,berrys-warning)))) - - ;; => Core UI - `(cursor ((,class (:background ,berrys-cursor :inverse-video t)))) - `(custom-button ((,class (:background ,berrys05 :foreground ,berrys01)))) - `(custom-variable-tag ((,class (:foreground ,berrys02 :weight bold)))) - `(custom-visibility ((,class (:inherit link)))) - `(diff-added ((,class (:foreground ,berrys08)))) - `(diff-context ((,class (:foreground ,berrys-string)))) - `(diff-file-header ((,class (:inherit diff-header)))) - `(diff-header ((,class (:foreground ,berrys03)))) - `(diff-hunk-header ((,class (:inherit diff-header)))) - `(diff-indicator-added ((,class (:foreground ,berrys08)))) - `(diff-refine-added ((,class (:foreground ,berrys08)))) - `(diff-refine-changed ((,class (:foreground ,berrys09)))) - `(diff-refine-removed ((,class (:foreground ,berrys10)))) - `(diff-removed ((,class (:foreground ,berrys10)))) - `(dired-directory ((,class :foreground ,berrys02 :weight bold))) - `(header-line ((,class :foreground ,berrys02 :weight bold))) - `(highlight ((,class (:background ,berrys04)))) - `(hl-line ((,class (:background ,berrys04)))) - `(info-node ((,class (:foreground ,berrys05 :weight bold)))) - `(info-menu-header ((,class (:foreground ,berrys02 :weight bold)))) - `(info-menu-star ((,class (:foreground ,berrys05)))) - `(info-title-4 ((,class (:foreground ,berrys02 :weight bold)))) - `(isearch ((,class (:foreground ,berrys05 :weight bold)))) - `(isearch-fail ((,class (:foreground ,berrys01 :background ,berrys-error)))) - `(lazy-highlight ((,class (:inherit isearch)))) - `(link ((,class (:underline t)))) - `(link-visited ((,class (:underline t)))) - `(match ((,class (:inherit isearch)))) - - `(message-cited-text ((,class (:inherit font-lock-comment-face)))) - `(message-header-cc ((,class (:foreground ,berrys-string)))) - `(message-header-name ((,class (:foreground ,berrys-string)))) - `(message-header-newsgroups ((,class (:foreground ,berrys-string :slant italic :weight bold)))) - `(message-header-other ((,class (:foreground ,berrys-string)))) - `(message-header-subject ((,class (:foreground ,berrys-string)))) - `(message-header-to ((,class (:foreground ,berrys-string)))) - `(message-header-xheader ((,class (:foreground ,berrys-string)))) - `(message-mml ((,class (:foreground ,berrys-string)))) - `(message-separator ((,class (:inherit font-lock-comment-face)))) - - `(minibuffer-prompt ((,class (:foreground ,berrys02 :weight bold)))) - `(mode-line ((,class (:foreground ,berrys02 :background ,berrys04)))) - `(mode-line-buffer-id ((,class (:weight bold)))) - `(mode-line-highlight ((,class (:inherit highlight)))) - `(mode-line-inactive ((,class (:foreground ,berrys02 :background ,berrys01 :box (:color ,berrys04))))) - `(outline-1 ((,class (:foreground ,berrys02 :weight bold)))) - `(outline-2 ((,class (:inherit outline-1)))) - `(outline-3 ((,class (:inherit outline-1)))) - `(outline-4 ((,class (:inherit outline-1)))) - `(outline-5 ((,class (:inherit outline-1)))) - `(outline-6 ((,class (:inherit outline-1)))) - `(outline-7 ((,class (:inherit outline-1)))) - `(outline-8 ((,class (:inherit outline-1)))) - `(region ((,class (:background ,berrys06)))) - `(secondary-selection ((,class (:background ,berrys04 :foreground ,berrys02)))) - `(show-paren-match ((,class (:weight bold)))) - `(show-paren-mismatch ((,class (:foreground ,berrys-error :weight bold)))) - `(success ((,class (:foreground ,berrys08)))) - `(whitespace-big-indent ((,class (:foreground ,berrys01 :background ,berrys10)))) - `(whitespace-line ((,class (:background ,berrys01)))) - `(whitespace-trailing ((,class (:foreground ,berrys01 :background ,berrys10)))) - - ;;; Packages - ;; ============================================================================= - ;; => Ace jump - `(ace-jump-face-foreground ((,class (:foreground ,berrys05 :weight bold)))) - - ;; => Anzu - `(anzu-match-1 ((,class (:foreground ,berrys05 :weight bold :box (:color ,berrys05))))) - `(anzu-match-2 ((,class (:foreground ,berrys01 :background ,berrys05 :weight bold :box (:color ,berrys05))))) - `(anzu-match-3 ((,class (:foreground ,berrys01 :background ,berrys03 :weight bold :box (:color ,berrys03))))) - `(anzu-mode-line ((,class (:foreground ,berrys02 :weight bold)))) - `(anzu-mode-line-no-match ((,class (:foreground ,berrys10 :weight bold)))) - `(anzu-replace-to ((,class (:foreground ,berrys-string :weight bold)))) - - ;; => Company - `(company-echo-common ((,class (:foreground ,berrys01 :background ,berrys10)))) - `(company-scrollbar-bg ((,class (:foreground ,berrys04 :background ,berrys04)))) - `(company-scrollbar-fg ((,class (:foreground ,berrys02 :background ,berrys02)))) - `(company-template-field ((,class (:inherit region)))) - `(company-tooltip ((,class (:foreground ,berrys02 :background ,berrys04)))) - `(company-tooltip-annotation ((,class (:foreground ,berrys-string)))) - `(company-tooltip-common ((,class (:inherit company-tooltip)))) - `(company-tooltip-common-selection ((,class (:inherit company-tooltip-selection)))) - `(company-tooltip-mouse ((,class (:inherit highlight)))) - `(company-tooltip-search ((,class (:inherit isearch)))) - `(company-tooltip-search-selection ((,class (:inherit company-tooltip-search)))) - `(company-tooltip-selection ((,class (:background ,berrys06)))) - - ;; => bm - `(bm-face ((,class (:foreground ,berrys05 :background ,berrys01)))) - `(bm-fringe-face ((,class (:inherit bm-face)))) - `(bm-persistent-face ((,class (:foreground ,berrys01 :background ,berrys05)))) - `(bm-fringe-persistent-face ((,class (:inherit bm-persistent-face)))) - - ;; => Flx - `(flx-highlight-face ((,class (:foreground ,berrys05 :weight bold)))) - - ;; => Flycheck - `(flycheck-error ((,class (:underline (:style wave :color ,berrys-error))))) - `(flycheck-fringe-error ((,class (:foreground ,berrys-error :weight bold)))) - `(flycheck-fringe-info ((,class (:foreground ,berrys02 :weight bold)))) - `(flycheck-fringe-warning ((,class (:foreground ,berrys-warning :weight bold)))) - `(flycheck-info ((,class (:underline (:style wave :color ,berrys05))))) - `(flycheck-warning ((,class (:underline (:style wave :color ,berrys-warning))))) - - ;; => Gnus - `(gnus-header-content ((,class (:foreground ,berrys-string :italic t)))) - `(gnus-header-from ((,class (:foreground ,berrys-string)))) - `(gnus-header-name ((,class (:foreground ,berrys-string :weight bold)))) - `(gnus-header-subject ((,class (:foreground ,berrys-string)))) - - ;; => Haskell-mode - `(haskell-error-face ((,class (:underline (:style wave :color ,berrys-error))))) - `(haskell-hole-face ((,class (:underline (:style wave :color ,berrys05))))) - `(haskell-warning-face ((,class (:underline (:style wave :color ,berrys-warning))))) - - ;; => Helm - `(helm-M-x-key ((,class (:foreground ,berrys03 :underline t)))) - `(helm-buffer-directory ((,class (:inherit helm-buffer-file)))) - `(helm-buffer-not-saved ((,class (:foreground ,berrys03 :slant italic)))) - `(helm-buffer-process ((,class (:foreground ,berrys03)))) - `(helm-candidate-number ((,class (:weight bold)))) - `(helm-candidate-number-suspended ((,class (:foreground ,berrys03 :weight bold)))) - `(helm-ff-directory ((,class (:foreground ,berrys02 :weight bold)))) - `(helm-ff-dirs ((,class (:inherit helm-ff-file)))) - `(helm-ff-dotted-directory ((,class (:inherit helm-ff-directory)))) - `(helm-ff-dotted-symlink-directory ((,class (:inherit helm-ff-dotted-directory)))) - `(helm-ff-file ((,class (:foreground ,berrys02)))) - `(helm-ff-executable ((,class (:foreground ,berrys08)))) - `(helm-ff-invalid-symlink ((,class (:foreground ,berrys01 :background ,berrys10)))) - `(helm-ff-pipe ((,class (:foreground ,berrys09 :background ,berrys02)))) - `(helm-ff-prefix ((,class (:foreground ,berrys02 :background ,berrys06)))) - `(helm-ff-socket ((,class (:foreground ,berrys10 :box (:color ,berrys10))))) - `(helm-grep-file ((,class (:foreground ,berrys02 :weight bold)))) - `(helm-grep-finish ((,class (:foreground ,berrys08 :weight bold)))) - `(helm-grep-lineno ((,class (:foreground ,berrys03)))) - `(helm-grep-match ((,class (:inherit isearch)))) - `(helm-header ((,class (:inherit helm-source-header :background ,berrys01)))) - `(helm-header-line-left-margin ((,class (:foreground ,berrys01 :background ,berrys09)))) - `(helm-helper ((,class (:foreground ,berrys02)))) - `(helm-history-deleted ((,class (:foreground ,berrys01 :background ,berrys10)))) - `(helm-history-remote ((,class (:foreground ,berrys10)))) - `(helm-lisp-completion-info ((,class (:foreground ,berrys04 :weight bold)))) - `(helm-lisp-show-completion ((,class (:inherit isearch)))) - `(helm-locate-finish ((,class (:foreground ,berrys08)))) - `(helm-match ((,class (:foreground ,berrys05 :weight bold)))) - `(helm-match-item ((,class (:inherit isearch)))) - `(helm-moccur-buffer ((,class (:foreground ,berrys02)))) - `(helm-mode-prefix ((,class (:foreground ,berrys01 :background ,berrys06)))) - `(helm-resume-need-update ((,class (:foreground ,berrys01 :background ,berrys10)))) - `(helm-selection ((,class (:inherit highlight)))) - `(helm-selection-line ((,class (:inherit highlight)))) - `(helm-source-header ((,class (:foreground ,berrys02 :weight bold :height 1.2)))) - `(helm-separator ((,class (:foreground ,berrys02)))) - `(helm-visible-mark ((,class (:background ,berrys06)))) - `(helm-yas-key ((,class (:inherit helm-M-x-key)))) - - ;; => Ido - `(ido-indicator ((,class (:foreground ,berrys01 :background ,berrys10)))) - `(ido-only-match ((,class (:foreground ,berrys05 :weight bold)))) - `(ido-subdir ((,class (:foreground ,berrys02 :weight bold)))) - `(ido-virtual ((,class (:foreground ,berrys-string :weight bold)))) - - ;; => Indent guide - `(indent-guide-face ((,class (:foreground ,berrys-comment)))) - - ;; => Ivy - `(ivy-confirm-face ((,class (:foreground ,berrys08 :weight bold)))) - `(ivy-current-match ((,class (:inherit hl-line)))) - `(ivy-cursor ((,class (:foreground ,berrys01 :background ,berrys02)))) - `(ivy-match-required-face ((,class (:foreground ,berrys10 :weight bold)))) - `(ivy-remote ((,class (:foreground ,berrys02 :underline t)))) - `(ivy-minibuffer-match-face-2 ((,class (:foreground ,berrys05 :weight bold)))) - `(ivy-minibuffer-match-face-3 ((,class (:inherit ivy-minibuffer-match-face-2 :underline t)))) - `(ivy-minibuffer-match-face-4 ((,class (:inherit ivy-minibuffer-match-face-2 :box (:color ,berrys05))))) - - ;; => Markdown - `(markdown-code-face ((,class (:family unspecified)))) - `(markdown-header-face ((,class (:foreground ,berrys02 :weight bold)))) - `(markdown-header-face-1 ((,class (:inherit markdown-header-face :height 1.4)))) - `(markdown-header-face-2 ((,class (:inherit markdown-header-face :height 1.3)))) - `(markdown-header-face-3 ((,class (:inherit markdown-header-face :height 1.2)))) - `(markdown-header-face-4 ((,class (:inherit markdown-header-face :height 1.1)))) - `(markdown-inline-code-face ((,class (:inherit markdown-code-face)))) - `(markdown-italic-face ((,class (:inherit italic)))) - - ;; => Magit - `(magit-bisect-bad ((,class (:foreground ,berrys-error)))) - `(magit-bisect-good ((,class (:foreground ,berrys08)))) - `(magit-bisect-skip ((,class (:foreground ,berrys09)))) - `(magit-blame-highlight ((,class (:foreground ,berrys03 :background ,berrys04)))) - `(magit-branch-local ((,class (:foreground ,berrys05)))) - `(magit-branch-remote ((,class (:foreground ,berrys08)))) - `(magit-reflog-checkout ((,class (:foreground ,berrys05)))) - `(magit-diff-base ((,class (:foreground ,berrys09)))) - `(magit-diff-base-highlight ((,class (:inherit magit-diff-base)))) - `(magit-diff-context ((,class (:foreground ,berrys-string)))) - `(magit-diff-context-highlight ((,class (:inherit magit-diff-context)))) - `(magit-diff-added ((,class (:foreground ,berrys08)))) - `(magit-diff-added-highlight ((,class (:inherit magit-diff-added)))) - `(magit-diff-file-heading ((,class (:foreground ,berrys-string)))) - `(magit-diff-file-heading-selection ((,class (:inherit magit-diff-file-heading)))) - `(magit-diff-hunk-heading ((,class (:foreground ,berrys03)))) - `(magit-diff-hunk-heading-highlight ((,class (:inherit magit-diff-hunk-heading)))) - `(magit-diff-hunk-heading-selection ((,class (:inherit magit-diff-hunk-heading)))) - `(magit-diff-lines-boundary((,class (:inherit unspecified)))) - `(magit-diff-lines-heading ((,class (:inherit unspecified)))) - `(magit-diff-our-highlight ((,class (:inherit magit-diff-removed)))) - `(magit-diff-removed ((,class (:foreground ,berrys10)))) - `(magit-diff-removed-highlight ((,class (:inherit magit-diff-removed)))) - `(magit-diffstat-added ((,class (:foreground ,berrys08)))) - `(magit-diffstat-removed ((,class (:foreground ,berrys10)))) - `(magit-diff-their-highlight ((,class (:inherit magit-diff-added)))) - `(magit-diff-whitespace-warning ((,class (:foreground ,berrys01 :background ,berrys10)))) - `(magit-log-author ((,class (:foreground ,berrys02)))) - `(magit-log-date ((,class (:foreground ,berrys-comment)))) - `(magit-log-graph ((,class (:foreground ,berrys-comment)))) - `(magit-hash ((,class (:foreground ,berrys-comment)))) - `(magit-header-line ((,class (:foreground ,berrys-string)))) - `(magit-header-line-log-select ((,class (:foreground ,berrys02)))) - `(magit-process-ok ((,class (:foreground ,berrys08)))) - `(magit-reflog-cherry-pick ((,class (:foreground ,berrys08)))) - `(magit-reflog-commit ((,class (:foreground ,berrys08)))) - `(magit-reflog-merge ((,class (:foreground ,berrys08)))) - `(magit-reflog-reset ((,class (:foreground ,berrys10)))) - `(magit-refname ((,class (:foreground ,berrys-comment)))) - `(magit-section-heading ((,class (:foreground ,berrys02)))) - `(magit-section-heading-selection ((,class (:inherit magit-section-heading)))) - `(magit-section-highlight ((,class (:inherit unspecified)))) - `(magit-section-secondary-heading ((,class (:foreground ,berrys02)))) - `(magit-signature-bad ((,class (:foreground ,berrys-error)))) - `(magit-signature-error ((,class (:foreground ,berrys-error)))) - `(magit-signature-expired ((,class (:foreground ,berrys-warning)))) - `(magit-signature-expired-key ((,class (:inherit magit-signature-expired)))) - `(magit-signature-good ((,class (:foreground ,berrys08)))) - `(magit-signature-revoked ((,class (:foreground ,berrys10)))) - `(magit-signature-untrusted ((,class (:foreground ,berrys10)))) - `(magit-tag ((,class (:foreground ,berrys05)))) - - ;; => Mu4e - `(mu4e-attach-number-face ((,class (:foreground ,berrys05)))) - `(mu4e-contact-face ((,class (:foreground ,berrys-string :slant italic)))) - `(mu4e-context-face ((,class (:foreground ,berrys-string)))) - `(mu4e-flagged-face ((,class (:foreground ,berrys09)))) - `(mu4e-header-face ((,class (:foreground ,berrys02)))) - `(mu4e-header-highlight-face ((,class (:inherit highlight)))) - `(mu4e-header-key-face ((,class (:foreground ,berrys-string :weight bold)))) - `(mu4e-header-marks-face ((,class (:foreground ,berrys05 :weight bold)))) - `(mu4e-header-value-face ((,class (:foreground ,berrys-string :slant italic)))) - `(mu4e-highlight-face ((,class (:foreground ,berrys05)))) - `(mu4e-special-header-value-face ((,class (:foreground ,berrys-string :slant italic)))) - `(mu4e-region-code ((,class (:box (:color ,berrys05))))) - `(mu4e-replied-face ((,class :slant italic))) - `(mu4e-url-number-face ((,class (:foreground ,berrys05)))) - - ;; => Org mode - `(org-agenda-date ((,class (:foreground ,berrys02)))) - `(org-agenda-diary ((,class (:foreground ,berrys-string :slant italic)))) - `(org-agenda-dimmed-todo-face ((,class (:foreground ,berrys-comment :slant italic)))) - `(org-agenda-done ((,class (:foreground ,berrys-string :slant italic :strike-through t)))) - `(org-agenda-restriction-lock ((,class (:background ,berrys04)))) - `(org-agenda-structure ((,class (:foreground ,berrys02 :weight bold :height 1.2)))) - `(org-block ((,class (:inherit berrys02)))) - `(org-clock-overlay ((,class (:inherit secondary-selection)))) - `(org-column ((,class (:foreground ,berrys-string :slant normal)))) - `(org-column-title ((,class (:foreground ,berrys02 :weight bold)))) - `(org-date ((,class (:foreground ,berrys02 :slant italic)))) - `(org-date-selected ((,class (:foreground ,berrys05 :weight bold)))) - `(org-document-info ((,class (:foreground ,berrys03)))) - `(org-document-title ((,class (:foreground ,berrys03 :weight bold)))) - `(org-done ((,class(:inherit org-level-1 :foreground ,berrys08)))) - `(org-ellipsis ((,class (:inherit unspecified)))) - `(org-footnote ((,class (:foreground ,berrys02 :underline t)))) - `(org-formula ((,class (:foreground ,berrys-string)))) - `(org-headline-done ((,class (:inherit org-level-1 :strike-through t)))) - `(org-latex-and-related ((,class (:foreground ,berrys-string)))) - `(org-level-1 ((,class (:foreground ,berrys02 :weight bold)))) - `(org-level-2 ((,class (:inherit org-level-1)))) - `(org-level-3 ((,class (:inherit org-level-1)))) - `(org-level-4 ((,class (:inherit org-level-1)))) - `(org-level-5 ((,class (:inherit org-level-1)))) - `(org-level-6 ((,class (:inherit org-level-1)))) - `(org-level-7 ((,class (:inherit org-level-1)))) - `(org-level-8 ((,class (:inherit org-level-1)))) - `(org-link ((,class (:inherit unspecified :underline t)))) - `(org-mode-line-clock ((,class (:inherit mode-line)))) - `(org-mode-line-clock-overrun ((,class (:foreground ,berrys09)))) - `(org-priority ((,class(:inherit org-level-1 :foreground ,berrys05)))) - `(org-scheduled ((,class (:foreground ,berrys02 :slant italic)))) - `(org-scheduled-previously ((,class (:foreground ,berrys10 :slant italic)))) - `(org-scheduled-today ((,class (:inherit org-scheduled)))) - `(org-sexp-date ((,class (:foreground ,berrys-string :slant italic)))) - `(org-special-keyword ((,class (:foreground ,berrys-string)))) - `(org-table ((,class (:foreground ,berrys02)))) - `(org-tag ((,class(:inherit org-level-1 :foreground ,berrys05)))) - `(org-time-grid ((,class (:foreground ,berrys-string :slant italic)))) - `(org-todo ((,class (:inherit org-level-1 :foreground ,berrys05)))) - `(org-upcoming-deadline ((,class (:foreground ,berrys09 :slant italic)))) - `(org-warning ((,class (:foreground ,berrys09 :slant italic)))) - `(org-verbatim ((,class (:inherit default)))) - - ;; Org Pomodoro - `(org-pomodoro-mode-line ((,class (:foreground ,berrys05 :weight bold)))) - `(org-pomodoro-mode-line-break ((,class (:foreground ,berrys08 :weight bold)))) - `(org-pomodoro-mode-line-overtime ((,class (:foreground ,berrys-error :weight bold)))) - - ;; => Which key - `(which-key-key-face ((,class (:foreground ,berrys05 :weight bold)))))) - -;;;###autoload -(when (and (boundp 'custom-theme-load-path) load-file-name) - (add-to-list 'custom-theme-load-path - (file-name-as-directory (file-name-directory load-file-name)))) - -(provide-theme 'berrys) -(provide 'berrys-theme) - -;; Local Variables: -;; no-byte-compile: t -;; indent-tabs-mode: nil -;; End: - -;;; berrys-theme.el ends here diff --git a/elpa/company-20200324.2145/company-abbrev.el b/elpa/company-20200324.2145/company-abbrev.el deleted file mode 100644 index 24ec3b77..00000000 --- a/elpa/company-20200324.2145/company-abbrev.el +++ /dev/null @@ -1,50 +0,0 @@ -;;; company-abbrev.el --- company-mode completion backend for abbrev - -;; Copyright (C) 2009-2011, 2015 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs 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. - -;; GNU Emacs 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 GNU Emacs. If not, see . - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'cl-lib) -(require 'abbrev) - -(defun company-abbrev-insert (match) - "Replace MATCH with the expanded abbrev." - (expand-abbrev)) - -;;;###autoload -(defun company-abbrev (command &optional arg &rest ignored) - "`company-mode' completion backend for abbrev." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-abbrev - 'company-abbrev-insert)) - (prefix (company-grab-symbol)) - (candidates (nconc - (delete "" (all-completions arg global-abbrev-table)) - (delete "" (all-completions arg local-abbrev-table)))) - (meta (abbrev-expansion arg)))) - -(provide 'company-abbrev) -;;; company-abbrev.el ends here diff --git a/elpa/company-20200324.2145/company-abbrev.elc b/elpa/company-20200324.2145/company-abbrev.elc deleted file mode 100644 index bf5377ac..00000000 Binary files a/elpa/company-20200324.2145/company-abbrev.elc and /dev/null differ diff --git a/elpa/company-20200324.2145/company-autoloads.el b/elpa/company-20200324.2145/company-autoloads.el deleted file mode 100644 index c440326a..00000000 --- a/elpa/company-20200324.2145/company-autoloads.el +++ /dev/null @@ -1,383 +0,0 @@ -;;; company-autoloads.el --- automatically extracted autoloads -;; -;;; Code: - -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) - - -;;;### (autoloads nil "company" "company.el" (0 0 0 0)) -;;; Generated autoloads from company.el - -(autoload 'company-mode "company" "\ -\"complete anything\"; is an in-buffer completion framework. -Completion starts automatically, depending on the values -`company-idle-delay' and `company-minimum-prefix-length'. - -Completion can be controlled with the commands: -`company-complete-common', `company-complete-selection', `company-complete', -`company-select-next', `company-select-previous'. If these commands are -called before `company-idle-delay', completion will also start. - -Completions can be searched with `company-search-candidates' or -`company-filter-candidates'. These can be used while completion is -inactive, as well. - -The completion data is retrieved using `company-backends' and displayed -using `company-frontends'. If you want to start a specific backend, call -it interactively or use `company-begin-backend'. - -By default, the completions list is sorted alphabetically, unless the -backend chooses otherwise, or `company-transformers' changes it later. - -regular keymap (`company-mode-map'): - -\\{company-mode-map} -keymap during active completions (`company-active-map'): - -\\{company-active-map} - -\(fn &optional ARG)" t nil) - -(defvar global-company-mode nil "\ -Non-nil if Global Company mode is enabled. -See the `global-company-mode' command -for a description of this minor mode. -Setting this variable directly does not take effect; -either customize it (see the info node `Easy Customization') -or call the function `global-company-mode'.") - -(custom-autoload 'global-company-mode "company" nil) - -(autoload 'global-company-mode "company" "\ -Toggle Company mode in all buffers. -With prefix ARG, enable Global Company mode if ARG is positive; -otherwise, disable it. If called from Lisp, enable the mode if -ARG is omitted or nil. - -Company mode is enabled in all buffers where -`company-mode-on' would do it. -See `company-mode' for more information on Company mode. - -\(fn &optional ARG)" t nil) - -(autoload 'company-manual-begin "company" "\ - - -\(fn)" t nil) - -(autoload 'company-complete "company" "\ -Insert the common part of all candidates or the current selection. -The first time this is called, the common part is inserted, the second -time, or when the selection has been changed, the selected candidate is -inserted. - -\(fn)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company" '("company-"))) - -;;;*** - -;;;### (autoloads nil "company-abbrev" "company-abbrev.el" (0 0 0 -;;;;;; 0)) -;;; Generated autoloads from company-abbrev.el - -(autoload 'company-abbrev "company-abbrev" "\ -`company-mode' completion backend for abbrev. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-abbrev" '("company-abbrev-insert"))) - -;;;*** - -;;;### (autoloads nil "company-bbdb" "company-bbdb.el" (0 0 0 0)) -;;; Generated autoloads from company-bbdb.el - -(autoload 'company-bbdb "company-bbdb" "\ -`company-mode' completion backend for BBDB. - -\(fn COMMAND &optional ARG &rest IGNORE)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-bbdb" '("company-bbdb-"))) - -;;;*** - -;;;### (autoloads nil "company-capf" "company-capf.el" (0 0 0 0)) -;;; Generated autoloads from company-capf.el - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-capf" '("company-"))) - -;;;*** - -;;;### (autoloads nil "company-clang" "company-clang.el" (0 0 0 0)) -;;; Generated autoloads from company-clang.el - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-clang" '("company-clang"))) - -;;;*** - -;;;### (autoloads nil "company-cmake" "company-cmake.el" (0 0 0 0)) -;;; Generated autoloads from company-cmake.el - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-cmake" '("company-cmake"))) - -;;;*** - -;;;### (autoloads nil "company-css" "company-css.el" (0 0 0 0)) -;;; Generated autoloads from company-css.el - -(autoload 'company-css "company-css" "\ -`company-mode' completion backend for `css-mode'. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-css" '("company-css-"))) - -;;;*** - -;;;### (autoloads nil "company-dabbrev" "company-dabbrev.el" (0 0 -;;;;;; 0 0)) -;;; Generated autoloads from company-dabbrev.el - -(autoload 'company-dabbrev "company-dabbrev" "\ -dabbrev-like `company-mode' completion backend. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-dabbrev" '("company-dabbrev-"))) - -;;;*** - -;;;### (autoloads nil "company-dabbrev-code" "company-dabbrev-code.el" -;;;;;; (0 0 0 0)) -;;; Generated autoloads from company-dabbrev-code.el - -(autoload 'company-dabbrev-code "company-dabbrev-code" "\ -dabbrev-like `company-mode' backend for code. -The backend looks for all symbols in the current buffer that aren't in -comments or strings. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-dabbrev-code" '("company-dabbrev-code-"))) - -;;;*** - -;;;### (autoloads nil "company-eclim" "company-eclim.el" (0 0 0 0)) -;;; Generated autoloads from company-eclim.el - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-eclim" '("company-eclim"))) - -;;;*** - -;;;### (autoloads nil "company-elisp" "company-elisp.el" (0 0 0 0)) -;;; Generated autoloads from company-elisp.el - -(autoload 'company-elisp "company-elisp" "\ -`company-mode' completion backend for Emacs Lisp. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-elisp" '("company-elisp-"))) - -;;;*** - -;;;### (autoloads nil "company-etags" "company-etags.el" (0 0 0 0)) -;;; Generated autoloads from company-etags.el - -(autoload 'company-etags "company-etags" "\ -`company-mode' completion backend for etags. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-etags" '("company-etags-"))) - -;;;*** - -;;;### (autoloads nil "company-files" "company-files.el" (0 0 0 0)) -;;; Generated autoloads from company-files.el - -(autoload 'company-files "company-files" "\ -`company-mode' completion backend existing file names. -Completions works for proper absolute and relative files paths. -File paths with spaces are only supported inside strings. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-files" '("company-file"))) - -;;;*** - -;;;### (autoloads nil "company-gtags" "company-gtags.el" (0 0 0 0)) -;;; Generated autoloads from company-gtags.el - -(autoload 'company-gtags "company-gtags" "\ -`company-mode' completion backend for GNU Global. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-gtags" '("company-gtags-"))) - -;;;*** - -;;;### (autoloads nil "company-ispell" "company-ispell.el" (0 0 0 -;;;;;; 0)) -;;; Generated autoloads from company-ispell.el - -(autoload 'company-ispell "company-ispell" "\ -`company-mode' completion backend using Ispell. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-ispell" '("company-ispell-"))) - -;;;*** - -;;;### (autoloads nil "company-keywords" "company-keywords.el" (0 -;;;;;; 0 0 0)) -;;; Generated autoloads from company-keywords.el - -(autoload 'company-keywords "company-keywords" "\ -`company-mode' backend for programming language keywords. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-keywords" '("company-keywords-"))) - -;;;*** - -;;;### (autoloads nil "company-nxml" "company-nxml.el" (0 0 0 0)) -;;; Generated autoloads from company-nxml.el - -(autoload 'company-nxml "company-nxml" "\ -`company-mode' completion backend for `nxml-mode'. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-nxml" '("company-nxml-"))) - -;;;*** - -;;;### (autoloads nil "company-oddmuse" "company-oddmuse.el" (0 0 -;;;;;; 0 0)) -;;; Generated autoloads from company-oddmuse.el - -(autoload 'company-oddmuse "company-oddmuse" "\ -`company-mode' completion backend for `oddmuse-mode'. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-oddmuse" '("company-oddmuse-"))) - -;;;*** - -;;;### (autoloads nil "company-semantic" "company-semantic.el" (0 -;;;;;; 0 0 0)) -;;; Generated autoloads from company-semantic.el - -(autoload 'company-semantic "company-semantic" "\ -`company-mode' completion backend using CEDET Semantic. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-semantic" '("company-semantic-"))) - -;;;*** - -;;;### (autoloads nil "company-template" "company-template.el" (0 -;;;;;; 0 0 0)) -;;; Generated autoloads from company-template.el - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-template" '("company-template-"))) - -;;;*** - -;;;### (autoloads nil "company-tempo" "company-tempo.el" (0 0 0 0)) -;;; Generated autoloads from company-tempo.el - -(autoload 'company-tempo "company-tempo" "\ -`company-mode' completion backend for tempo. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-tempo" '("company-tempo-"))) - -;;;*** - -;;;### (autoloads nil "company-tng" "company-tng.el" (0 0 0 0)) -;;; Generated autoloads from company-tng.el - -(autoload 'company-tng-frontend "company-tng" "\ -When the user changes the selection at least once, this -frontend will display the candidate in the buffer as if it's -already there and any key outside of `company-active-map' will -confirm the selection and finish the completion. - -\(fn COMMAND)" nil nil) - -(autoload 'company-tng-configure-default "company-tng" "\ -Applies the default configuration to enable company-tng. - -\(fn)" nil nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-tng" '("company-tng--"))) - -;;;*** - -;;;### (autoloads nil "company-xcode" "company-xcode.el" (0 0 0 0)) -;;; Generated autoloads from company-xcode.el - -(autoload 'company-xcode "company-xcode" "\ -`company-mode' completion backend for Xcode projects. - -\(fn COMMAND &optional ARG &rest IGNORED)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-xcode" '("company-xcode-"))) - -;;;*** - -;;;### (autoloads nil "company-yasnippet" "company-yasnippet.el" -;;;;;; (0 0 0 0)) -;;; Generated autoloads from company-yasnippet.el - -(autoload 'company-yasnippet "company-yasnippet" "\ -`company-mode' backend for `yasnippet'. - -This backend should be used with care, because as long as there are -snippets defined for the current major mode, this backend will always -shadow backends that come after it. Recommended usages: - -* In a buffer-local value of `company-backends', grouped with a backend or - several that provide actual text completions. - - (add-hook 'js-mode-hook - (lambda () - (set (make-local-variable 'company-backends) - '((company-dabbrev-code company-yasnippet))))) - -* After keyword `:with', grouped with other backends. - - (push '(company-semantic :with company-yasnippet) company-backends) - -* Not in `company-backends', just bound to a key. - - (global-set-key (kbd \"C-c y\") 'company-yasnippet) - -\(fn COMMAND &optional ARG &rest IGNORE)" t nil) - -(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "company-yasnippet" '("company-yasnippet-"))) - -;;;*** - -;;;### (autoloads nil nil ("company-pkg.el") (0 0 0 0)) - -;;;*** - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; company-autoloads.el ends here diff --git a/elpa/company-20200324.2145/company-bbdb.el b/elpa/company-20200324.2145/company-bbdb.el deleted file mode 100644 index a68c34ec..00000000 --- a/elpa/company-20200324.2145/company-bbdb.el +++ /dev/null @@ -1,63 +0,0 @@ -;;; company-bbdb.el --- company-mode completion backend for BBDB in message-mode - -;; Copyright (C) 2013-2014, 2016 Free Software Foundation, Inc. - -;; Author: Jan Tatarik - -;; This file is part of GNU Emacs. - -;; GNU Emacs 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. - -;; GNU Emacs 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 GNU Emacs. If not, see . - -(require 'company) -(require 'cl-lib) - -(declare-function bbdb-record-get-field "bbdb") -(declare-function bbdb-records "bbdb") -(declare-function bbdb-dwim-mail "bbdb-com") -(declare-function bbdb-search "bbdb-com") - -(defgroup company-bbdb nil - "Completion backend for BBDB." - :group 'company) - -(defcustom company-bbdb-modes '(message-mode) - "Major modes in which `company-bbdb' may complete." - :type '(repeat (symbol :tag "Major mode")) - :package-version '(company . "0.8.8")) - -(defun company-bbdb--candidates (arg) - (cl-mapcan (lambda (record) - (mapcar (lambda (mail) (bbdb-dwim-mail record mail)) - (bbdb-record-get-field record 'mail))) - (eval '(bbdb-search (bbdb-records) arg nil arg)))) - -;;;###autoload -(defun company-bbdb (command &optional arg &rest ignore) - "`company-mode' completion backend for BBDB." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-bbdb)) - (prefix (and (memq major-mode company-bbdb-modes) - (featurep 'bbdb-com) - (let ((case-fold-search t)) - (looking-back - "^\\([^ :]*-\\)?\\(To\\|B?Cc\\|From\\):.*? *\\([^,;]*\\)" - (line-beginning-position))) - (match-string-no-properties 3))) - (candidates (company-bbdb--candidates arg)) - (sorted t) - (no-cache t))) - -(provide 'company-bbdb) -;;; company-bbdb.el ends here diff --git a/elpa/company-20200324.2145/company-bbdb.elc b/elpa/company-20200324.2145/company-bbdb.elc deleted file mode 100644 index a1f9ab58..00000000 Binary files a/elpa/company-20200324.2145/company-bbdb.elc and /dev/null differ diff --git a/elpa/company-20200324.2145/company-capf.el b/elpa/company-20200324.2145/company-capf.el deleted file mode 100644 index cb30a801..00000000 --- a/elpa/company-20200324.2145/company-capf.el +++ /dev/null @@ -1,208 +0,0 @@ -;;; company-capf.el --- company-mode completion-at-point-functions backend -*- lexical-binding: t -*- - -;; Copyright (C) 2013-2019 Free Software Foundation, Inc. - -;; Author: Stefan Monnier - -;; This file is part of GNU Emacs. - -;; GNU Emacs 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. - -;; GNU Emacs 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 GNU Emacs. If not, see . - - -;;; Commentary: -;; -;; The CAPF back-end provides a bridge to the standard -;; completion-at-point-functions facility, and thus can support any major mode -;; that defines a proper completion function, including emacs-lisp-mode, -;; css-mode and nxml-mode. - -;;; Code: - -(require 'company) -(require 'cl-lib) - -;; Amortizes several calls to a c-a-p-f from the same position. -(defvar company--capf-cache nil) - -;; FIXME: Provide a way to save this info once in Company itself -;; (https://github.com/company-mode/company-mode/pull/845). -(defvar-local company-capf--current-completion-data nil - "Value last returned by `company-capf' when called with `candidates'. -For most properties/actions, this is just what we need: the exact values -that accompanied the completion table that's currently is use. - -`company-capf', however, could be called at some different positions during -a completion session (most importantly, by `company-sort-by-occurrence'), -so we can't just use the preceding variable instead.") - -(defun company--capf-data () - (let ((cache company--capf-cache)) - (if (and (equal (current-buffer) (car cache)) - (equal (point) (car (setq cache (cdr cache)))) - (equal (buffer-chars-modified-tick) (car (setq cache (cdr cache))))) - (cadr cache) - (let ((data (company--capf-data-real))) - (setq company--capf-cache - (list (current-buffer) (point) (buffer-chars-modified-tick) data)) - data)))) - -(defun company--capf-data-real () - (cl-letf* (((default-value 'completion-at-point-functions) - ;; Ignore tags-completion-at-point-function because it subverts - ;; company-etags in the default value of company-backends, where - ;; the latter comes later. - (remove 'tags-completion-at-point-function - (default-value 'completion-at-point-functions))) - (completion-at-point-functions (company--capf-workaround)) - (data (run-hook-wrapped 'completion-at-point-functions - ;; Ignore misbehaving functions. - #'completion--capf-wrapper 'optimist))) - (when (and (consp (cdr data)) (integer-or-marker-p (nth 1 data))) data))) - -(declare-function python-shell-get-process "python") - -(defun company--capf-workaround () - ;; For http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18067 - (if (or (not (listp completion-at-point-functions)) - (not (memq 'python-completion-complete-at-point completion-at-point-functions)) - (python-shell-get-process)) - completion-at-point-functions - (remq 'python-completion-complete-at-point completion-at-point-functions))) - -(defun company-capf--save-current-data (data) - (setq company-capf--current-completion-data data) - (add-hook 'company-after-completion-hook - #'company-capf--clear-current-data nil t)) - -(defun company-capf--clear-current-data (_ignored) - (setq company-capf--current-completion-data nil)) - -(defvar-local company-capf--sorted nil) - -(defun company-capf (command &optional arg &rest _args) - "`company-mode' backend using `completion-at-point-functions'." - (interactive (list 'interactive)) - (pcase command - (`interactive (company-begin-backend 'company-capf)) - (`prefix - (let ((res (company--capf-data))) - (when res - (let ((length (plist-get (nthcdr 4 res) :company-prefix-length)) - (prefix (buffer-substring-no-properties (nth 1 res) (point)))) - (cond - ((> (nth 2 res) (point)) 'stop) - (length (cons prefix length)) - (t prefix)))))) - (`candidates - (company-capf--candidates arg)) - (`sorted - company-capf--sorted) - (`match - ;; Ask the for the `:company-match' function. If that doesn't help, - ;; fallback to sniffing for face changes to get a suitable value. - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-match))) - (if f (funcall f arg) - (let* ((match-start nil) (pos -1) - (prop-value nil) (faces nil) - (has-face-p nil) chunks - (limit (length arg))) - (while (< pos limit) - (setq pos - (if (< pos 0) 0 (next-property-change pos arg limit))) - (setq prop-value (or - (get-text-property pos 'face arg) - (get-text-property pos 'font-lock-face arg)) - faces (if (listp prop-value) prop-value (list prop-value)) - has-face-p (memq 'completions-common-part faces)) - (cond ((and (not match-start) has-face-p) - (setq match-start pos)) - ((and match-start (not has-face-p)) - (push (cons match-start pos) chunks) - (setq match-start nil)))) - (nreverse chunks))))) - (`duplicates t) - (`no-cache t) ;Not much can be done here, as long as we handle - ;non-prefix matches. - (`meta - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-docsig))) - (when f (funcall f arg)))) - (`doc-buffer - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-doc-buffer))) - (when f (funcall f arg)))) - (`location - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :company-location))) - (when f (funcall f arg)))) - (`annotation - (let ((f (plist-get (nthcdr 4 company-capf--current-completion-data) - :annotation-function))) - (when f (funcall f arg)))) - (`require-match - (plist-get (nthcdr 4 (company--capf-data)) :company-require-match)) - (`init nil) ;Don't bother: plenty of other ways to initialize the code. - (`post-completion - (company--capf-post-completion arg)) - )) - -(defun company-capf--candidates (input) - (let ((res (company--capf-data))) - (company-capf--save-current-data res) - (when res - (let* ((table (nth 3 res)) - (pred (plist-get (nthcdr 4 res) :predicate)) - (meta (completion-metadata - (buffer-substring (nth 1 res) (nth 2 res)) - table pred)) - (candidates (completion-all-completions input table pred - (length input) - meta)) - (sortfun (cdr (assq 'display-sort-function meta))) - (last (last candidates)) - (base-size (and (numberp (cdr last)) (cdr last)))) - (when base-size - (setcdr last nil)) - (setq company-capf--sorted (functionp sortfun)) - (when sortfun - (setq candidates (funcall sortfun candidates))) - (if (not (zerop (or base-size 0))) - (let ((before (substring input 0 base-size))) - (mapcar (lambda (candidate) - (concat before candidate)) - candidates)) - candidates))))) - -(defun company--capf-post-completion (arg) - (let* ((res company-capf--current-completion-data) - (exit-function (plist-get (nthcdr 4 res) :exit-function)) - (table (nth 3 res))) - (if exit-function - ;; We can more or less know when the user is done with completion, - ;; so we do something different than `completion--done'. - (funcall exit-function arg - ;; FIXME: Should probably use an additional heuristic: - ;; completion-at-point doesn't know when the user picked a - ;; particular candidate explicitly (it only checks whether - ;; further completions exist). Whereas company user can press - ;; RET (or use implicit completion with company-tng). - (if (= (car (completion-boundaries arg table nil "")) - (length arg)) - 'sole - 'finished))))) - -(provide 'company-capf) - -;;; company-capf.el ends here diff --git a/elpa/company-20200324.2145/company-capf.elc b/elpa/company-20200324.2145/company-capf.elc deleted file mode 100644 index 7c8d5162..00000000 Binary files a/elpa/company-20200324.2145/company-capf.elc and /dev/null differ diff --git a/elpa/company-20200324.2145/company-clang.el b/elpa/company-20200324.2145/company-clang.el deleted file mode 100644 index 272dd8fb..00000000 --- a/elpa/company-20200324.2145/company-clang.el +++ /dev/null @@ -1,385 +0,0 @@ -;;; company-clang.el --- company-mode completion backend for Clang -*- lexical-binding: t -*- - -;; Copyright (C) 2009, 2011, 2013-2019 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs 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. - -;; GNU Emacs 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 GNU Emacs. If not, see . - - -;;; Commentary: -;; - -;;; Code: - -(require 'company) -(require 'company-template) -(require 'cl-lib) - -(defgroup company-clang nil - "Completion backend for Clang." - :group 'company) - -(defcustom company-clang-executable - (executable-find "clang") - "Location of clang executable." - :type 'file) - -(defcustom company-clang-begin-after-member-access t - "When non-nil, automatic completion will start whenever the current -symbol is preceded by \".\", \"->\" or \"::\", ignoring -`company-minimum-prefix-length'. - -If `company-begin-commands' is a list, it should include `c-electric-lt-gt' -and `c-electric-colon', for automatic completion right after \">\" and -\":\"." - :type 'boolean) - -(defcustom company-clang-use-compile-flags-txt nil - "When non-nil, use flags from compile_flags.txt if present. - -The lines from that files will be appended to `company-clang-arguments'. - -And if such file is found, Clang is called from the directory containing -it. That allows the flags use relative file names within the project." - :type 'boolean - :safe 'booleanp) - -(defcustom company-clang-arguments nil - "Additional arguments to pass to clang when completing. -Prefix files (-include ...) can be selected with `company-clang-set-prefix' -or automatically through a custom `company-clang-prefix-guesser'." - :type '(repeat (string :tag "Argument"))) - -(defcustom company-clang-prefix-guesser 'company-clang-guess-prefix - "A function to determine the prefix file for the current buffer." - :type '(function :tag "Guesser function" nil)) - -(defvar company-clang-modes '(c-mode c++-mode objc-mode) - "Major modes which clang may complete.") - -(defcustom company-clang-insert-arguments t - "When non-nil, insert function arguments as a template after completion." - :type 'boolean - :package-version '(company . "0.8.0")) - -;; prefix ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar company-clang--prefix nil) - -(defsubst company-clang--guess-pch-file (file) - (let ((dir (directory-file-name (file-name-directory file)))) - (when (equal (file-name-nondirectory dir) "Classes") - (setq dir (file-name-directory dir))) - (car (directory-files dir t "\\([^.]h\\|[^h]\\).pch\\'" t)))) - -(defsubst company-clang--file-substring (file beg end) - (with-temp-buffer - (insert-file-contents-literally file nil beg end) - (buffer-string))) - -(defun company-clang-guess-prefix () - "Try to guess the prefix file for the current buffer." - ;; Prefixes seem to be called .pch. Pre-compiled headers do, too. - ;; So we look at the magic number to rule them out. - (let* ((file (company-clang--guess-pch-file buffer-file-name)) - (magic-number (and file (company-clang--file-substring file 0 4)))) - (unless (member magic-number '("CPCH" "gpch")) - file))) - -(defun company-clang-set-prefix (&optional prefix) - "Use PREFIX as a prefix (-include ...) file for clang completion." - (interactive (let ((def (funcall company-clang-prefix-guesser))) - (unless (stringp def) - (setq def default-directory)) - (list (read-file-name "Prefix file: " - (when def (file-name-directory def)) - def t (when def (file-name-nondirectory def)))))) - ;; TODO: pre-compile? - (setq company-clang--prefix (and (stringp prefix) - (file-regular-p prefix) - prefix))) - -;; Clean-up on exit. -(add-hook 'kill-emacs-hook 'company-clang-set-prefix) - -;; parsing ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; TODO: Handle Pattern (syntactic hints would be neat). -;; Do we ever see OVERLOAD (or OVERRIDE)? -(defconst company-clang--completion-pattern - "^COMPLETION: \\_<\\(%s[a-zA-Z0-9_:]*\\)\\(?:\\(?: (InBase)\\)? : \\(.*\\)$\\)?$") - -(defconst company-clang--error-buffer-name "*clang-error*") - -(defun company-clang--lang-option () - (if (eq major-mode 'objc-mode) - (if (string= "m" (file-name-extension buffer-file-name)) - "objective-c" "objective-c++") - (substring (symbol-name major-mode) 0 -5))) - -(defun company-clang--parse-output (prefix _objc) - (goto-char (point-min)) - (let ((pattern (format company-clang--completion-pattern - (regexp-quote prefix))) - (case-fold-search nil) - lines match) - (while (re-search-forward pattern nil t) - (setq match (match-string-no-properties 1)) - (unless (equal match "Pattern") - (save-match-data - (when (string-match ":" match) - (setq match (substring match 0 (match-beginning 0))))) - (let ((meta (match-string-no-properties 2))) - (when (and meta (not (string= match meta))) - (put-text-property 0 1 'meta - (company-clang--strip-formatting meta) - match))) - (push match lines))) - lines)) - -(defun company-clang--meta (candidate) - (get-text-property 0 'meta candidate)) - -(defun company-clang--annotation (candidate) - (let ((ann (company-clang--annotation-1 candidate))) - (if (not (and ann (string-prefix-p "(*)" ann))) - ann - (with-temp-buffer - (insert ann) - (search-backward ")") - (let ((pt (1+ (point)))) - (re-search-forward ".\\_>" nil t) - (delete-region pt (point))) - (buffer-string))))) - -(defun company-clang--annotation-1 (candidate) - (let ((meta (company-clang--meta candidate))) - (cond - ((null meta) nil) - ((string-match "[^:]:[^:]" meta) - (substring meta (1+ (match-beginning 0)))) - ((string-match "(anonymous)" meta) nil) - ((string-match "\\((.*)[ a-z]*\\'\\)" meta) - (let ((paren (match-beginning 1))) - (if (not (eq (aref meta (1- paren)) ?>)) - (match-string 1 meta) - (with-temp-buffer - (insert meta) - (goto-char paren) - (substring meta (1- (search-backward "<")))))))))) - -(defun company-clang--strip-formatting (text) - (replace-regexp-in-string - "#]" " " - (replace-regexp-in-string "[<{[]#\\|#[>}]" "" text t) - t)) - -(defun company-clang--handle-error (res args) - (goto-char (point-min)) - (let* ((buf (get-buffer-create company-clang--error-buffer-name)) - (cmd (concat company-clang-executable " " (mapconcat 'identity args " "))) - (pattern (format company-clang--completion-pattern "")) - (message-truncate-lines t) - (err (if (re-search-forward pattern nil t) - (buffer-substring-no-properties (point-min) - (1- (match-beginning 0))) - ;; Warn the user more aggressively if no match was found. - (message "clang failed with error %d: %s" res cmd) - (buffer-string)))) - - (with-current-buffer buf - (let ((inhibit-read-only t)) - (erase-buffer) - (insert (current-time-string) - (format "\nclang failed with error %d:\n" res) - cmd "\n\n") - (insert err) - (setq buffer-read-only t) - (goto-char (point-min)))))) - -(defun company-clang--start-process (prefix callback &rest args) - (let* ((objc (derived-mode-p 'objc-mode)) - (buf (get-buffer-create "*clang-output*")) - ;; Looks unnecessary in Emacs 25.1 and later. - (process-adaptive-read-buffering nil) - (existing-process (get-buffer-process buf))) - (when existing-process - (kill-process existing-process)) - (with-current-buffer buf - (erase-buffer) - (setq buffer-undo-list t)) - (let* ((process-connection-type nil) - (process (apply #'start-file-process "company-clang" buf - company-clang-executable args))) - (set-process-sentinel - process - (lambda (proc status) - (unless (string-match-p "hangup\\|killed" status) - (funcall - callback - (let ((res (process-exit-status proc))) - (with-current-buffer buf - (unless (eq 0 res) - (company-clang--handle-error res args)) - ;; Still try to get any useful input. - (company-clang--parse-output prefix objc))))))) - (unless (company-clang--auto-save-p) - (send-region process (point-min) (point-max)) - (send-string process "\n") - (process-send-eof process))))) - -(defsubst company-clang--build-location (pos) - (save-excursion - (goto-char pos) - (format "%s:%d:%d" - (if (company-clang--auto-save-p) buffer-file-name "-") - (line-number-at-pos) - (1+ (length - (encode-coding-region - (line-beginning-position) - (point) - 'utf-8 - t)))))) - -(defsubst company-clang--build-complete-args (pos) - (append '("-fsyntax-only" "-Xclang" "-code-completion-macros") - (unless (company-clang--auto-save-p) - (list "-x" (company-clang--lang-option))) - (company-clang--arguments) - (when (stringp company-clang--prefix) - (list "-include" (expand-file-name company-clang--prefix))) - (list "-Xclang" (format "-code-completion-at=%s" - (company-clang--build-location pos))) - (list (if (company-clang--auto-save-p) buffer-file-name "-")))) - -(defun company-clang--arguments () - (let ((fname "compile_flags.txt") - (args company-clang-arguments) - current-dir-rel) - (when company-clang-use-compile-flags-txt - (let ((dir (locate-dominating-file default-directory fname))) - (when dir - (setq current-dir-rel (file-relative-name default-directory dir)) - (setq default-directory dir) - (with-temp-buffer - (insert-file-contents fname) - (setq args - (append - args - (split-string (buffer-substring-no-properties - (point-min) (point-max)) - "[\n\r]+" - t - "[ \t]+")))) - (unless (equal current-dir-rel "./") - (push (format "-I%s" current-dir-rel) args))))) - args)) - -(defun company-clang--candidates (prefix callback) - (and (company-clang--auto-save-p) - (buffer-modified-p) - (basic-save-buffer)) - (when (null company-clang--prefix) - (company-clang-set-prefix (or (funcall company-clang-prefix-guesser) - 'none))) - (let ((default-directory default-directory)) - (apply 'company-clang--start-process - prefix - callback - (company-clang--build-complete-args - (if (company-clang--check-version 4.0 9.0) - (point) - (- (point) (length prefix))))))) - -(defun company-clang--prefix () - (if company-clang-begin-after-member-access - (company-grab-symbol-cons "\\.\\|->\\|::" 2) - (company-grab-symbol))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defconst company-clang-required-version 1.1) - -(defvar company-clang--version nil) - -(defun company-clang--auto-save-p () - (not - (company-clang--check-version 2.9 3.1))) - -(defun company-clang--check-version (min apple-min) - (pcase company-clang--version - (`(apple . ,ver) (>= ver apple-min)) - (`(normal . ,ver) (>= ver min)) - (_ (error "pcase-exhaustive is not in Emacs 24.3!")))) - -(defsubst company-clang-version () - "Return the version of `company-clang-executable'." - (with-temp-buffer - (call-process company-clang-executable nil t nil "--version") - (goto-char (point-min)) - (if (re-search-forward - "\\(clang\\|Apple LLVM\\|bcc32x\\|bcc64\\) version \\([0-9.]+\\)" nil t) - (cons - (if (equal (match-string-no-properties 1) "Apple LLVM") - 'apple - 'normal) - (string-to-number (match-string-no-properties 2))) - 0))) - -(defun company-clang (command &optional arg &rest ignored) - "`company-mode' completion backend for Clang. -Clang is a parser for C and ObjC. Clang version 1.1 or newer is required. - -Additional command line arguments can be specified in -`company-clang-arguments'. Prefix files (-include ...) can be selected -with `company-clang-set-prefix' or automatically through a custom -`company-clang-prefix-guesser'. - -With Clang versions before 2.9, we have to save the buffer before -performing completion. With Clang 2.9 and later, buffer contents are -passed via standard input." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-clang)) - (init (when (memq major-mode company-clang-modes) - (unless company-clang-executable - (error "Company found no clang executable")) - (setq company-clang--version (company-clang-version)) - (unless (company-clang--check-version - company-clang-required-version - company-clang-required-version) - (error "Company requires clang version %s" - company-clang-required-version)))) - (prefix (and (memq major-mode company-clang-modes) - buffer-file-name - company-clang-executable - (not (company-in-string-or-comment)) - (or (company-clang--prefix) 'stop))) - (candidates (cons :async - (lambda (cb) (company-clang--candidates arg cb)))) - (meta (company-clang--meta arg)) - (annotation (company-clang--annotation arg)) - (post-completion (let ((anno (company-clang--annotation arg))) - (when (and company-clang-insert-arguments anno) - (insert anno) - (if (string-match "\\`:[^:]" anno) - (company-template-objc-templatify anno) - (company-template-c-like-templatify - (concat arg anno)))))))) - -(provide 'company-clang) -;;; company-clang.el ends here diff --git a/elpa/company-20200324.2145/company-clang.elc b/elpa/company-20200324.2145/company-clang.elc deleted file mode 100644 index 4407fdc0..00000000 Binary files a/elpa/company-20200324.2145/company-clang.elc and /dev/null differ diff --git a/elpa/company-20200324.2145/company-cmake.el b/elpa/company-20200324.2145/company-cmake.el deleted file mode 100644 index 1bfb20ba..00000000 --- a/elpa/company-20200324.2145/company-cmake.el +++ /dev/null @@ -1,206 +0,0 @@ -;;; company-cmake.el --- company-mode completion backend for CMake - -;; Copyright (C) 2013-2014, 2017-2018 Free Software Foundation, Inc. - -;; Author: Chen Bin -;; Version: 0.2 - -;; 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: -;; -;; company-cmake offers completions for module names, variable names and -;; commands used by CMake. And their descriptions. - -;;; Code: - -(require 'company) -(require 'cl-lib) - -(defgroup company-cmake nil - "Completion backend for CMake." - :group 'company) - -(defcustom company-cmake-executable - (executable-find "cmake") - "Location of cmake executable." - :type 'file) - -(defvar company-cmake-executable-arguments - '("--help-command-list" - "--help-module-list" - "--help-variable-list") - "The arguments we pass to cmake, separately. -They affect which types of symbols we get completion candidates for.") - -(defvar company-cmake--completion-pattern - "^\\(%s[a-zA-Z0-9_<>]%s\\)$" - "Regexp to match the candidates.") - -(defvar company-cmake-modes '(cmake-mode) - "Major modes in which cmake may complete.") - -(defvar company-cmake--candidates-cache nil - "Cache for the raw candidates.") - -(defvar company-cmake--meta-command-cache nil - "Cache for command arguments to retrieve descriptions for the candidates.") - -(defun company-cmake--replace-tags (rlt) - (setq rlt (replace-regexp-in-string - "\\(.*?\\(IS_GNU\\)?\\)\\(.*\\)" - (lambda (_match) - (mapconcat 'identity - (if (match-beginning 2) - '("\\1CXX\\3" "\\1C\\3" "\\1G77\\3") - '("\\1CXX\\3" "\\1C\\3" "\\1Fortran\\3")) - "\n")) - rlt t)) - (setq rlt (replace-regexp-in-string - "\\(.*\\)\\(.*\\)" - (mapconcat 'identity '("\\1DEBUG\\2" "\\1RELEASE\\2" - "\\1RELWITHDEBINFO\\2" "\\1MINSIZEREL\\2") - "\n") - rlt)) - rlt) - -(defun company-cmake--fill-candidates-cache (arg) - "Fill candidates cache if needed." - (let (rlt) - (unless company-cmake--candidates-cache - (setq company-cmake--candidates-cache (make-hash-table :test 'equal))) - - ;; If hash is empty, fill it. - (unless (gethash arg company-cmake--candidates-cache) - (with-temp-buffer - (let ((res (call-process company-cmake-executable nil t nil arg))) - (unless (zerop res) - (message "cmake executable exited with error=%d" res))) - (setq rlt (buffer-string))) - (setq rlt (company-cmake--replace-tags rlt)) - (puthash arg rlt company-cmake--candidates-cache)) - )) - -(defun company-cmake--parse (prefix content cmd) - (let ((start 0) - (pattern (format company-cmake--completion-pattern - (regexp-quote prefix) - (if (zerop (length prefix)) "+" "*"))) - (lines (split-string content "\n")) - match - rlt) - (dolist (line lines) - (when (string-match pattern line) - (let ((match (match-string 1 line))) - (when match - (puthash match cmd company-cmake--meta-command-cache) - (push match rlt))))) - rlt)) - -(defun company-cmake--candidates (prefix) - (let (results - cmd-opts - str) - - (unless company-cmake--meta-command-cache - (setq company-cmake--meta-command-cache (make-hash-table :test 'equal))) - - (dolist (arg company-cmake-executable-arguments) - (company-cmake--fill-candidates-cache arg) - (setq cmd-opts (replace-regexp-in-string "-list$" "" arg) ) - - (setq str (gethash arg company-cmake--candidates-cache)) - (when str - (setq results (nconc results - (company-cmake--parse prefix str cmd-opts))))) - results)) - -(defun company-cmake--unexpand-candidate (candidate) - (cond - ((string-match "^CMAKE_\\(C\\|CXX\\|Fortran\\)\\(_.*\\)$" candidate) - (setq candidate (concat "CMAKE_" (match-string 2 candidate)))) - - ;; C flags - ((string-match "^\\(.*_\\)IS_GNU\\(C\\|CXX\\|G77\\)$" candidate) - (setq candidate (concat (match-string 1 candidate) "IS_GNU"))) - - ;; C flags - ((string-match "^\\(.*_\\)OVERRIDE_\\(C\\|CXX\\|Fortran\\)$" candidate) - (setq candidate (concat (match-string 1 candidate) "OVERRIDE_"))) - - ((string-match "^\\(.*\\)\\(_DEBUG\\|_RELEASE\\|_RELWITHDEBINFO\\|_MINSIZEREL\\)\\(.*\\)$" candidate) - (setq candidate (concat (match-string 1 candidate) - "_" - (match-string 3 candidate))))) - candidate) - -(defun company-cmake--meta (candidate) - (let ((cmd-opts (gethash candidate company-cmake--meta-command-cache)) - result) - (setq candidate (company-cmake--unexpand-candidate candidate)) - - ;; Don't cache the documentation of every candidate (command) - ;; Cache in this case will cost too much memory. - (with-temp-buffer - (call-process company-cmake-executable nil t nil cmd-opts candidate) - ;; Go to the third line, trim it and return the result. - ;; Tested with cmake 2.8.9. - (goto-char (point-min)) - (forward-line 2) - (setq result (buffer-substring-no-properties (line-beginning-position) - (line-end-position))) - (setq result (replace-regexp-in-string "^[ \t\n\r]+" "" result)) - result))) - -(defun company-cmake--doc-buffer (candidate) - (let ((cmd-opts (gethash candidate company-cmake--meta-command-cache))) - - (setq candidate (company-cmake--unexpand-candidate candidate)) - (with-temp-buffer - (call-process company-cmake-executable nil t nil cmd-opts candidate) - ;; Go to the third line, trim it and return the doc buffer. - ;; Tested with cmake 2.8.9. - (goto-char (point-min)) - (forward-line 2) - (company-doc-buffer - (buffer-substring-no-properties (line-beginning-position) - (point-max)))))) - -(defun company-cmake-prefix-dollar-brace-p () - "Test if the current symbol follows ${." - (save-excursion - (skip-syntax-backward "w_") - (and (eq (char-before (point)) ?\{) - (eq (char-before (1- (point))) ?$)))) - -(defun company-cmake (command &optional arg &rest ignored) - "`company-mode' completion backend for CMake. -CMake is a cross-platform, open-source make system." - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'company-cmake)) - (init (when (memq major-mode company-cmake-modes) - (unless company-cmake-executable - (error "Company found no cmake executable")))) - (prefix (and (memq major-mode company-cmake-modes) - (or (not (company-in-string-or-comment)) - (company-cmake-prefix-dollar-brace-p)) - (company-grab-symbol))) - (candidates (company-cmake--candidates arg)) - (meta (company-cmake--meta arg)) - (doc-buffer (company-cmake--doc-buffer arg)) - )) - -(provide 'company-cmake) -;;; company-cmake.el ends here diff --git a/elpa/company-20200324.2145/company-cmake.elc b/elpa/company-20200324.2145/company-cmake.elc deleted file mode 100644 index 2c0c6dde..00000000 Binary files a/elpa/company-20200324.2145/company-cmake.elc and /dev/null differ diff --git a/elpa/company-20200324.2145/company-css.el b/elpa/company-20200324.2145/company-css.el deleted file mode 100644 index d3ece74d..00000000 --- a/elpa/company-20200324.2145/company-css.el +++ /dev/null @@ -1,446 +0,0 @@ -;;; company-css.el --- company-mode completion backend for css-mode -*- lexical-binding: t -*- - -;; Copyright (C) 2009, 2011, 2014, 2018 Free Software Foundation, Inc. - -;; Author: Nikolaj Schumacher - -;; This file is part of GNU Emacs. - -;; GNU Emacs 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. - -;; GNU Emacs 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 GNU Emacs. If not, see . - -;;; Commentary: -;; -;; In Emacs >= 26, company-capf is used instead. - -;;; Code: - -(require 'company) -(require 'cl-lib) - -(declare-function web-mode-language-at-pos "web-mode" (&optional pos)) - -(defconst company-css-property-alist - ;; see http://www.w3.org/TR/CSS21/propidx.html - '(("azimuth" angle "left-side" "far-left" "left" "center-left" "center" - "center-right" "right" "far-right" "right-side" "behind" "leftwards" - "rightwards") - ("background" background-color background-image background-repeat - background-attachment background-position - background-clip background-origin background-size) - ("background-attachment" "scroll" "fixed") - ("background-color" color "transparent") - ("background-image" uri "none") - ("background-position" percentage length "left" "center" "right" percentage - length "top" "center" "bottom" "left" "center" "right" "top" "center" - "bottom") - ("background-repeat" "repeat" "repeat-x" "repeat-y" "no-repeat") - ("border" border-width border-style border-color) - ("border-bottom" border) - ("border-bottom-color" border-color) - ("border-bottom-style" border-style) - ("border-bottom-width" border-width) - ("border-collapse" "collapse" "separate") - ("border-color" color "transparent") - ("border-left" border) - ("border-left-color" border-color) - ("border-left-style" border-style) - ("border-left-width" border-width) - ("border-right" border) - ("border-right-color" border-color) - ("border-right-style" border-style) - ("border-right-width" border-width) - ("border-spacing" length length) - ("border-style" border-style) - ("border-top" border) - ("border-top-color" border-color) - ("border-top-style" border-style) - ("border-top-width" border-width) - ("border-width" border-width) - ("bottom" length percentage "auto") - ("caption-side" "top" "bottom") - ("clear" "none" "left" "right" "both") - ("clip" shape "auto") - ("color" color) - ("content" "normal" "none" string uri counter "attr()" "open-quote" - "close-quote" "no-open-quote" "no-close-quote") - ("counter-increment" identifier integer "none") - ("counter-reset" identifier integer "none") - ("cue" cue-before cue-after) - ("cue-after" uri "none") - ("cue-before" uri "none") - ("cursor" uri "*" "auto" "crosshair" "default" "pointer" "move" "e-resize" - "ne-resize" "nw-resize" "n-resize" "se-resize" "sw-resize" "s-resize" - "w-resize" "text" "wait" "help" "progress") - ("direction" "ltr" "rtl") - ("display" "inline" "block" "list-item" "run-in" "inline-block" "table" - "inline-table" "table-row-group" "table-header-group" "table-footer-group" - "table-row" "table-column-group" "table-column" "table-cell" - "table-caption" "none") - ("elevation" angle "below" "level" "above" "higher" "lower") - ("empty-cells" "show" "hide") - ("float" "left" "right" "none") - ("font" font-style font-weight font-size "/" line-height - font-family "caption" "icon" "menu" "message-box" "small-caption" - "status-bar" "normal" "small-caps" - ;; CSS3 - font-stretch) - ("font-family" family-name generic-family) - ("font-size" absolute-size relative-size length percentage) - ("font-style" "normal" "italic" "oblique") - ("font-weight" "normal" "bold" "bolder" "lighter" "100" "200" "300" "400" - "500" "600" "700" "800" "900") - ("height" length percentage "auto") - ("left" length percentage "auto") - ("letter-spacing" "normal" length) - ("line-height" "normal" number length percentage) - ("list-style" list-style-type list-style-position list-style-image) - ("list-style-image" uri "none") - ("list-style-position" "inside" "outside") - ("list-style-type" "disc" "circle" "square" "decimal" "decimal-leading-zero" - "lower-roman" "upper-roman" "lower-greek" "lower-latin" "upper-latin" - "armenian" "georgian" "lower-alpha" "upper-alpha" "none") - ("margin" margin-width) - ("margin-bottom" margin-width) - ("margin-left" margin-width) - ("margin-right" margin-width) - ("margin-top" margin-width) - ("max-height" length percentage "none") - ("max-width" length percentage "none") - ("min-height" length percentage) - ("min-width" length percentage) - ("orphans" integer) - ("outline" outline-color outline-style outline-width) - ("outline-color" color "invert") - ("outline-style" border-style) - ("outline-width" border-width) - ("overflow" "visible" "hidden" "scroll" "auto" - ;; CSS3: - "no-display" "no-content") - ("padding" padding-width) - ("padding-bottom" padding-width) - ("padding-left" padding-width) - ("padding-right" padding-width) - ("padding-top" padding-width) - ("page-break-after" "auto" "always" "avoid" "left" "right") - ("page-break-before" "auto" "always" "avoid" "left" "right") - ("page-break-inside" "avoid" "auto") - ("pause" time percentage) - ("pause-after" time percentage) - ("pause-before" time percentage) - ("pitch" frequency "x-low" "low" "medium" "high" "x-high") - ("pitch-range" number) - ("play-during" uri "mix" "repeat" "auto" "none") - ("position" "static" "relative" "absolute" "fixed") - ("quotes" string string "none") - ("richness" number) - ("right" length percentage "auto") - ("speak" "normal" "none" "spell-out") - ("speak-header" "once" "always") - ("speak-numeral" "digits" "continuous") - ("speak-punctuation" "code" "none") - ("speech-rate" number "x-slow" "slow" "medium" "fast" "x-fast" "faster" - "slower") - ("stress" number) - ("table-layout" "auto" "fixed") - ("text-align" "left" "right" "center" "justify") - ("text-indent" length percentage) - ("text-transform" "capitalize" "uppercase" "lowercase" "none") - ("top" length percentage "auto") - ("unicode-bidi" "normal" "embed" "bidi-override") - ("vertical-align" "baseline" "sub" "super" "top" "text-top" "middle" - "bottom" "text-bottom" percentage length) - ("visibility" "visible" "hidden" "collapse") - ("voice-family" specific-voice generic-voice "*" specific-voice - generic-voice) - ("volume" number percentage "silent" "x-soft" "soft" "medium" "loud" - "x-loud") - ("white-space" "normal" "pre" "nowrap" "pre-wrap" "pre-line") - ("widows" integer) - ("width" length percentage "auto") - ("word-spacing" "normal" length) - ("z-index" "auto" integer) - ;; CSS3 - ("align-content" align-stretch "space-between" "space-around") - ("align-items" align-stretch "baseline") - ("align-self" align-items "auto") - ("animation" animation-name animation-duration animation-timing-function - animation-delay animation-iteration-count animation-direction - animation-fill-mode) - ("animation-delay" time) - ("animation-direction" "normal" "reverse" "alternate" "alternate-reverse") - ("animation-duration" time) - ("animation-fill-mode" "none" "forwards" "backwards" "both") - ("animation-iteration-count" integer "infinite") - ("animation-name" "none") - ("animation-play-state" "paused" "running") - ("animation-timing-function" transition-timing-function - "step-start" "step-end" "steps(,)") - ("backface-visibility" "visible" "hidden") - ("background-clip" background-origin) - ("background-origin" "border-box" "padding-box" "content-box") - ("background-size" length percentage "auto" "cover" "contain") - ("border-image" border-image-outset border-image-repeat border-image-source - border-image-slice border-image-width) - ("border-image-outset" length) - ("border-image-repeat" "stretch" "repeat" "round" "space") - ("border-image-source" uri "none") - ("border-image-slice" length) - ("border-image-width" length percentage) - ("border-radius" length) - ("border-top-left-radius" length) - ("border-top-right-radius" length) - ("border-bottom-left-radius" length) - ("border-bottom-right-radius" length) - ("box-decoration-break" "slice" "clone") - ("box-shadow" length color) - ("box-sizing" "content-box" "border-box") - ("break-after" "auto" "always" "avoid" "left" "right" "page" "column" - "avoid-page" "avoid-column") - ("break-before" break-after) - ("break-inside" "avoid" "auto") - ("columns" column-width column-count) - ("column-count" integer) - ("column-fill" "auto" "balance") - ("column-gap" length "normal") - ("column-rule" column-rule-width column-rule-style column-rule-color) - ("column-rule-color" color) - ("column-rule-style" border-style) - ("column-rule-width" border-width) - ("column-span" "all" "none") - ("column-width" length "auto") - ("filter" url "blur()" "brightness()" "contrast()" "drop-shadow()" - "grayscale()" "hue-rotate()" "invert()" "opacity()" "saturate()" "sepia()") - ("flex" flex-grow flex-shrink flex-basis) - ("flex-basis" percentage length "auto") - ("flex-direction" "row" "row-reverse" "column" "column-reverse") - ("flex-flow" flex-direction flex-wrap) - ("flex-grow" number) - ("flex-shrink" number) - ("flex-wrap" "nowrap" "wrap" "wrap-reverse") - ("font-feature-setting" normal string number) - ("font-kerning" "auto" "normal" "none") - ("font-language-override" "normal" string) - ("font-size-adjust" "none" number) - ("font-stretch" "normal" "ultra-condensed" "extra-condensed" "condensed" - "semi-condensed" "semi-expanded" "expanded" "extra-expanded" "ultra-expanded") - ("font-synthesis" "none" "weight" "style") - ("font-variant" font-variant-alternates font-variant-caps - font-variant-east-asian font-variant-ligatures font-variant-numeric - font-variant-position) - ("font-variant-alternates" "normal" "historical-forms" "stylistic()" - "styleset()" "character-variant()" "swash()" "ornaments()" "annotation()") - ("font-variant-caps" "normal" "small-caps" "all-small-caps" "petite-caps" - "all-petite-caps" "unicase" "titling-caps") - ("font-variant-east-asian" "jis78" "jis83" "jis90" "jis04" "simplified" - "traditional" "full-width" "proportional-width" "ruby") - ("font-variant-ligatures" "normal" "none" "common-ligatures" - "no-common-ligatures" "discretionary-ligatures" "no-discretionary-ligatures" - "historical-ligatures" "no-historical-ligatures" "contextual" "no-contextual") - ("font-variant-numeric" "normal" "ordinal" "slashed-zero" - "lining-nums" "oldstyle-nums" "proportional-nums" "tabular-nums" - "diagonal-fractions" "stacked-fractions") - ("font-variant-position" "normal" "sub" "super") - ("hyphens" "none" "manual" "auto") - ("justify-content" align-common "space-between" "space-around") - ("line-break" "auto" "loose" "normal" "strict") - ("marquee-direction" "forward" "reverse") - ("marquee-play-count" integer "infinite") - ("marquee-speed" "slow" "normal" "fast") - ("marquee-style" "scroll" "slide" "alternate") - ("opacity" number) - ("order" number) - ("outline-offset" length) - ("overflow-x" overflow) - ("overflow-y" overflow) - ("overflow-style" "auto" "marquee-line" "marquee-block") - ("overflow-wrap" "normal" "break-word") - ("perspective" "none" length) - ("perspective-origin" percentage length "left" "center" "right" "top" "bottom") - ("resize" "none" "both" "horizontal" "vertical") - ("tab-size" integer length) - ("text-align-last" "auto" "start" "end" "left" "right" "center" "justify") - ("text-decoration" text-decoration-color text-decoration-line text-decoration-style) - ("text-decoration-color" color) - ("text-decoration-line" "none" "underline" "overline" "line-through" "blink") - ("text-decoration-style" "solid" "double" "dotted" "dashed" "wavy") - ("text-overflow" "clip" "ellipsis") - ("text-shadow" color length) - ("text-underline-position" "auto" "under" "left" "right") - ("transform" "matrix(,,,,,)" "translate(,)" "translateX()" "translateY()" - "scale()" "scaleX()" "scaleY()" "rotate()" "skewX()" "skewY()" "none") - ("transform-origin" perspective-origin) - ("transform-style" "flat" "preserve-3d") - ("transition" transition-property transition-duration - transition-timing-function transition-delay) - ("transition-delay" time) - ("transition-duration" time) - ("transition-timing-function" - "ease" "linear" "ease-in" "ease-out" "ease-in-out" "cubic-bezier(,,,)") - ("transition-property" "none" "all" identifier) - ("word-wrap" overflow-wrap) - ("word-break" "normal" "break-all" "keep-all")) - "A list of CSS properties and their possible values.") - -(defconst company-css-value-classes - '((absolute-size "xx-small" "x-small" "small" "medium" "large" "x-large" - "xx-large") - (align-common "flex-start" "flex-end" "center") - (align-stretch align-common "stretch") - (border-style "none" "hidden" "dotted" "dashed" "solid" "double" "groove" - "ridge" "inset" "outset") - (border-width "thick" "medium" "thin") - (color "aqua" "black" "blue" "fuchsia" "gray" "green" "lime" "maroon" "navy" - "olive" "orange" "purple" "red" "silver" "teal" "white" "yellow") - (counter "counter(,)") - (family-name "Courier" "Helvetica" "Times") - (generic-family "serif" "sans-serif" "cursive" "fantasy" "monospace") - (generic-voice "male" "female" "child") - (margin-width "auto") ;; length percentage - (relative-size "larger" "smaller") - (shape "rect(,,,)") - (uri "url()")) - "A list of CSS property value classes and their contents.") -;; missing, because not completable -;; -;;