2015-01-27 03:51:47 +00:00
|
|
|
;;; core-emacs-backports.el --- Spacemacs Core File
|
2015-01-14 04:12:56 +00:00
|
|
|
;;
|
2021-03-22 20:11:29 +00:00
|
|
|
;; Copyright (c) 2012-2021 Sylvain Benner & Contributors
|
2015-01-14 04:12:56 +00:00
|
|
|
;;
|
|
|
|
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
|
|
|
;; URL: https://github.com/syl20bnr/spacemacs
|
|
|
|
;;
|
|
|
|
;; This file is not part of GNU Emacs.
|
|
|
|
;;
|
2021-03-24 03:31:44 +00:00
|
|
|
;; This program is free software; you can redistribute it and/or modify
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
;; (at your option) any later version.
|
|
|
|
;;
|
|
|
|
;; This program is distributed in the hope that it will be useful,
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
;;
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
|
|
|
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
2015-01-14 04:12:56 +00:00
|
|
|
|
2016-06-21 01:50:30 +00:00
|
|
|
;; nothing for now
|
2015-09-24 13:36:54 +00:00
|
|
|
|
2015-01-27 03:51:47 +00:00
|
|
|
(provide 'core-emacs-backports)
|
2018-01-13 03:37:04 +00:00
|
|
|
|
2019-08-19 18:25:22 +00:00
|
|
|
(when (and (version< "25" emacs-version)
|
|
|
|
(version< emacs-version "26.3"))
|
2019-08-22 19:11:01 +00:00
|
|
|
;; Hack to prevent TLS error with Emacs 26.1 and 26.2 and gnutls 3.6.4 and
|
|
|
|
;; above see https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341
|
|
|
|
(message (concat "Testing if your Emacs version %s and GnuTLS version "
|
|
|
|
"need the TLS work-around...")
|
|
|
|
emacs-version)
|
|
|
|
(message "More info at https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341")
|
2019-09-15 02:15:53 +00:00
|
|
|
(unless (<= libgnutls-version 30603)
|
|
|
|
(message (concat "Your Emacs version %s and GnutTLS version %s "
|
|
|
|
"need the work-around, applying it...")
|
|
|
|
emacs-version libgnutls-version)
|
|
|
|
(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")))
|
2019-08-21 02:34:54 +00:00
|
|
|
|
2018-01-13 03:37:04 +00:00
|
|
|
(when (version< emacs-version "26")
|
|
|
|
;; backport fix for macOS battery status
|
|
|
|
;; https://github.com/emacs-mirror/emacs/commit/25dca60d5e3b2447352b7c51496baefb4ccd579d#diff-d1b82d59371a01a39cca34f1f64c3447
|
|
|
|
(with-eval-after-load 'battery
|
|
|
|
(defun battery-pmset ()
|
|
|
|
"Get battery status information using `pmset'.
|
|
|
|
|
|
|
|
The following %-sequences are provided:
|
|
|
|
%L Power source (verbose)
|
|
|
|
%B Battery status (verbose)
|
|
|
|
%b Battery status, empty means high, `-' means low,
|
|
|
|
`!' means critical, and `+' means charging
|
|
|
|
%p Battery load percentage
|
|
|
|
%h Remaining time in hours
|
|
|
|
%m Remaining time in minutes
|
|
|
|
%t Remaining time in the form `h:min'"
|
|
|
|
(let (power-source load-percentage battery-status battery-status-symbol
|
|
|
|
remaining-time hours minutes)
|
|
|
|
(with-temp-buffer
|
|
|
|
(ignore-errors (call-process "pmset" nil t nil "-g" "ps"))
|
|
|
|
(goto-char (point-min))
|
|
|
|
(when (re-search-forward "\\(?:Currentl?y\\|Now\\) drawing from '\\(AC\\|Battery\\) Power'" nil t)
|
|
|
|
(setq power-source (match-string 1))
|
|
|
|
(when (re-search-forward "^ -InternalBattery-0\\([ \t]+(id=[0-9]+)\\)*[ \t]+" nil t)
|
|
|
|
(when (looking-at "\\([0-9]\\{1,3\\}\\)%")
|
|
|
|
(setq load-percentage (match-string 1))
|
|
|
|
(goto-char (match-end 0))
|
|
|
|
(cond ((looking-at "; charging")
|
|
|
|
(setq battery-status "charging"
|
|
|
|
battery-status-symbol "+"))
|
|
|
|
((< (string-to-number load-percentage) battery-load-critical)
|
|
|
|
(setq battery-status "critical"
|
|
|
|
battery-status-symbol "!"))
|
|
|
|
((< (string-to-number load-percentage) battery-load-low)
|
|
|
|
(setq battery-status "low"
|
|
|
|
battery-status-symbol "-"))
|
|
|
|
(t
|
|
|
|
(setq battery-status "high"
|
|
|
|
battery-status-symbol "")))
|
|
|
|
(when (re-search-forward "\\(\\([0-9]+\\):\\([0-9]+\\)\\) remaining" nil t)
|
|
|
|
(setq remaining-time (match-string 1))
|
|
|
|
(let ((h (string-to-number (match-string 2)))
|
|
|
|
(m (string-to-number (match-string 3))))
|
|
|
|
(setq hours (number-to-string (+ h (if (< m 30) 0 1)))
|
|
|
|
minutes (number-to-string (+ (* h 60) m)))))))))
|
|
|
|
(list (cons ?L (or power-source "N/A"))
|
|
|
|
(cons ?p (or load-percentage "N/A"))
|
|
|
|
(cons ?B (or battery-status "N/A"))
|
|
|
|
(cons ?b (or battery-status-symbol ""))
|
|
|
|
(cons ?h (or hours "N/A"))
|
|
|
|
(cons ?m (or minutes "N/A"))
|
|
|
|
(cons ?t (or remaining-time "N/A")))))))
|