From ea93d636f972afe53a5ef7a4019040e8bb3992e4 Mon Sep 17 00:00:00 2001 From: Vincent Zhang Date: Mon, 14 Jan 2019 00:48:54 +0800 Subject: [PATCH] Refactor: rename doom-version-parser to doom-modeline-env. --- README.md | 2 +- ...-version-parser.el => doom-modeline-env.el | 22 ++++---- doom-modeline.el | 54 +++++++++---------- ...rser-test.el => doom-modeline-env-test.el} | 33 ++++++------ test/doom-modeline-test.el | 2 + test/test-helper.el | 2 - 6 files changed, 59 insertions(+), 56 deletions(-) rename doom-version-parser.el => doom-modeline-env.el (84%) rename test/{doom-version-parser-test.el => doom-modeline-env-test.el} (61%) diff --git a/README.md b/README.md index cb28915..a3dd7ed 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ The `doom-modeline` was designed for minimalism, and offers: - A match count panel (for `anzu`, `iedit`, `multiple-cursors`, `symbol-overlay`, `evil-search` and `evil-substitute`) - An indicator for recording a macro -- Local `python`/`ruby`/`perl`/`go`/`elixir` version in the major-mode +- Current environment version (e.g. `python`, `ruby`, `go`, etc.) in the major-mode - A customizable mode-line height (see `doom-modeline-height`) - A minor modes segment which is compatible with `minions` - An error/warning count segment for `flymake`/`flycheck` diff --git a/doom-version-parser.el b/doom-modeline-env.el similarity index 84% rename from doom-version-parser.el rename to doom-modeline-env.el index 9b254a8..5cd5f68 100644 --- a/doom-version-parser.el +++ b/doom-modeline-env.el @@ -1,4 +1,4 @@ -;;; doom-version-parser.el --- A version parser for doom-modeline -*- lexical-binding: t -*- +;;; doom-modeline-env.el --- A environment parser for doom-modeline -*- lexical-binding: t -*- ;; Copyright (C) 2019 Justin Barclay, Vincent Zhang @@ -29,19 +29,19 @@ (require 'subr-x) -(defun doom-version-parser--ruby (line) +(defun doom-modeline-env--ruby (line) "Parse Ruby version from LINE." (car (split-string (cadr (split-string line)) "p"))) -(defun doom-version-parser--elixir (line) +(defun doom-modeline-env--elixir (line) "Parse Elixir version from LINE." (cadr (split-string line))) -(defun doom-version-parser--rustc (line) +(defun doom-modeline-env--rustc (line) "Parse Rust version from LINE." (car (split-string @@ -49,7 +49,7 @@ (split-string line)) "-"))) -(defun doom-version-parser--go (line) +(defun doom-modeline-env--go (line) "Parse Go version from LINE." (cadr (split-string @@ -59,7 +59,7 @@ line))) "go"))) -(defun doom-version-parser--perl (line) +(defun doom-modeline-env--perl (line) "Parse Perl version from LINE." (cadr (split-string @@ -70,17 +70,17 @@ ")")) "v"))) -(defun doom-version-parser--python (line) +(defun doom-modeline-env--python (line) "Parse Python version from LINE." (cadr (split-string line))) -(defun doom-version-parser--get (prog args callback) +(defun doom-modeline-env--get (prog args callback) "Start a sub process using PROG and apply the ARGS to the sub process. Once it recieves information from STDOUT, it closes off the subprocess and passes on the information into the CALLBACK. Example: - (doom-version-parser--get + (doom-modeline-env--get \"ruby\" '(\"version\") (lambda (line) @@ -101,6 +101,6 @@ Example: (funcall parser line))) nil)) -(provide 'doom-version-parser) +(provide 'doom-modeline-env) -;;; doom-version-parser.el ends here +;;; doom-modeline-env.el ends here diff --git a/doom-modeline.el b/doom-modeline.el index 05e57a8..934fc1b 100644 --- a/doom-modeline.el +++ b/doom-modeline.el @@ -38,7 +38,7 @@ ;; - A match count panel (for anzu, iedit, multiple-cursors, symbol-overlay, ;; evil-search and evil-substitute) ;; - An indicator for recording a macro -;; - Local python/ruby version in the major-mode +;; - Current environment version (e.g. python, ruby, go, etc.) in the major-mode ;; - A customizable mode-line height (see doom-modeline-height) ;; - A minor modes segment which is compatible with minions ;; - An error/warning count segment for flymake/flycheck @@ -77,9 +77,9 @@ (require 'eldoc-eval) (require 'shrink-path) (require 'subr-x) -(require 'doom-version-parser) (when (>= emacs-major-version 26) (require 'project)) +(require 'doom-modeline-env) ;; @@ -544,7 +544,7 @@ If DEFAULT is non-nil, set the default mode-line for all buffers." (defvar-local doom-modeline-env-command nil "A program that we're looking to extract version information from. Ex: \"ruby\"") (defvar-local doom-modeline-env-command-args nil "A list of arguments to pass to `doom-modeline-env-command` to extract the version from. Ex: '(\"--version\") ") -(defvar-local doom-modeline-env-parser nil "A function that returns version number from a programs --version (or similar) command. Ex: 'doom-version-parser--ruby") +(defvar-local doom-modeline-env-parser nil "A function that returns version number from a programs --version (or similar) command. Ex: 'doom-modeline-env--ruby") (add-hook 'find-file-hook #'doom-modeline-update-env) (with-no-warnings (if (boundp 'after-focus-change-function) @@ -561,10 +561,10 @@ If DEFAULT is non-nil, set the default mode-line for all buffers." doom-modeline-env-command-args doom-modeline-env-parser) (let ((default-directory (doom-modeline-project-root))) - (doom-version-parser--get doom-modeline-env-command - doom-modeline-env-command-args - (lambda (prog-version) - (setq doom-modeline-env-version (funcall doom-modeline-env-parser prog-version))))))) + (doom-modeline-env--get doom-modeline-env-command + doom-modeline-env-command-args + (lambda (prog-version) + (setq doom-modeline-env-version (funcall doom-modeline-env-parser prog-version))))))) ;; ;; Modeline helpers @@ -1579,6 +1579,19 @@ Returns \"\" to not break --no-window-system." doom-modeline--bar-inactive) "")) +(defun doom-modeline-refresh-bars (&optional width height) + "Refresh mode-line bars with `WIDTH' and `HEIGHT'." + (setq doom-modeline--bar-active + (doom-modeline--make-xpm 'doom-modeline-bar + (or width doom-modeline-bar-width) + (max (or height doom-modeline-height) + (frame-char-height))) + doom-modeline--bar-inactive + (doom-modeline--make-xpm 'doom-modeline-inactive-bar + (or width doom-modeline-bar-width) + (max (or height doom-modeline-height) + (frame-char-height))))) + (when (>= emacs-major-version 26) (add-variable-watcher 'doom-modeline-height @@ -2031,19 +2044,6 @@ mouse-1: Toggle Debug on Quit" ;; Hooks ;; -(defun doom-modeline-refresh-bars (&optional width height) - "Refresh mode-line bars with `WIDTH' and `HEIGHT'." - (setq doom-modeline--bar-active - (doom-modeline--make-xpm 'doom-modeline-bar - (or width doom-modeline-bar-width) - (max (or height doom-modeline-height) - (frame-char-height))) - doom-modeline--bar-inactive - (doom-modeline--make-xpm 'doom-modeline-inactive-bar - (or width doom-modeline-bar-width) - (max (or height doom-modeline-height) - (frame-char-height))))) - ;;;###autoload (defun doom-modeline-init () "Initialize doom mode-line." @@ -2096,40 +2096,40 @@ mouse-1: Toggle Debug on Quit" (add-hook 'python-mode-hook (lambda () (cond ((and (fboundp 'pipenv-project-p) (pipenv-project-p) (executable-find "pipenv")) - (setq doom-modeline-env-parser 'doom-version-parser--python) + (setq doom-modeline-env-parser 'doom-modeline-env--python) (setq doom-modeline-env-command "pipenv") (setq doom-modeline-env-command-args '("run" "python" "--version"))) ((and doom-modeline-python-executable (executable-find doom-modeline-python-executable)) - (setq doom-modeline-env-parser 'doom-version-parser--python) + (setq doom-modeline-env-parser 'doom-modeline-env--python) (setq doom-modeline-env-command doom-modeline-python-executable) (setq doom-modeline-env-command-args '("--version")))))) (add-hook 'ruby-mode-hook (lambda () (setq doom-modeline-env-command "ruby") (setq doom-modeline-env-command-args '("--version")) - (setq doom-modeline-env-parser 'doom-version-parser--ruby))) + (setq doom-modeline-env-parser 'doom-modeline-env--ruby))) (add-hook 'perl-mode-hook (lambda () (setq doom-modeline-env-command "perl") (setq doom-modeline-env-command-args '("--version")) - (setq doom-modeline-env-parser 'doom-version-parser--perl))) + (setq doom-modeline-env-parser 'doom-modeline-env--perl))) (add-hook 'go-mode-hook (lambda () (setq doom-modeline-env-command "go") (setq doom-modeline-env-command-args '("version")) - (setq doom-modeline-env-parser 'doom-version-parser--go))) + (setq doom-modeline-env-parser 'doom-modeline-env--go))) (add-hook 'elixir-mode-hook (lambda () (setq doom-modeline-env-command "iex") (setq doom-modeline-env-command-args '("--version")) - (setq doom-modeline-env-parser 'doom-version-parser--elixir))) + (setq doom-modeline-env-parser 'doom-modeline-env--elixir))) (add-hook 'rust-mode-hook (lambda () (setq doom-modeline-env-command "rustc") (setq doom-modeline-env-command-args '("--version")) - (setq doom-modeline-env-parser 'doom-version-parser--rustc))) + (setq doom-modeline-env-parser 'doom-modeline-env--rustc))) ;; Ensure modeline is inactive when Emacs is unfocused (and active otherwise) diff --git a/test/doom-version-parser-test.el b/test/doom-modeline-env-test.el similarity index 61% rename from test/doom-version-parser-test.el rename to test/doom-modeline-env-test.el index 8f49c58..a52d47f 100644 --- a/test/doom-version-parser-test.el +++ b/test/doom-modeline-env-test.el @@ -1,4 +1,4 @@ -;;; doom-version-parser-test.el --- Unit tests for doom-version-parser -*- lexical-binding: t; -*- +;;; doom-modeline-env-test.el --- Unit tests for doom-modeline-env -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Justin Barclay @@ -23,33 +23,36 @@ ;;; Commentary: ;; -;; Unit tests for doom-version-parser +;; Unit tests for doom-modeline-env ;; ;;; Code: -(ert-deftest doom-version-parser--ruby/parse-ruby-version-string () + +(require 'doom-modeline-env) + +(ert-deftest doom-modeline-env--ruby/parse-ruby-version-string () (should - (string= (doom-version-parser--ruby "ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]") + (string= (doom-modeline-env--ruby "ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]") "2.3.3"))) -(ert-deftest doom-version-parser--elixir/parse-elixr-version-string () +(ert-deftest doom-modeline-env--elixir/parse-elixr-version-string () (should - (string= (doom-version-parser--elixir "IEx 1.7.4 (compiled with Erlang/OTP 21)") + (string= (doom-modeline-env--elixir "IEx 1.7.4 (compiled with Erlang/OTP 21)") "1.7.4"))) -(ert-deftest doom-version-parser--rustc/parse-rustc-version-string () +(ert-deftest doom-modeline-env--rustc/parse-rustc-version-string () (should - (string= (doom-version-parser--rustc "rustc 1.32.0-nightly (14997d56a 2018-12-05)") + (string= (doom-modeline-env--rustc "rustc 1.32.0-nightly (14997d56a 2018-12-05)") "1.32.0"))) -(ert-deftest doom-version-parser--go/parse-go-version-string () +(ert-deftest doom-modeline-env--go/parse-go-version-string () (should - (string= (doom-version-parser--go "go version go1.11.4 darwin/amd64") + (string= (doom-modeline-env--go "go version go1.11.4 darwin/amd64") "1.11.4"))) -(ert-deftest doom-version-parser--perl/parse-perl-version-string () +(ert-deftest doom-modeline-env--perl/parse-perl-version-string () (should - (string= (doom-version-parser--perl + (string= (doom-modeline-env--perl "This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level (with 2 registered patches, see perl -V for more detail) @@ -63,9 +66,9 @@ this system using \"man perl\" or \"perldoc perl\". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.") "5.18.2"))) -(ert-deftest doom-version-parser--python/parse-python-version-string () +(ert-deftest doom-modeline-env--python/parse-python-version-string () (should - (string= (doom-version-parser--python "Python 2.7.15") + (string= (doom-modeline-env--python "Python 2.7.15") "2.7.15"))) -;;; doom-version-parser-test.el ends here +;;; doom-modeline-env-test.el ends here diff --git a/test/doom-modeline-test.el b/test/doom-modeline-test.el index 028bcfb..64a42c7 100644 --- a/test/doom-modeline-test.el +++ b/test/doom-modeline-test.el @@ -31,6 +31,8 @@ ;;; Code: +(require 'doom-modeline) + (ert-deftest doom-modeline--buffer-file-name/truncate-upto-project () (let ((default-directory "/home/user/project/") (file-path "/home/user/project/relative/test.txt") diff --git a/test/test-helper.el b/test/test-helper.el index d896ae0..9c53780 100644 --- a/test/test-helper.el +++ b/test/test-helper.el @@ -32,8 +32,6 @@ (add-to-list 'load-path (expand-file-name ".")) -(require 'doom-modeline) - (defun strip-text-properties(txt) "Strip text properties of TXT." (set-text-properties 0 (length txt) nil txt)