diff options
| author | 2023-08-01 10:41:16 -0700 | |
|---|---|---|
| committer | 2023-08-01 10:41:55 -0700 | |
| commit | 61e4250ae32744e5434c8faef7d059c7b157f81a (patch) | |
| tree | 7899a634af0aa699a7c639b0e8ca527adb8c1c8d | |
| parent | 11c37ef4ef68b55c7ce8ad058abb0b678411b299 (diff) | |
| download | yoshi-theme-61e4250ae32744e5434c8faef7d059c7b157f81a.tar.gz yoshi-theme-61e4250ae32744e5434c8faef7d059c7b157f81a.zip | |
Add ‘yoshi-mode-line’ module
This is an experiment to see if I can customize the mode-line in a nice way.
| -rw-r--r-- | CHANGELOG.org | 4 | ||||
| -rw-r--r-- | README.org | 4 | ||||
| -rw-r--r-- | icons/file-circle-minus-solid.svg | 1 | ||||
| -rw-r--r-- | icons/file-code-solid.svg | 1 | ||||
| -rw-r--r-- | icons/file-lines-solid.svg | 1 | ||||
| -rw-r--r-- | icons/file-pen-solid.svg | 1 | ||||
| -rw-r--r-- | icons/file-shield-solid.svg | 1 | ||||
| -rw-r--r-- | icons/file-solid.svg | 1 | ||||
| -rw-r--r-- | icons/folder-open-solid.svg | 1 | ||||
| -rw-r--r-- | icons/folder-solid.svg | 1 | ||||
| -rw-r--r-- | icons/terminal-solid.svg | 1 | ||||
| -rw-r--r-- | yoshi-mode-line.el | 66 | ||||
| -rw-r--r-- | yoshi-theme.el | 14 |
13 files changed, 83 insertions, 14 deletions
diff --git a/CHANGELOG.org b/CHANGELOG.org index 6087014..90d3ef8 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -10,6 +10,10 @@ This project adheres to [[http://semver.org][Semantic Versioning]]. * COMMENT [[https://github.com/ryuslash/yoshi-theme/compare/v7.0.0...HEAD][Unreleased]] +** REMOVED Hacks for the mode-line + +** ADDED Custom mode-line module yoshi-mode-line + * [[https://github.com/ryuslash/yoshi-theme/compare/v6.2.0...v7.0.0][7.0.0]] -- 2023-08-01 :PROPERTIES: :CUSTOM_ID: release-7.0.0 @@ -82,6 +82,10 @@ Once you've installed Yoshi theme you can either use =M-x load-theme= to enable (load-theme 'yoshi :no-confirm) #+END_SRC +*** Other modules + +- yoshi-mode-line :: Enable this by calling ~(require 'yoshi-mode-line)~. This module enables the mode-line as is intended to be used with Yoshi theme. + ** Installation in Spacemacs Edit your .spacemacs file ~(SPC f e d)~ and add the ~yoshi-theme~ package: diff --git a/icons/file-circle-minus-solid.svg b/icons/file-circle-minus-solid.svg new file mode 100644 index 0000000..079729f --- /dev/null +++ b/icons/file-circle-minus-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z"/></svg>
\ No newline at end of file diff --git a/icons/file-code-solid.svg b/icons/file-code-solid.svg new file mode 100644 index 0000000..1ff6c5f --- /dev/null +++ b/icons/file-code-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z"/></svg>
\ No newline at end of file diff --git a/icons/file-lines-solid.svg b/icons/file-lines-solid.svg new file mode 100644 index 0000000..db6b0df --- /dev/null +++ b/icons/file-lines-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"/></svg>
\ No newline at end of file diff --git a/icons/file-pen-solid.svg b/icons/file-pen-solid.svg new file mode 100644 index 0000000..2a6ba42 --- /dev/null +++ b/icons/file-pen-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V285.7l-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
\ No newline at end of file diff --git a/icons/file-shield-solid.svg b/icons/file-shield-solid.svg new file mode 100644 index 0000000..cbe717e --- /dev/null +++ b/icons/file-shield-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z"/></svg>
\ No newline at end of file diff --git a/icons/file-solid.svg b/icons/file-solid.svg new file mode 100644 index 0000000..74f3d8a --- /dev/null +++ b/icons/file-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z"/></svg>
\ No newline at end of file diff --git a/icons/folder-open-solid.svg b/icons/folder-open-solid.svg new file mode 100644 index 0000000..403c036 --- /dev/null +++ b/icons/folder-open-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z"/></svg>
\ No newline at end of file diff --git a/icons/folder-solid.svg b/icons/folder-solid.svg new file mode 100644 index 0000000..7e67ae8 --- /dev/null +++ b/icons/folder-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z"/></svg>
\ No newline at end of file diff --git a/icons/terminal-solid.svg b/icons/terminal-solid.svg new file mode 100644 index 0000000..75449ee --- /dev/null +++ b/icons/terminal-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>
\ No newline at end of file diff --git a/yoshi-mode-line.el b/yoshi-mode-line.el new file mode 100644 index 0000000..0113765 --- /dev/null +++ b/yoshi-mode-line.el @@ -0,0 +1,66 @@ +;;; yoshi-mode-line.el --- Custom mode-line settings for Yoshi theme -*- lexical-binding: t; -*- + +;; Copyright (C) 2023 Tom Willemse + +;; Author: Tom Willemse <tom@ryuslash.org> +;; Keywords: + +;; 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 <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This module defines the mode-line that is meant to be used with with the +;; ‘yoshi-theme’ theme. This module is heavily inspired by the ‘nano-modeline’ +;; module from the ‘nano-emacs’ project. + +;;; Code: + +(defconst yoshi-mode-line-root + (file-name-directory + (or load-file-name + (buffer-file-name))) + "The directory where ‘yoshi-mode-line’ was loaded from.") + +(defconst yoshi-mode-line-icons-dir + (expand-file-name "icons" yoshi-mode-line-root) + "The directory where ‘yoshi-mode-line’ stores its icons.") + +;;; These files were all downloaded from the Font Awesome website. +(defun yoshi-mode-line-buffer-status-display () + "Display an icon for the status of the buffer." + (cond + ((derived-mode-p 'comint-mode 'eshell-mode) + (propertize "term" 'display `(image :type svg :file ,(expand-file-name "terminal-solid.svg" yoshi-mode-line-icons-dir) :ascent center :height ,(window-default-font-height)))) + ((derived-mode-p 'wdired-mode) + (propertize "wdired" 'display `(image :type svg :file ,(expand-file-name "folder-open-solid.svg" yoshi-mode-line-icons-dir) :ascent center :height ,(window-default-font-height)))) + ((derived-mode-p 'dired-mode) + (propertize "dired" 'display `(image :type svg :file ,(expand-file-name "folder-solid.svg" yoshi-mode-line-icons-dir) :ascent center :height ,(window-default-font-height)))) + ((null buffer-file-name) + (propertize "no-file" 'display `(image :type svg :file ,(expand-file-name "file-circle-minus-solid.svg" yoshi-mode-line-icons-dir) :ascent center :height ,(window-default-font-height)))) + ((buffer-modified-p) + (propertize "modified" 'display `(image :type svg :file ,(expand-file-name "file-pen-solid.svg" yoshi-mode-line-icons-dir) :ascent center :height ,(window-default-font-height)))) + (buffer-read-only + (propertize "read-only" 'display `(image :type svg :file ,(expand-file-name "file-shield-solid.svg" yoshi-mode-line-icons-dir) :ascent center :height ,(window-default-font-height)))) + ((derived-mode-p 'prog-mode) + (propertize "code" 'display `(image :type svg :file ,(expand-file-name "file-code-solid.svg" yoshi-mode-line-icons-dir) :ascent center :height ,(window-default-font-height)))) + ((derived-mode-p 'text-mode) + (propertize "text" 'display `(image :type svg :file ,(expand-file-name "file-lines-solid.svg" yoshi-mode-line-icons-dir) :ascent center :height ,(window-default-font-height)))) + (t + (propertize "read-write" 'display `(image :type svg :file ,(expand-file-name "file-solid.svg" yoshi-mode-line-icons-dir) :ascent center :height ,(window-default-font-height)))))) + +(setq-default mode-line-format + `("%e" mode-line-front-space (:eval (yoshi-mode-line-buffer-status-display)) ,@(cdr (default-value 'mode-line-format)))) + +(provide 'yoshi-mode-line) +;;; yoshi-mode-line.el ends here diff --git a/yoshi-theme.el b/yoshi-theme.el index 79d22ef..be8440c 100644 --- a/yoshi-theme.el +++ b/yoshi-theme.el @@ -32,20 +32,6 @@ (deftheme yoshi "Created 2012-09-24") -(defun yoshi-theme-add-space-to-first-arg (args) - "Return ARGS with the car modified to contain 2 spaces." - (cons (format " %s " (car args)) (cdr args))) - -(defun yoshi-theme-add-spaces-around-current-info-node (func &rest args) - (let ((Info-current-node (format " %s " Info-current-node))) - (apply func args))) - -(advice-add 'propertized-buffer-identification - :filter-args #'yoshi-theme-add-space-to-first-arg) - -(advice-add 'Info-set-mode-line - :around #'yoshi-theme-add-spaces-around-current-info-node) - (defun yoshi-theme--make-inline-box (border-color) "Return a list representing a box specification using BORDER-COLOR." (let ((line-width (if (> emacs-major-version 27) |
