diff --git a/lisp/awesome-tray.el-old b/lisp/awesome-tray.el-old deleted file mode 100644 index a9c0bae7..00000000 --- a/lisp/awesome-tray.el-old +++ /dev/null @@ -1,808 +0,0 @@ -;;; awesome-tray.el --- Modular tray bar - -;; Filename: awesome-tray.el -;; Description: Modular tray bar -;; Author: Andy Stewart -;; Maintainer: Andy Stewart -;; Copyright (C) 2018, Andy Stewart, all rights reserved. -;; Created: 2018-10-07 07:30:16 -;; Version: 4.2 -;; Last-Updated: 2020-06-18 21:02:39 -;; By: Andy Stewart -;; URL: http://www.emacswiki.org/emacs/download/awesome-tray.el -;; Keywords: -;; Compatibility: GNU Emacs 27.0.50 -;; -;; Features that might be required by this library: -;; -;; `cl-lib' -;; `subr-x' -;; `battery' -;; - -;;; This file is NOT part of GNU Emacs - -;;; License -;; -;; 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, 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; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth -;; Floor, Boston, MA 02110-1301, USA. - -;;; Commentary: -;; -;; Modular tray bar. -;; -;; I don't like mode-line, it's too high, affect me to read the code. -;; With Emacs, we only need to focus on very little information, such as time, current mode, git branch. -;; Excessive information can seriously interfere with our attention. -;; - -;;; Installation: -;; -;; Put awesome-tray.el to your load-path. -;; The load-path is usually ~/elisp/. -;; It's set in your ~/.emacs like this: -;; (add-to-list 'load-path (expand-file-name "~/elisp")) -;; -;; And the following to your ~/.emacs startup file. -;; -;; (require 'awesome-tray) -;; (awesome-tray-mode 1) -;; -;; No need more. - -;;; Customize: -;; -;; `awesome-tray-mode-line-active-color' -;; `awesome-tray-mode-line-inactive-color' -;; `awesome-tray-active-modules' -;; `awesome-tray-git-update-duration' -;; `awesome-tray-refresh-idle-delay' -;; `awesome-tray-buffer-name-buffer-changed' -;; `awesome-tray-buffer-name-buffer-changed-style' -;; `awesome-tray-input-method-en-style' -;; `awesome-tray-input-method-zh-style' -;; `awesome-tray-buffer-read-only-style' -;; -;; All of the above can customize by: -;; M-x customize-group RET awesome-tray RET -;; - -;;; Change log: -;; -;; 2020/06/18 -;; * Shorter date info. -;; -;; 2020/05/06 -;; * Just show origin message if got any error, easy to debug. -;; -;; 2020/04/01 -;; * Shorter tray info. -;; -;; 2020/02/27 -;; * Adapter the latest version of the snails. -;; * Adjust algorithm of `awesome-tray-get-frame-width'. -;; -;; 2020/02/19 -;; * Add week info in date. -;; -;; 2020/02/14 -;; * Add `awesome-tray-battery-update-duration' to fix `set-mark-command' failed. -;; -;; 2020/02/10 -;; * Add battery remaining time. -;; -;; 2020/02/05 -;; * Add battery status. -;; -;; 2020/01/05 -;; * Hide awesome-tab info if it is too long. -;; -;; 2019/08/20 -;; * Use variable `awesome-tray-mode-line-default-height' fix issue #34. -;; -;; 2019/08/14 -;; * Remove notify message when toggle awesome-tray status. -;; -;; 2019/08/13 -;; * Keep tray info align right when message is very long, thanks QiangF. -;; -;; 2019/07/26 -;; * Support snails framework. -;; -;; 2019/07/16 -;; * Use `format-mode-line' improve performance of `awesome-tray-module-location-info'. -;; -;; 2019/07/15 -;; * Use current-line save value of `line-number-at-pos', improve the performance of `awesome-tray-module-location-info'. -;; * Use `ignore-errors' catch error of awesome-tray. -;; -;; 2019/07/14 -;; * Don't wrap awesome-tray info if variable `inhibit-message' is non-nil. -;; -;; 2019/06/23 -;; * Support `awesome-tab' group indicator. -;; * Fix crash cause by `awesome-tray-module-awesome-tab-info' -;; -;; 2019/05/08 -;; * Disable git modulde default, it have performance when we change buffer too fast. -;; -;; 2019/04/29 -;; * Fix position not update when execute command `beginning-of-buffer' or `end-of-buffer'. -;; -;; 2019/04/25 -;; * Add 'circe' module displaying circe tracking-buffer modeline info. -;; * The circe module is not activated by default, it's added to `awesome-tray-all-modules'. -;; -;; 2018/11/25 -;; * Add `RVM' support. -;; * The rvm module is not activated by default, I move it to `awesome-tray-all-modules'. -;; -;; 2018/11/18 -;; * Fix the problem of displaying duplicate information when the mouse is in the minibuffer window. -;; -;; 2018/11/12 -;; * Remove Mac color, use hex color instead. -;; -;; 2018/11/03 -;; * Add percent information in location module. -;; * Fix error: Not enough arguments for format string. -;; -;; 2018/10/29 -;; * Use `unspecified' attribute fix black block of mode-line inactive status. -;; * Add `awesome-tray-git-update-duration' option. -;; -;; 2018/10/21 -;; * Use `advice-add' re-implmenet `awesome-tray-message-advice' -;; * Add parent-dir module. -;; * Don't show parent-dir if current mode is `dired-mode'. -;; -;; 2018/10/13 -;; * Use `awesome-tray-process-exit-code-and-output' fetch git current branch for better error handling. -;; -;; 2018/10/11 -;; * Reimplement `awesome-tray-module-git-info' don't depend on magit. -;; * Add last-command module, handy for debug emacs. -;; -;; 2018/10/09 -;; * Add new option `awesome-tray-active-modules'. -;; -;; 2018/10/07 -;; * First released. -;; * Add row/column information. -;; * Add `awesome-tray-message-advice' make tray information visible always. -;; * Use `frame-width' instead `window-width' to handle blank characters fill. -;; * Don't fill blank if message string is wider than frame width. -;; - -;;; Acknowledgements: -;; -;; -;; - -;;; TODO -;; -;; -;; - -;;; Require -(require 'cl-lib) -(require 'subr-x) -(require 'battery) - -;;; Code: -(defgroup awesome-tray nil - "Modular tray bar." - :group 'awesome-tray) - -(defcustom awesome-tray-mode-line-active-color "DarkRed" - "Active color." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-mode-line-inactive-color "Gray10" - "Inactive color." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-active-modules - '("location" "parent-dir" "mode-name" "battery" "date") - "Default active modules." - :type 'list - :group 'awesome-tray) - -(defcustom awesome-tray-git-update-duration 5 - "Update duration of git command, in seconds. - -It's very slow start new process in Windows platform. -Maybe you need set this option with bigger value to speedup on Windows platform." - :type 'integer - :group 'awesome-tray) - -(defcustom awesome-tray-battery-update-duration 5 - "Update duration of battery status, in seconds. - -It will make command `set-mark-command' failed if not use duration." - :type 'integer - :group 'awesome-tray) - -(defcustom awesome-tray-refresh-idle-delay 0.5 - "Update idle delay of awesome tray, in seconds." - :type 'double - :group 'awesome-tray) - -(defcustom awesome-tray-buffer-name-buffer-changed-style "*" - "`awesome-tray-buffer-name-buffer-changed' style." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-buffer-name-buffer-changed nil - "Show the current buffer changes after buffer-name." - :type 'boolean - :group 'awesome-tray) - -(defcustom awesome-tray-input-method-en-style "EN" - "English input method display style for input-method module." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-input-method-zh-style "ZH" - "Chinese input method display style for input-method module." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-buffer-read-only-style "R-O" - "Display style for buffer-read-only module." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-file-path-show-filename nil - "Show filename in file-path module or not." - :type 'boolean - :group 'awesome-tray) - -(defcustom awesome-tray-file-path-truncated-name-length 1 - "In file-path module, how many letters to leave when truncate dirname. - -Beginning dots are not counted." - :type 'integer - :group 'awesome-tray) - -(defcustom awesome-tray-file-path-full-dirname-levels 2 - "In file-path module, how many levels of parent directories should be shown in -their full name." - :type 'integer - :group 'awesome-tray) - -(defcustom awesome-tray-file-path-truncate-dirname-levels 0 - "In file-path module, how many levels of parent directories should be shown in -their first character. - -These goes before those shown in their full names." - :type 'integer - :group 'awesome-tray) - -(defface awesome-tray-default-face '((t :inherit default)) - "Face for string constant ouside modules." - :group 'awesome-tray) - -(defface awesome-tray-module-git-face - '((((background light)) - :foreground "#cc2444" :bold t) - (t - :foreground "#ff2d55" :bold t)) - "Git face." - :group 'awesome-tray) - -(defface awesome-tray-module-rvm-face - '((((background light)) - :foreground "#2832cc" :bold t) - (t - :foreground "#333fff" :bold t)) - "RVM face." - :group 'awesome-tray) - -(defface awesome-tray-module-circe-face - '((((background light)) - :foreground "#2832cc" :bold t) - (t - :foreground "#333fff" :bold t)) - "Circe face." - :group 'awesome-tray) - -(defface awesome-tray-module-mode-name-face - '((((background light)) - :foreground "#00a400" :bold t) - (t - :foreground "green3" :bold t)) - "Mode name face." - :group 'awesome-tray) - -(defface awesome-tray-module-location-face - '((((background light)) - :foreground "#cc7700" :bold t) - (t - :foreground "#ff9500" :bold t)) - "Location face." - :group 'awesome-tray) - -(defface awesome-tray-module-date-face - '((((background light)) - :foreground "#717175" :bold t) - (t - :foreground "#8e8e93" :bold t)) - "Date face." - :group 'awesome-tray) - -(defface awesome-tray-module-last-command-face - '((((background light)) - :foreground "#0061cc" :bold t) - (t - :foreground "#007aff" :bold t)) - "Date face." - :group 'awesome-tray) - -(defface awesome-tray-module-buffer-name-face - '((((background light)) - :foreground "#cc7700" :bold t) - (t - :foreground "#ff9500" :bold t)) - "Buffer name face." - :group 'awesome-tray) - -(defface awesome-tray-module-parent-dir-face - '((((background light)) - :foreground "#5e8e2e" :bold t) - (t - :foreground "#9ded4d" :bold t)) - "Parent dir face." - :group 'awesome-tray) - -(defface awesome-tray-module-file-path-face - '((((background light)) - :foreground "#5e8e2e" :bold t) - (t - :foreground "#9ded4d" :bold t)) - "Parent dir face." - :group 'awesome-tray) - -(defface awesome-tray-module-awesome-tab-face - '((((background light)) - :foreground "#b83059" :bold t) - (t - :foreground "#e73c70" :bold t)) - "Awesome tab face." - :group 'awesome-tray) - -(defface awesome-tray-module-evil-face - '((((background light)) - :foreground "#008080" :bold t) - (t - :foreground "#00ced1" :bold t)) - "Evil state face." - :group 'awesome-tray) - -(defface awesome-tray-module-battery-face - '((((background light)) - :foreground "#008080" :bold t) - (t - :foreground "#00ced1" :bold t)) - "Battery state face." - :group 'awesome-tray) - -(defface awesome-tray-module-buffer-read-only-face - '((((background light)) - :foreground "#cc2444" :bold t) - (t - :foreground "#ff2d55" :bold t)) - "Buffer read only face." - :group 'awesome-tray) - -(defface awesome-tray-module-input-method-face - '((((background light)) - :foreground "#008080" :bold t) - (t - :foreground "#00ced1" :bold t)) - "Input method face." - :group 'awesome-tray) - -;;;###autoload -(define-minor-mode awesome-tray-mode - "Modular tray bar." - :require 'awesome-tray-mode - :global t - (if awesome-tray-mode - (awesome-tray-enable) - (awesome-tray-disable))) - -(defvar awesome-tray-info-padding-right 0) - -(defvar awesome-tray-mode-line-colors nil) - -(defvar awesome-tray-timer nil) - -(defvar awesome-tray-active-p nil) - -(defvar awesome-tray-git-command-last-time 0) - -(defvar awesome-tray-git-command-cache "") - -(defvar awesome-tray-battery-status-last-time 0) - -(defvar awesome-tray-battery-status-cache "") - -(defvar awesome-tray-last-tray-info nil) - -(defvar awesome-tray-mode-line-default-height 1) - -(defvar awesome-tray-module-alist - '(("awesome-tab" . (awesome-tray-module-awesome-tab-info awesome-tray-module-awesome-tab-face)) - ("buffer-name" . (awesome-tray-module-buffer-name-info awesome-tray-module-buffer-name-face)) - ("circe" . (awesome-tray-module-circe-info awesome-tray-module-circe-face)) - ("date" . (awesome-tray-module-date-info awesome-tray-module-date-face)) - ("evil" . (awesome-tray-module-evil-info awesome-tray-module-evil-face)) - ("file-path" . (awesome-tray-module-file-path-info awesome-tray-module-file-path-face)) - ("git" . (awesome-tray-module-git-info awesome-tray-module-git-face)) - ("last-command" . (awesome-tray-module-last-command-info awesome-tray-module-last-command-face)) - ("location" . (awesome-tray-module-location-info awesome-tray-module-location-face)) - ("parent-dir" . (awesome-tray-module-parent-dir-info awesome-tray-module-parent-dir-face)) - ("mode-name" . (awesome-tray-module-mode-name-info awesome-tray-module-mode-name-face)) - ("rvm" . (awesome-tray-module-rvm-info awesome-tray-module-rvm-face)) - ("battery" . (awesome-tray-module-battery-info awesome-tray-module-battery-face)) - ("input-method" . (awesome-tray-module-input-method-info awesome-tray-module-input-method-face)) - ("buffer-read-only" . (awesome-tray-module-buffer-read-only-info awesome-tray-module-buffer-read-only-face)) - )) - -(defun awesome-tray-enable () - ;; Save mode-line colors when first time. - ;; Don't change `awesome-tray-mode-line-colors' anymore. - (unless awesome-tray-mode-line-colors - (setq awesome-tray-mode-line-colors - (list (face-attribute 'mode-line :foreground) - (face-attribute 'mode-line :background) - (face-attribute 'mode-line :family) - (face-attribute 'mode-line :box) - (face-attribute 'mode-line-inactive :foreground) - (face-attribute 'mode-line-inactive :background) - (face-attribute 'mode-line-inactive :family) - (face-attribute 'mode-line-inactive :box) - ))) - (setq awesome-tray-mode-line-default-height (face-attribute 'mode-line :height)) - ;; Disable mode line. - (set-face-attribute 'mode-line nil - :foreground awesome-tray-mode-line-active-color - :background awesome-tray-mode-line-active-color - :height 0.1 - :box nil) - (set-face-attribute 'mode-line-inactive nil - :foreground awesome-tray-mode-line-inactive-color - :background awesome-tray-mode-line-inactive-color - :height 0.1 - :box nil - :inherit 'unspecified) - ;; Add update timer. - (setq awesome-tray-timer - (run-with-timer 0 awesome-tray-refresh-idle-delay 'awesome-tray-show-info)) - (add-hook 'focus-in-hook 'awesome-tray-show-info) - (setq awesome-tray-active-p t)) - -(defun awesome-tray-disable () - ;; Restore mode-line colors. - (set-face-attribute 'mode-line nil - :foreground (nth 0 awesome-tray-mode-line-colors) - :background (nth 1 awesome-tray-mode-line-colors) - :family (nth 2 awesome-tray-mode-line-colors) - :box (nth 3 awesome-tray-mode-line-colors) - :height awesome-tray-mode-line-default-height) - (set-face-attribute 'mode-line-inactive nil - :foreground (nth 4 awesome-tray-mode-line-colors) - :background (nth 5 awesome-tray-mode-line-colors) - :family (nth 6 awesome-tray-mode-line-colors) - :box (nth 7 awesome-tray-mode-line-colors) - :height awesome-tray-mode-line-default-height) - ;; Cancel timer. - (when (timerp awesome-tray-timer) - (cancel-timer awesome-tray-timer)) - (remove-hook 'focus-in-hook 'awesome-tray-show-info) - ;; Update mode-line. - (force-mode-line-update) - (redraw-display) - (with-current-buffer " *Minibuf-0*" - (erase-buffer)) - (setq awesome-tray-active-p nil)) - -(defun awesome-tray-build-info () - (condition-case nil - (mapconcat 'identity (cl-remove-if #'(lambda (n) (equal (length n) 0)) - (mapcar 'awesome-tray-get-module-info awesome-tray-active-modules)) " ") - (format "Awesome Tray broken."))) - -(defun awesome-tray-get-module-info (module-name) - (let* ((func (ignore-errors (cadr (assoc module-name awesome-tray-module-alist)))) - (face-param (ignore-errors (caddr (assoc module-name awesome-tray-module-alist)))) - (face (cond ((functionp face-param) (funcall face-param)) - ((facep face-param) face-param) - (t nil))) - (raw-info (ignore-errors (funcall func))) - (info (ignore-errors (if face (propertize raw-info 'face face) raw-info)))) - (if func - (if info - info - (propertize "" 'face face)) - (propertize module-name 'face 'awesome-tray-default-face)))) - -(defun awesome-tray-module-git-info () - (if (executable-find "git") - (let ((current-seconds (awesome-tray-current-seconds))) - (if (> (- current-seconds awesome-tray-git-command-last-time) awesome-tray-git-update-duration) - (progn - (setq awesome-tray-git-command-last-time current-seconds) - (awesome-tray-update-git-command-cache)) - awesome-tray-git-command-cache)) - "")) - -(defun awesome-tray-module-circe-info () - "Display circe tracking buffers" - (if (listp tracking-mode-line-buffers) - (apply 'concat (cl-loop for entry in tracking-mode-line-buffers - collect (or (plist-get entry :propertize) ""))) - "")) - -(defun awesome-tray-module-rvm-info () - (if (executable-find "rvm-prompt") - (format "rvm:%s" (replace-regexp-in-string - "\n" "" - (nth 1 (awesome-tray-process-exit-code-and-output "rvm-prompt"))) - ) - "")) - -(defun awesome-tray-module-battery-info () - (let ((current-seconds (awesome-tray-current-seconds))) - (if (> (- current-seconds awesome-tray-battery-status-last-time) awesome-tray-battery-update-duration) - (let* ((battery-info (funcall battery-status-function)) - (battery-type (battery-format "%L" battery-info)) - battery-status) - (setq awesome-tray-battery-status-last-time current-seconds) - - ;; Short battery type. - (cond ((string-equal battery-type "on-line") - (setq battery-type "ON") - (setq battery-status (battery-format "-%p%%" battery-info))) - ((string-equal battery-type "off-line") - (setq battery-type "OFF") - (setq battery-status (battery-format "-%p%% %t" battery-info)))) - - ;; Update battery cache. - (setq awesome-tray-battery-status-cache (concat battery-type battery-status))) - awesome-tray-battery-status-cache))) - -(defun awesome-tray-module-mode-name-info () - (car (split-string (format "%s" major-mode) "-mode"))) - -(defun awesome-tray-module-location-info () - (format "%s:%s %s" - (format-mode-line "%l") - (format-mode-line "%c") - (format-mode-line "%p") - )) - -(defun awesome-tray-module-date-info () - (format-time-string "%m-%d %H:%M %a")) - -(defun awesome-tray-module-last-command-info () - (format "%s" last-command)) - -(defun awesome-tray-module-buffer-name-info () - (if awesome-tray-buffer-name-buffer-changed - (if (and (buffer-modified-p) - (not (eq buffer-file-name nil))) - (concat (buffer-name) awesome-tray-buffer-name-buffer-changed-style) - (buffer-name)) - (format "%s" (buffer-name)))) - -(defun awesome-tray-module-buffer-read-only-info () - (if (and (eq buffer-read-only t) - (not (eq buffer-file-name nil))) - (format "%s" awesome-tray-buffer-read-only-style))) - -(defun awesome-tray-module-input-method-info () - (if (eq current-input-method nil) - (format "%s" awesome-tray-input-method-en-style) - (format "%s" awesome-tray-input-method-zh-style))) - -(defun awesome-tray-module-parent-dir-info () - (format "%s" (file-name-nondirectory (directory-file-name default-directory)))) - -(defun awesome-tray-shrink-dir-name (name) - "Shrink NAME to be its first letter, or the first two if starts \".\" - -NAME is a string, typically a directory name." - (let ((dot-num (if (string-match "^\\.+" name) - (length (match-string 0 name)) - 0))) - (substring name 0 (min (length name) (+ dot-num awesome-tray-file-path-truncated-name-length))))) - -(defun awesome-tray-module-file-path-info () - (if (not buffer-file-name) - (format "%s" (buffer-name)) - (let* ((file-path (split-string (buffer-file-name) "/" t)) - (shown-path) - (path-len (length file-path)) - (modp (if (buffer-modified-p) "*" "")) - (full-num awesome-tray-file-path-full-dirname-levels) - (trunc-num awesome-tray-file-path-truncate-dirname-levels) - (show-name awesome-tray-file-path-show-filename)) - (when (> path-len (+ 1 full-num)) - (push (string-join - (mapcar #'awesome-tray-shrink-dir-name - (cl-subseq file-path - (max 0 (- path-len (+ 1 full-num trunc-num))) - (- path-len (1+ full-num)))) "/") - shown-path)) - (when (> path-len 1) - (push (string-join - (cl-subseq file-path - (max 0 (- path-len (1+ full-num))) - (1- path-len)) "/") - shown-path)) - (when show-name - (push (car (last file-path)) shown-path)) - (concat modp - (if (<= path-len (+ 1 full-num trunc-num)) - "/" - ".../") - (string-join (nreverse (cl-remove "" shown-path)) "/") - (when (and shown-path (not show-name)) "/"))))) - -(defun awesome-tray-module-awesome-tab-info () - (with-demoted-errors - "" - (if (featurep 'awesome-tab) - (let ((tab-info (format "%s" (cdr (awesome-tab-selected-tab (awesome-tab-current-tabset t)))))) - (if (> (string-width tab-info) 30) - "" - tab-info)) - ""))) - -(defun awesome-tray-module-evil-info () - (with-demoted-errors - "" - (if (featurep 'evil) - (let ((state - (cond ((evil-normal-state-p) "") - ((evil-emacs-state-p) "") - ((evil-insert-state-p) "") - ((evil-motion-state-p) "") - ((evil-visual-state-p) "") - ((evil-operator-state-p) "") - ((evil-replace-state-p) "") - (t "")))) - state) - ""))) - -(defun awesome-tray-show-info () - ;; Only flush tray info when current message is empty. - (unless (current-message) - (awesome-tray-flush-info))) - -(defun awesome-tray-get-frame-width () - "Only calculating a main Frame width, to avoid wrong width when new frame, such as `snails'." - (with-selected-frame (car (last (frame-list))) - (frame-width))) - -(defun awesome-tray-flush-info () - (let* ((tray-info (awesome-tray-build-info))) - (with-current-buffer " *Minibuf-0*" - (erase-buffer) - (insert (concat (make-string (max 0 (- (awesome-tray-get-frame-width) (string-width tray-info) awesome-tray-info-padding-right)) ?\ ) tray-info))))) - -(defun awesome-tray-get-echo-format-string (message-string) - (let* ((tray-info (awesome-tray-build-info)) - (blank-length (- (awesome-tray-get-frame-width) (string-width tray-info) (string-width message-string) awesome-tray-info-padding-right)) - (empty-fill-string (make-string (max 0 (- (awesome-tray-get-frame-width) (string-width tray-info) awesome-tray-info-padding-right)) ?\ )) - (message-fill-string (make-string (max 0 (- (awesome-tray-get-frame-width) (string-width message-string) (string-width tray-info) awesome-tray-info-padding-right)) ?\ ))) - (prog1 - (cond - ;; Fill message's end with whitespace to keep tray info at right of minibuffer. - ((> blank-length 0) - (concat message-string message-fill-string tray-info)) - ;; Fill empty whitespace if new message contain duplicate tray-info (cause by move mouse on minibuffer window). - ((and awesome-tray-last-tray-info - message-string - (string-suffix-p awesome-tray-last-tray-info message-string)) - (concat empty-fill-string tray-info)) - ;; Don't fill whitepsace at end of message if new message is very long. - (t - (concat message-string "\n" empty-fill-string tray-info))) - ;; Record last tray information. - (setq awesome-tray-last-tray-info tray-info)))) - -(defun awesome-tray-process-exit-code-and-output (program &rest args) - "Run PROGRAM with ARGS and return the exit code and output in a list." - (with-temp-buffer - (list (apply 'call-process program nil (current-buffer) nil args) - (buffer-string)))) - -(defun awesome-tray-current-seconds () - (string-to-number (format-time-string "%s"))) - -(defun awesome-tray-update-git-command-cache () - (let* ((git-info (awesome-tray-process-exit-code-and-output "git" "symbolic-ref" "--short" "HEAD")) - (status (nth 0 git-info)) - (result (format "git:%s" (nth 1 git-info)))) - (setq awesome-tray-git-command-cache - (if (equal status 0) - (replace-regexp-in-string "\n" "" result) - "")) - awesome-tray-git-command-cache)) - -;; Wrap `message' make tray information visible always -;; even other plugins call `message' to flush minibufer. -(defun awesome-tray-message-advice (old-message &rest arguments) - (if (ignore-errors - (cond - ;; Don't wrap tray info if `awesome-tray-active-p' is nil. - ((not awesome-tray-active-p) - (apply old-message arguments)) - - ;; Don't wrap awesome-tray info if variable `inhibit-message' is non-nil. - (inhibit-message - (apply old-message arguments)) - - ;; Just flush tray info if message string is empty. - ((not (car arguments)) - (apply old-message arguments) - (awesome-tray-flush-info)) - - ;; Otherwise, wrap message string with tray info and show it in echo area, - ;; logging origin message at `*Messages*' buffer if allowed. - (t - (if message-log-max - (let ((inhibit-message t)) - (apply old-message arguments))) - (let ((message-log-max nil)) - (apply old-message "%s" (cons (awesome-tray-get-echo-format-string (apply 'format arguments)) '()))))) - - ;; Return t if everything is okay. - t) - ;; Return origin message string. if not, `message' function will always return `nil'. - (if (car arguments) - (apply 'format arguments)) - (apply old-message arguments))) - -(advice-add #'message :around #'awesome-tray-message-advice) - -(defun awesome-tray-current-message-advice (old-func &rest arguments) - (let ((message-string (apply old-func arguments))) - (if (and message-string awesome-tray-last-tray-info) - (string-trim-right (replace-regexp-in-string awesome-tray-last-tray-info "" message-string)) - message-string))) - -(advice-add #'current-message :around #'awesome-tray-current-message-advice) - -(defun awesome-tray-end-of-buffer-advice (old-func &rest arguments) - (apply old-func arguments) - (message "")) - -(advice-add #'end-of-buffer :around #'awesome-tray-end-of-buffer-advice) - -(defun awesome-tray-beginning-of-buffer-advice (old-func &rest arguments) - (apply old-func arguments) - (message "")) - -(advice-add #'beginning-of-buffer :around #'awesome-tray-beginning-of-buffer-advice) - -(provide 'awesome-tray) - -;;; awesome-tray.el ends here diff --git a/lisp/versions b/lisp/versions index 4bad59a2..2c684a94 100644 --- a/lisp/versions +++ b/lisp/versions @@ -1,125 +1,125 @@ # -*- mode: org -*- -| package | | current Version | Package-Version | previous Version | Package-Version | | -|----------------------------+-----------+-----------------+-----------------+------------------+-----------------+------------------------------------------------------------------------------------| -| ace-window.el | [[https://melpa.org/#/ace-window][melpa]] | 0.10.0 | 20200606.1259 | 0.9.0 | - | | -| adaptive-wrap | [[https://melpa.org/#/ace-window][elpa]] | 0.8 | - | 0.7 | - | required by virtual-auto-fill | -| all-the-icons | [[https://melpa.org/#/all-the-icons][melpa]] | 5.0.0 | 20211225.506 | 4.0.0 | 20210106.1227 | required by dashboard, requires memoize, run M-x all-the-icons-install-fonts | -| amx.el | [[https://melpa.org/#/amx][melpa]] | 3.4 | 20210305.118 | 3.3 | 20210101.1921 | requires ivy or ido, imporves M-x saving history, etc. | -| anaconda-mode | [[https://melpa.org/#/anaconda-mode][melpa]] | 0.1.15 | 20211122.817 | 0.1.13 | 20200912.239 | | -| async | [[https://melpa.org/#/async][melpa]] | 1.9.5 | 20210823.528 | 1.9.4 | 20200809.501 | required by ob-async | -| avy.el | [[https://melpa.org/#/avy][melpa]] | 0.5.0 | 20220102.805 | 0.5.0 | 20201226.1734 | required by org-ref | -| awesome-tray.el | [[https://github.com/manateelazycat/awesome-tray][GitHub]] | 4.2 | 20211129.311 | 4.2 | 20200618.2102 | modeline in echo area | -| biblio | [[https://melpa.org/#/biblio][melpa]] | 0.2 | 20210418.406 | 0.2 | 20200416.1407 | required by bibtex-completion | -| biblio-core.el | [[https://melpa.org/#/biblio-core][melpa]] | 0.2.1 | 20210418.406 | 0.2.1 | 20200416.307 | required by biblio | -| bibtex-completion.el | [[https://melpa.org/#/bibtex-completion][melpa]] | 1.0.0 | 20211019.1306 | 1.0.0 | 20200908.1017 | required by ivy-bibtex, org-ref | -| bind-key.el | [[https://melpa.org/#/bind-key][melpa]] | 2.4 | 20210210.1609 | 2.4 | 20200805.1727 | required by use-package | -| cl-libify.el | [[https://melpa.org/#/cl-libify][melpa]] | 0 | 20181130.230 | | | prevent: Package cl is deprecated | -| citeproc | [[https://melpa.org/#/citeproc][melpa]] | 0.9 | 20220101.1527 | | | | -| company | [[https://melpa.org/#/company][melpa]] | 0.9.13 | 20220103.351 | 0.9.13 | 20210103.1124 | completion framework | -| company-anaconda.el | [[https://melpa.org/#/company-anaconda][melpa]] | 0.2.0 | 20200404.1859 | 0.2.0 | 20181025.1305 | | -| company-ledger.el | [[https://melpa.org/#/company-ledger][melpa]] | 0.1.0 | 20210910.250 | 0.1.0 | 20200726.1825 | | -| company-quickhelp.el | [[https://melpa.org/#/company-quickhelp][melpa]] | 2.2.0 | 20211115.1335 | 2.2.0 | 20201208.2308 | | -| company-web | [[https://melpa.org/#/company-web][melpa]] | 2.1 | 20180402.1155 | | | requires cl-lib company dash web-completion-data | -| counsel.el | [[https://melpa.org/#/counsel][melpa]] | 0.13.4 | 20211230.1909 | 0.13.0 | 20201227.1327 | | -| crdt.el | [[https://code.librehq.com/qhong/crdt.el/][librehq]] | 0.2.7 | 2021.12.06 | 0.0.0 | 2020.12.28 | Collaborative editing using Conflict-free Replicated Data Types | -| ctable.el | [[https://melpa.org/#/ctable][melpa]] | 0.1.3 | 20210128.629 | 0.1.2 | 20171006.11 | | -| dash | [[https://melpa.org/#/dash][melpa]] | 2.19.1 | 20210826.1149 | 2.17.0 | 20210106.2158 | | -| dashboard | [[https://melpa.org/#/dashboard][melpa]] | 1.8.0-SNAPSHOT | 20211221.2005 | 1.8.0-SNAPSHOT | 20210104.1605 | requires page-break-lines, (all-the-icons) | -| deft.el | [[https://melpa.org/#/deft][melpa]] | 0.8 | 20210707.1633 | 0.8 | 20210101.1519 | | -| delight.el | [[https://elpa.gnu.org/packages/delight.html][elpa]] | 1.7 | - | | | mode-line | -| dialog.el | [[https://www.emacswiki.org/emacs/Dialog][emacswiki]] | 0.2 | 2019.10.10 | | | | -| diff-hl | [[https://melpa.org/#/diff-hl][melpa]] | 1.8.8 | 20211106.2353 | 1.8.8 | 20210107.220 | | -| dim.el | [[https://melpa.org/#/dim][melpa]] | 0.1 | 20160818.949 | | | mode-line | -| elisp-refs | [[https://melpa.org/#/elisp-refs][melpa]] | 1.4 | 20211009.1531 | | | required by helpful | -| emojify | [[https://melpa.org/#/emojify][melpa]] | 1.2.1 | 20210108.1111 | 1.2.1 | 20201130.1116 | | -| ess | [[https://melpa.org/#/ess][melpa]] | 18.10.3snapshot | 20211231.1746 | 18.10.3snapshot | 20210106.1141 | | -| ess-R-data-view.el | [[https://melpa.org/#/ess-R-data-view][melpa]] | 0.1 | 20130509.1158 | | | | -| f.el | [[https://melpa.org/#/f][melpa]] | 0.20.0 | 20210624.1103 | 0.20.0 | 20191110.1357 | required by org-ref | -| flycheck | [[https://melpa.org/#/flycheck][melpa]] | 32-cvs | 20210825.1804 | 32-cvs | 20201228.2104 | | -| flycheck-ledger.el | [[https://melpa.org/#/flycheck-ledger][melpa]] | DEV | 20200304.2204 | DEV | 20180819.321 | | -| flycheck-pos-tip.el | [[https://melpa.org/#/flycheck-pos-tip][melpa]] | 0.4-cvs | 20200516.1600 | 0.4-cvs | 20180610.1615 | | -| flyspell-correct | [[https://melpa.org/#/flyspell-correct][melpa]] | 0.6.1 | 20210724.1042 | | | required by flyspell-correct-ivy | -| flyspell-correct-ivy.el | [[https://melpa.org/#/flyspell-correct-ivy][melpa]] | 0.6.1 | 20210124.1143 | | | | -| focus | [[https://melpa.org/#/focus][melpa]] | 1.0.0 | 20191209.2210 | | | | -| git-commit | [[https://melpa.org/#/git-commit][melpa]] | - | 20201222.1527 | - | 20200608.928 | required by magit | -| git-messenger.el | [[https://melpa.org/#/git-messenger][melpa]] | 0.18 | 20201202.1637 | 0.18 | 20200321.2337 | | -| gnuplot | [[https://melpa.org/#/gnuplot][melpa]] | 0.8.0 | 20220102.1637 | 0.8.0 | 20210104.1052 | | -| gnuplot-mode.el | [[https://melpa.org/#/gnuplot-mode][melpa]] | 1.2.0 | 20171013.1616 | | | | -| helpful.el | [[https://melpa.org/#/elisp-refs][melpa]] | 0.19 | 20211226.1843 | | | better *Help* | -| ht.el | [[https://melpa.org/#/ht][melpa]] | 2.4 | 20210119.741 | 2.3 | 20201119.518 | hash table library | -| htmlize.el | [[https://melpa.org/#/htmlize][melpa]] | 1.57 | 20210825.2150 | 1.56 | 20200816.746 | required by org-ref | -| hydra | [[https://melpa.org/#/hydra][melpa]] | 0.15.0 | 20220102.803 | 0.15.0 | 20201115.1055 | required by org-ref | -| indent-guide.el | [[https://melpa.org/#/indent-guide][melpa]] | 2.3.1 | 20210115.400 | 2.3.1 | 20191106.240 | | -| iscroll.el | [[https://melpa.org/#/iscroll][melpa]] | 1.0.0 | 20210128.1938 | | | | -| ivy | [[https://melpa.org/#/ivy][melpa]] | 0.13.4 | 20211231.1730 | 0.13.0 | 20210105.2002 | | -| ivy-bibtex | [[https://melpa.org/#/ivy-bibtex][melpa]] | 1.0.1 | 20210927.1205 | 1.0.1 | 20201014.803 | | -| ivy-rich | [[https://melpa.org/#/ivy-rich][melpa]] | 0.1.6 | 20210409.931 | | | | -| js2-mode | [[https://melpa.org/#/js2-mode][melpa]] | 20211229 | 20211229.135 | 20201220 | 20201220.1718 | | -| key-chord.el | [[https://melpa.org/#/key-chord][melpa]] | 0.6 | 20201222.2030 | | | required by org-ref | -| langtool | [[https://melpa.org/#/langtool][melpa]] | 2.2.1 | 20200529.230 | | | | -| ledger-mode | [[https://melpa.org/#/ledger-mode][melpa]] | 4.0.0 | 20211214.1449 | 4.0.0 | 20210106.227 | | -| lv | [[https://melpa.org/#/lv][melpa]] | - | 20200507.1518 | | | required by hydra | -| magit | [[https://melpa.org/#/magit][melpa]] | 3.3.0 | 20220126.1645 | 3.0.0 | 20210105.1030 | IMPORTANT do not delete and change in magit-version.el the version, see also below | -| magit-section | [[https://melpa.org/#/magit-section][melpa]] | 3.3.0 | 20220101.841 | | | required by magit | -| markdown-mode.el | [[https://melpa.org/#/markdown-mode][melpa]] | 2.5-dev | 20211022.55 | 2.5-dev | 20210107.101 | | -| memoize.el | [[https://melpa.org/#/memoize][melpa]] | 1.1 | 20200103.2036 | | | required by all-the-icons | -| mu4e-maildirs-extension.el | [[https://melpa.org/#/mu4e-maildirs-extension][melpa]] | 0.1 | 20201028.921 | 0.1 | 20200508.712 | | -| multiple-cursors | [[https://melpa.org/#/multiple-cursors][melpa]] | 1.4.0 | 20211112.2223 | 1.4.0 | 20201215.1559 | | -| ob-async.el | [[https://melpa.org/#/ob-async][melpa]] | 0.1 | 20210428.2052 | 0.1 | 20190916.1537 | | -| org | [[https://elpa.gnu.org/packages/org.html][elpa]] | 9.5.2 | - | 9.4.4 | - | | -| org-appear.el | [[https://melpa.org/#/org-appear][melpa]] | 0.2.4 | 20211202.604 | | | | -| org-brain.el | [[https://melpa.org/#/org-brain][melpa]] | 0.94 | 20210706.1519 | 0.94 | 20201214.822 | | -| org-contrib | [[https://elpa.nongnu.org/nongnu/org-contrib.html][elpa]] | 0.3 | - | | | | -| org-cliplink | [[https://melpa.org/#/org-cliplink][melpa]] | 0.2 | 20201126.1020 | | 20190608.2134 | | -| org-drill | [[https://melpa.org/#/org-drill][melpa]] | 2.7.0 | 20210427.2003 | 2.7.0 | 20200412.1812 | (alternatives anki-mode, anki-editor) | -| org-fancy-priorities.el | [[https://melpa.org/#/org-fancy-priorities][melpa]] | 1.1 | 20210830.1657 | 1.1 | 20180328.2331 | | -| org-fragtog | [[https://github.com/io12/org-fragtog][melpa]] | 0.4.0 | 20220106.758 | | | | -| org-ref | [[https://melpa.org/#/org-ref][mepla]] | 3.0 | 20220101.1941 | 1.1.1 | 20210108.1415 | uses ivy key-chord | -| org-sticky-header.el | [[https://melpa.org/#/org-sticky-header][melpa]] | 1.1 | 20201223.143 | 1.1-pre | 20191117.549 | instead of org-bullets.el (last version used 20200317.1740) | -| org-superstar.el | [[https://melpa.org/#/org-superstar][melpa]] | 1.5.1 | 20210915.1934 | 1.4.0 | 20200818.2257 | | -| org-table-sticky-header.el | [[https://melpa.org/#/org-table-sticky-header][melpa]] | 0.1.0 | 20190924.506 | | | (alternative orgtbl-show-header) | -| orgit.el | [[https://melpa.org/#/orgit][mepla]] | 1.6.0 | 20210620.1943 | 1.6.0 | 20200714.1943 | | -| ov.el | [[https://melpa.org/#/ov][melpa]] | 1.0.6 | 20200326.1042 | | | | -| ox-reveal.el | [[https://melpa.org/#/ox-reveal][melpa]] | 1.0 | 20220410.1533 | 1.0 | 20211128.1509 | requires https://github.com/hakimel/reveal.js | -| ox-tufte.el | [[https://melpa.org/#/ox-tufte][melpa]] | 1.0.0 | 20160926.1607 | | | | -| page-break-lines.el | [[https://melpa.org/#/page-break-lines][melpa]] | 0 | 20210104.2224 | 0 | 20200305.244 | required by dashboard | -| parsebib.el | [[https://melpa.org/#/parsebib][melpa]] | 3.0 | 20211208.2335 | 2.3 | 20200513.2352 | required by org-ref | -| pdf-tools | [[https://melpa.org/#/pdf-tools][melpa]] | 1.0.0snapshot | 20220103.308 | 1.0 | 20200512.1524 | | -| persist | [[https://elpa.gnu.org/packages/persist.html][elpa]] | 0.4 | - | | | required by org-drill | -| pfuture.el | [[https://melpa.org/#/pfuture][melpa]] | 1.10.2 | 20211229.1513 | 1.9 | 20200425.1357 | | -| php-mode | [[https://melpa.org/#/php-mode][mepla]] | 1.24.0 | 20210808.1745 | 1.23.0 | 20210103.1738 | | -| plantuml-mode.el | [[https://melpa.org/#/plantuml-mode][melpa]] | 1.2.9 | 20191102.2056 | 1.2.9 | 20190905.838 | | -| polymode | [[https://melpa.org/#/polymode][melpa]] | 0.2.2 | 20211124.913 | 0.2.2 | 20200606.1106 | | -| popup.el | [[https://melpa.org/#/popup][melpa]] | 0.5.9 | 20211231.1823 | 0.5.8 | 20200610.317 | | -| popwin.el | [[https://melpa.org/#/popwin][melpa]] | 1.0.2 | 20210215.1849 | 1.0.2 | 20200908.816 | | -| pos-tip.el | [[https://melpa.org/#/pos-tip][melpa]] | 0.4.6 | 20191227.1356 | 0.4.6 | 20150318.1513 | | -| powershell.el | [[https://melpa.org/#/powershell][melpa]] | 0.3 | 20220103.925 | 0.3 | 20201005.1642 | | -| pythonic.el | [[https://melpa.org/#/pythonic][melpa]] | 0.2 | 20210122.1247 | 0.1.1 | 20200806.434 | | -| queue.el | [[https://elpa.gnu.org/packages/queue.html][elpa]] | 0.2 | - | | | required by citeproc | -| rainbow-mode.el | [[https://elpa.gnu.org/packages/rainbow-mode.html][elpa]] | 1.0.5 | - | 1.0.4 | - | | -| restart-emacs.el | [[https://melpa.org/#/restart-emacs][melpa]] | 0.1.1 | 20201127.1425 | 0.1.1 | 20180601.1031 | | -| s.el | [[https://melpa.org/#/s][melpa]] | 1.12.0 | 20210616.619 | 1.12.0 | 20180406.808 | required by emacs-application-framework, org-ref | -| spacemancs-theme | [[https://melpa.org/#/spacemacs-theme][melpa]] | 0.1 | 20210924.1220 | 0.1 | 20200825.1818 | | -| sphinx-doc.el | [[https://melpa.org/#/sphinx-doc][melpa]] | 0.3.0 | 20210213.1250 | 0.3.0 | 20160116.1117 | | -| sql-indent | [[https://elpa.gnu.org/packages/sql-indent.html][elpa]] | 1.6 | - | 1.5 | - | | -| srefactor | [[https://melpa.org/#/srefactor][melpa]] | 0.3 | 20180703.1810 | | | | -| stickyfunc-enhance.el | [[https://melpa.org/#/stickyfunc-enhance][melpa]] | 0.1 | 20150429.1814 | | | | -| string-inflection.el | [[https://melpa.org/#/string-inflection][melpa]] | 1.0.16 | 20210918.419 | | | required by citeproc | -| swiper.el | [[https://melpa.org/#/swiper][melpa]] | 0.13.4 | 20210919.1221 | 0.13.0 | 20201208.1419 | | -| systemd | [[https://melpa.org/#/systemd][melpa]] | 1.6 | 20210209.2052 | | 20191219.2304 | | -| transient | [[https://melpa.org/#/transient][melpa]] | 0.3.7 | 20220104.1601 | 0.2.0 | 20210103.1546 | | -| treemacs | [[https://melpa.org/#/treemacs][melpa]] | 2.9.5 | 20220104.1302 | 2.8 | 20210107.1251 | | -| treemacs-magit.el | [[https://melpa.org/#/treemacs-magit][melpa]] | 0 | 20211010.1005 | 0 | 20201025.957 | | -| use-package | [[https://melpa.org/#/use-package][melpa]] | 2.4.1 | 20210207.1926 | 2.4.1 | 20210106.2145 | | -| virtual-auto-fill | [[https://melpa.org/#/virtual-auto-fill][melpa]] | 0.1 | 20200906.2038 | 0.1 | 20200217.2333 | requires visual-line-mode (builtin) adaptive-wrap visual-fill-column | -| visual-fill-column | [[https://melpa.org/#/visual-fill-column][melpa]] | 2.4 | 20211118.33 | 2.2 | 20201229.2303 | best with visual-line-mode, required by virtual-auto-fill | -| vterm | [[https://melpa.org/#/vterm][melpa]] | 0.0.1 | 20211226.817 | | | | -| web-completion-data | [[https://melpa.org/#/web-completion-data][melpa]] | 0.2 | 20160318.848 | | | required by company-web | -| web-mode.el | [[https://melpa.org/#/web-mode][melpa]] | 17.0.4 | 20220104.1504 | 17.0.4 | 20201227.1048 | | -| which-key.el | [[https://melpa.org/#/which-key][melpa]] | 3.5.1 | 20220102.1433 | 3.5.0 | 20201216.1720 | | -| with-editor | [[https://melpa.org/#/with-editor][melpa]] | 3.0.5 | 20220101.1316 | 2.9.4 | 20201030.1232 | | -| yasnippet.el | [[https://melpa.org/#/yasnippet][melpa]] | 0.14.0 | 20200604.246 | 0.14.0 | 20200524.2215 | | -| yasnippet-snippets | [[https://melpa.org/#/yasnippet-snippets][melpa]] | 1.0 | 20210910.1959 | 0.2 | 20200606.1149 | exlude some snippets, see below | +| package | | current Version | Package-Version | previous Version | Package-Version | | +|----------------------------+-------------+-----------------+-----------------+------------------+-----------------+------------------------------------------------------------------------------------| +| ace-window.el | [[https://melpa.org/#/ace-window][melpa]] | 0.10.0 | 20200606.1259 | 0.9.0 | - | | +| adaptive-wrap | [[https://melpa.org/#/ace-window][elpa]] | 0.8 | - | 0.7 | - | required by virtual-auto-fill | +| all-the-icons | [[https://melpa.org/#/all-the-icons][melpa]] | 5.0.0 | 20211225.506 | 4.0.0 | 20210106.1227 | required by dashboard, requires memoize, run M-x all-the-icons-install-fonts | +| amx.el | [[https://melpa.org/#/amx][melpa]] | 3.4 | 20210305.118 | 3.3 | 20210101.1921 | requires ivy or ido, imporves M-x saving history, etc. | +| anaconda-mode | [[https://melpa.org/#/anaconda-mode][melpa]] | 0.1.15 | 20211122.817 | 0.1.13 | 20200912.239 | | +| async | [[https://melpa.org/#/async][melpa]] | 1.9.5 | 20210823.528 | 1.9.4 | 20200809.501 | required by ob-async | +| avy.el | [[https://melpa.org/#/avy][melpa]] | 0.5.0 | 20220102.805 | 0.5.0 | 20201226.1734 | required by org-ref | +| awesome-tray.el | [[https://github.com/manateelazycat/awesome-tray][GitHub]] | 4.2 | 20211129.311 | 4.2 | 20200618.2102 | modeline in echo area | +| biblio | [[https://melpa.org/#/biblio][melpa]] | 0.2 | 20210418.406 | 0.2 | 20200416.1407 | required by bibtex-completion | +| biblio-core.el | [[https://melpa.org/#/biblio-core][melpa]] | 0.2.1 | 20210418.406 | 0.2.1 | 20200416.307 | required by biblio | +| bibtex-completion.el | [[https://melpa.org/#/bibtex-completion][melpa]] | 1.0.0 | 20211019.1306 | 1.0.0 | 20200908.1017 | required by ivy-bibtex, org-ref | +| bind-key.el | [[https://melpa.org/#/bind-key][melpa]] | 2.4 | 20210210.1609 | 2.4 | 20200805.1727 | required by use-package | +| cl-libify.el | [[https://melpa.org/#/cl-libify][melpa]] | 0 | 20181130.230 | | | prevent: Package cl is deprecated | +| citeproc | [[https://melpa.org/#/citeproc][melpa]] | 0.9 | 20220101.1527 | | | | +| company | [[https://melpa.org/#/company][melpa]] | 0.9.13 | 20220103.351 | 0.9.13 | 20210103.1124 | completion framework | +| company-anaconda.el | [[https://melpa.org/#/company-anaconda][melpa]] | 0.2.0 | 20200404.1859 | 0.2.0 | 20181025.1305 | | +| company-ledger.el | [[https://melpa.org/#/company-ledger][melpa]] | 0.1.0 | 20210910.250 | 0.1.0 | 20200726.1825 | | +| company-quickhelp.el | [[https://melpa.org/#/company-quickhelp][melpa]] | 2.2.0 | 20211115.1335 | 2.2.0 | 20201208.2308 | | +| company-web | [[https://melpa.org/#/company-web][melpa]] | 2.1 | 20180402.1155 | | | requires cl-lib company dash web-completion-data | +| counsel.el | [[https://melpa.org/#/counsel][melpa]] | 0.13.4 | 20211230.1909 | 0.13.0 | 20201227.1327 | | +| crdt.el | [[https://code.librehq.com/qhong/crdt.el/][librehq]] | 0.2.7 | 2021.12.06 | 0.0.0 | 2020.12.28 | Collaborative editing using Conflict-free Replicated Data Types | +| ctable.el | [[https://melpa.org/#/ctable][melpa]] | 0.1.3 | 20210128.629 | 0.1.2 | 20171006.11 | | +| dash | [[https://melpa.org/#/dash][melpa]] | 2.19.1 | 20210826.1149 | 2.17.0 | 20210106.2158 | | +| dashboard | [[https://melpa.org/#/dashboard][melpa]] | 1.8.0-SNAPSHOT | 20211221.2005 | 1.8.0-SNAPSHOT | 20210104.1605 | requires page-break-lines, (all-the-icons) | +| deft.el | [[https://melpa.org/#/deft][melpa]] | 0.8 | 20210707.1633 | 0.8 | 20210101.1519 | | +| delight.el | [[https://elpa.gnu.org/packages/delight.html][elpa]] | 1.7 | - | | | mode-line | +| dialog.el | [[https://www.emacswiki.org/emacs/Dialog][emacswiki]] | 0.2 | 2019.10.10 | | | | +| diff-hl | [[https://melpa.org/#/diff-hl][melpa]] | 1.8.8 | 20211106.2353 | 1.8.8 | 20210107.220 | | +| dim.el | [[https://melpa.org/#/dim][melpa]] | 0.1 | 20160818.949 | | | mode-line | +| elisp-refs | [[https://melpa.org/#/elisp-refs][melpa]] | 1.4 | 20211009.1531 | | | required by helpful | +| emojify | [[https://melpa.org/#/emojify][melpa]] | 1.2.1 | 20210108.1111 | 1.2.1 | 20201130.1116 | | +| ess | [[https://melpa.org/#/ess][melpa]] | 18.10.3snapshot | 20211231.1746 | 18.10.3snapshot | 20210106.1141 | | +| ess-R-data-view.el | [[https://melpa.org/#/ess-R-data-view][melpa]] | 0.1 | 20130509.1158 | | | | +| f.el | [[https://melpa.org/#/f][melpa]] | 0.20.0 | 20210624.1103 | 0.20.0 | 20191110.1357 | required by org-ref | +| flycheck | [[https://melpa.org/#/flycheck][melpa]] | 32-cvs | 20210825.1804 | 32-cvs | 20201228.2104 | | +| flycheck-ledger.el | [[https://melpa.org/#/flycheck-ledger][melpa]] | DEV | 20200304.2204 | DEV | 20180819.321 | | +| flycheck-pos-tip.el | [[https://melpa.org/#/flycheck-pos-tip][melpa]] | 0.4-cvs | 20200516.1600 | 0.4-cvs | 20180610.1615 | | +| flyspell-correct | [[https://melpa.org/#/flyspell-correct][melpa]] | 0.6.1 | 20210724.1042 | | | required by flyspell-correct-ivy | +| flyspell-correct-ivy.el | [[https://melpa.org/#/flyspell-correct-ivy][melpa]] | 0.6.1 | 20210124.1143 | | | | +| focus | [[https://melpa.org/#/focus][melpa]] | 1.0.0 | 20191209.2210 | | | | +| git-commit | [[https://melpa.org/#/git-commit][melpa]] | - | 20201222.1527 | - | 20200608.928 | required by magit | +| git-messenger.el | [[https://melpa.org/#/git-messenger][melpa]] | 0.18 | 20201202.1637 | 0.18 | 20200321.2337 | | +| gnuplot | [[https://melpa.org/#/gnuplot][melpa]] | 0.8.0 | 20220102.1637 | 0.8.0 | 20210104.1052 | | +| gnuplot-mode.el | [[https://melpa.org/#/gnuplot-mode][melpa]] | 1.2.0 | 20171013.1616 | | | | +| helpful.el | [[https://melpa.org/#/elisp-refs][melpa]] | 0.19 | 20211226.1843 | | | better *Help* | +| ht.el | [[https://melpa.org/#/ht][melpa]] | 2.4 | 20210119.741 | 2.3 | 20201119.518 | hash table library | +| htmlize.el | [[https://melpa.org/#/htmlize][melpa]] | 1.57 | 20210825.2150 | 1.56 | 20200816.746 | required by org-ref | +| hydra | [[https://melpa.org/#/hydra][melpa]] | 0.15.0 | 20220102.803 | 0.15.0 | 20201115.1055 | required by org-ref | +| indent-guide.el | [[https://melpa.org/#/indent-guide][melpa]] | 2.3.1 | 20210115.400 | 2.3.1 | 20191106.240 | | +| iscroll.el | [[https://melpa.org/#/iscroll][melpa]] | 1.0.0 | 20210128.1938 | | | | +| ivy | [[https://melpa.org/#/ivy][melpa]] | 0.13.4 | 20211231.1730 | 0.13.0 | 20210105.2002 | | +| ivy-bibtex | [[https://melpa.org/#/ivy-bibtex][melpa]] | 1.0.1 | 20210927.1205 | 1.0.1 | 20201014.803 | | +| ivy-rich | [[https://melpa.org/#/ivy-rich][melpa]] | 0.1.6 | 20210409.931 | | | | +| js2-mode | [[https://melpa.org/#/js2-mode][melpa]] | 20211229 | 20211229.135 | 20201220 | 20201220.1718 | | +| key-chord.el | [[https://melpa.org/#/key-chord][melpa]] | 0.6 | 20201222.2030 | | | required by org-ref | +| langtool | [[https://melpa.org/#/langtool][melpa]] | 2.2.1 | 20200529.230 | | | | +| ledger-mode | [[https://melpa.org/#/ledger-mode][melpa]] | 4.0.0 | 20211214.1449 | 4.0.0 | 20210106.227 | | +| lv | [[https://melpa.org/#/lv][melpa]] | - | 20200507.1518 | | | required by hydra | +| magit | [[https://melpa.org/#/magit][melpa]] | 3.3.0 | 20220126.1645 | 3.0.0 | 20210105.1030 | IMPORTANT do not delete and change in magit-version.el the version, see also below | +| magit-section | [[https://melpa.org/#/magit-section][melpa]] | 3.3.0 | 20220101.841 | | | required by magit | +| markdown-mode.el | [[https://melpa.org/#/markdown-mode][melpa]] | 2.5-dev | 20211022.55 | 2.5-dev | 20210107.101 | | +| memoize.el | [[https://melpa.org/#/memoize][melpa]] | 1.1 | 20200103.2036 | | | required by all-the-icons | +| mu4e-maildirs-extension.el | [[https://melpa.org/#/mu4e-maildirs-extension][melpa]] | 0.1 | 20201028.921 | 0.1 | 20200508.712 | | +| multiple-cursors | [[https://melpa.org/#/multiple-cursors][melpa]] | 1.4.0 | 20211112.2223 | 1.4.0 | 20201215.1559 | | +| ob-async.el | [[https://melpa.org/#/ob-async][melpa]] | 0.1 | 20210428.2052 | 0.1 | 20190916.1537 | | +| org | [[https://elpa.gnu.org/packages/org.html][elpa]] | 9.5.2 | - | 9.4.4 | - | | +| org-appear.el | [[https://melpa.org/#/org-appear][melpa]] | 0.2.4 | 20211202.604 | | | | +| org-brain.el | [[https://melpa.org/#/org-brain][melpa]] | 0.94 | 20210706.1519 | 0.94 | 20201214.822 | | +| org-contrib | [[https://elpa.nongnu.org/nongnu/org-contrib.html][elpa-nongnu]] | 0.3 | - | | | | +| org-cliplink | [[https://melpa.org/#/org-cliplink][melpa]] | 0.2 | 20201126.1020 | | 20190608.2134 | | +| org-drill | [[https://melpa.org/#/org-drill][melpa]] | 2.7.0 | 20210427.2003 | 2.7.0 | 20200412.1812 | (alternatives anki-mode, anki-editor) | +| org-fancy-priorities.el | [[https://melpa.org/#/org-fancy-priorities][melpa]] | 1.1 | 20210830.1657 | 1.1 | 20180328.2331 | | +| org-fragtog | [[https://github.com/io12/org-fragtog][melpa]] | 0.4.0 | 20220106.758 | | | | +| org-ref | [[https://melpa.org/#/org-ref][mepla]] | 3.0 | 20220101.1941 | 1.1.1 | 20210108.1415 | uses ivy key-chord | +| org-sticky-header.el | [[https://melpa.org/#/org-sticky-header][melpa]] | 1.1 | 20201223.143 | 1.1-pre | 20191117.549 | instead of org-bullets.el (last version used 20200317.1740) | +| org-superstar.el | [[https://melpa.org/#/org-superstar][melpa]] | 1.5.1 | 20210915.1934 | 1.4.0 | 20200818.2257 | | +| org-table-sticky-header.el | [[https://melpa.org/#/org-table-sticky-header][melpa]] | 0.1.0 | 20190924.506 | | | (alternative orgtbl-show-header) | +| orgit.el | [[https://melpa.org/#/orgit][mepla]] | 1.6.0 | 20210620.1943 | 1.6.0 | 20200714.1943 | | +| ov.el | [[https://melpa.org/#/ov][melpa]] | 1.0.6 | 20200326.1042 | | | | +| ox-reveal.el | [[https://melpa.org/#/ox-reveal][melpa]] | 1.0 | 20220410.1533 | 1.0 | 20211128.1509 | requires https://github.com/hakimel/reveal.js | +| ox-tufte.el | [[https://melpa.org/#/ox-tufte][melpa]] | 1.0.0 | 20160926.1607 | | | | +| page-break-lines.el | [[https://melpa.org/#/page-break-lines][melpa]] | 0 | 20210104.2224 | 0 | 20200305.244 | required by dashboard | +| parsebib.el | [[https://melpa.org/#/parsebib][melpa]] | 3.0 | 20211208.2335 | 2.3 | 20200513.2352 | required by org-ref | +| pdf-tools | [[https://melpa.org/#/pdf-tools][melpa]] | 1.0.0snapshot | 20220103.308 | 1.0 | 20200512.1524 | | +| persist | [[https://elpa.gnu.org/packages/persist.html][elpa]] | 0.4 | - | | | required by org-drill | +| pfuture.el | [[https://melpa.org/#/pfuture][melpa]] | 1.10.2 | 20211229.1513 | 1.9 | 20200425.1357 | | +| php-mode | [[https://melpa.org/#/php-mode][mepla]] | 1.24.0 | 20210808.1745 | 1.23.0 | 20210103.1738 | | +| plantuml-mode.el | [[https://melpa.org/#/plantuml-mode][melpa]] | 1.2.9 | 20191102.2056 | 1.2.9 | 20190905.838 | | +| polymode | [[https://melpa.org/#/polymode][melpa]] | 0.2.2 | 20211124.913 | 0.2.2 | 20200606.1106 | | +| popup.el | [[https://melpa.org/#/popup][melpa]] | 0.5.9 | 20211231.1823 | 0.5.8 | 20200610.317 | | +| popwin.el | [[https://melpa.org/#/popwin][melpa]] | 1.0.2 | 20210215.1849 | 1.0.2 | 20200908.816 | | +| pos-tip.el | [[https://melpa.org/#/pos-tip][melpa]] | 0.4.6 | 20191227.1356 | 0.4.6 | 20150318.1513 | | +| powershell.el | [[https://melpa.org/#/powershell][melpa]] | 0.3 | 20220103.925 | 0.3 | 20201005.1642 | | +| pythonic.el | [[https://melpa.org/#/pythonic][melpa]] | 0.2 | 20210122.1247 | 0.1.1 | 20200806.434 | | +| queue.el | [[https://elpa.gnu.org/packages/queue.html][elpa]] | 0.2 | - | | | required by citeproc | +| rainbow-mode.el | [[https://elpa.gnu.org/packages/rainbow-mode.html][elpa]] | 1.0.5 | - | 1.0.4 | - | | +| restart-emacs.el | [[https://melpa.org/#/restart-emacs][melpa]] | 0.1.1 | 20201127.1425 | 0.1.1 | 20180601.1031 | | +| s.el | [[https://melpa.org/#/s][melpa]] | 1.12.0 | 20210616.619 | 1.12.0 | 20180406.808 | required by emacs-application-framework, org-ref | +| spacemancs-theme | [[https://melpa.org/#/spacemacs-theme][melpa]] | 0.1 | 20210924.1220 | 0.1 | 20200825.1818 | | +| sphinx-doc.el | [[https://melpa.org/#/sphinx-doc][melpa]] | 0.3.0 | 20210213.1250 | 0.3.0 | 20160116.1117 | | +| sql-indent | [[https://elpa.gnu.org/packages/sql-indent.html][elpa]] | 1.6 | - | 1.5 | - | | +| srefactor | [[https://melpa.org/#/srefactor][melpa]] | 0.3 | 20180703.1810 | | | | +| stickyfunc-enhance.el | [[https://melpa.org/#/stickyfunc-enhance][melpa]] | 0.1 | 20150429.1814 | | | | +| string-inflection.el | [[https://melpa.org/#/string-inflection][melpa]] | 1.0.16 | 20210918.419 | | | required by citeproc | +| swiper.el | [[https://melpa.org/#/swiper][melpa]] | 0.13.4 | 20210919.1221 | 0.13.0 | 20201208.1419 | | +| systemd | [[https://melpa.org/#/systemd][melpa]] | 1.6 | 20210209.2052 | | 20191219.2304 | | +| transient | [[https://melpa.org/#/transient][melpa]] | 0.3.7 | 20220104.1601 | 0.2.0 | 20210103.1546 | | +| treemacs | [[https://melpa.org/#/treemacs][melpa]] | 2.9.5 | 20220104.1302 | 2.8 | 20210107.1251 | | +| treemacs-magit.el | [[https://melpa.org/#/treemacs-magit][melpa]] | 0 | 20211010.1005 | 0 | 20201025.957 | | +| use-package | [[https://melpa.org/#/use-package][melpa]] | 2.4.1 | 20210207.1926 | 2.4.1 | 20210106.2145 | | +| virtual-auto-fill | [[https://melpa.org/#/virtual-auto-fill][melpa]] | 0.1 | 20200906.2038 | 0.1 | 20200217.2333 | requires visual-line-mode (builtin) adaptive-wrap visual-fill-column | +| visual-fill-column | [[https://melpa.org/#/visual-fill-column][melpa]] | 2.4 | 20211118.33 | 2.2 | 20201229.2303 | best with visual-line-mode, required by virtual-auto-fill | +| vterm | [[https://melpa.org/#/vterm][melpa]] | 0.0.1 | 20211226.817 | | | | +| web-completion-data | [[https://melpa.org/#/web-completion-data][melpa]] | 0.2 | 20160318.848 | | | required by company-web | +| web-mode.el | [[https://melpa.org/#/web-mode][melpa]] | 17.0.4 | 20220104.1504 | 17.0.4 | 20201227.1048 | | +| which-key.el | [[https://melpa.org/#/which-key][melpa]] | 3.5.1 | 20220102.1433 | 3.5.0 | 20201216.1720 | | +| with-editor | [[https://melpa.org/#/with-editor][melpa]] | 3.0.5 | 20220101.1316 | 2.9.4 | 20201030.1232 | | +| yasnippet.el | [[https://melpa.org/#/yasnippet][melpa]] | 0.14.0 | 20200604.246 | 0.14.0 | 20200524.2215 | | +| yasnippet-snippets | [[https://melpa.org/#/yasnippet-snippets][melpa]] | 1.0 | 20210910.1959 | 0.2 | 20200606.1149 | exlude some snippets, see below | Install - emacs-application-framework