Fix the broken macro and replace all-the-icons with nerdicons

This commit is contained in:
Sameer Rahmani 2024-04-17 13:42:17 +01:00
parent 54649939b2
commit 737b3d97aa
Signed by: lxsameer
GPG Key ID: 8741FACBF412FFA5
10 changed files with 28 additions and 334 deletions

View File

@ -46,9 +46,6 @@ let
org-ql org-ql
org-modern org-modern
base16-theme base16-theme
] ++ lib.optionals (config.fg42.modeline == "noether") [
posframe
extraPackages.noether
]); ]);
drv = makeFG42Drv { drv = makeFG42Drv {
@ -67,9 +64,7 @@ in
fg42.fonts = (with pkgs;[ fg42.fonts = (with pkgs;[
vazir-fonts vazir-fonts
fira-code
fira-mono fira-mono
noto-fonts
]); ]);
fg42.paths = (with pkgs;[ fg42.paths = (with pkgs;[

View File

@ -36,11 +36,8 @@
;; (require 'fg42/langs/elisp) ;; (require 'fg42/langs/elisp)
;; (require 'fg42/langs/nix) ;; (require 'fg42/langs/nix)
;;(require 'fg42/git)
;; (require 'fg42/wm) ;; (require 'fg42/wm)
(require 'fg42/organize) (require 'fg42/organize)
;;(require 'fg42/minibuffer)
;;(require 'fg42/graphics)
;;(require 'fg42/modeline) ;;(require 'fg42/modeline)
) )

View File

@ -1,85 +0,0 @@
;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*-
;;
;; Copyright (c) 2010-2024 Sameer Rahmani <lxsameer@gnu.org>
;;
;; Author: Sameer Rahmani <lxsameer@gnu.org>
;; URL: https://devheroes.codes/FG42/FG42
;; Version: 4.0.0
;;
;; 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/>.
;;
;;; Commentary:
;;; Code:
(eval-when-compile
(require 'fpkg))
(require 'fg42/utils)
(defvar fg42/modeline-views nil
"A list of Noether views to use for modeline.")
(defvar fg42/modeline-active-face nil
"Override the active modeline face via this var.")
(defvar fg42/modeline-inactive-face nil
"Override the inactive modeline face via this var.")
(defface fg42/-disabled-modeline-active-border
'((t
:background "#bd93f9" :height 0.1 :box nil))
"A new face for modeline in active state."
:group 'fg42)
(defface fg42/-disabled-modeline-dective-border
'((t
:background "#44475a" :height 0.1 :box nil))
"A new face for modeline in active state."
:group 'fg42)
(use! noether
"Smart mode line is a pretty simple yet fantastic alternative
to Emacs modeline."
:if (display-graphic-p)
;;:after projectile
:commands noether-global-mode
:hook (emacs-startup . noether-global-mode)
:config
(require 'noether-views)
(require 'fg42/modeline/views)
(let ((active-border (get-base16-color-or :base0A "#bd93f9"))
(inactive-border (get-base16-color-or :base03 "#44475a")))
(set-face-attribute 'fg42/-disabled-modeline-active-border nil :background active-border)
(set-face-attribute 'fg42/-disabled-modeline-dective-border nil :background inactive-border))
;; Disable the default modeline
(setq-default mode-line-format "")
(let ((face-remaps (default-value 'face-remapping-alist)))
(setf (alist-get 'mode-line face-remaps)
(if fg42/modeline-active-face fg42/modeline-active-face 'fg42/-disabled-modeline-active-border)
(alist-get 'mode-line-inactive face-remaps)
(if fg42/modeline-inactive-face fg42/modeline-inactive-face 'fg42/-disabled-modeline-dective-border)
(default-value 'face-remapping-alist) face-remaps))
;; Setup modelines
(when-not-wm
(setq-default noether-views (list fg42/modeline)))
(when-wm
(setq-default noether-views nil)))
(provide 'fg42/modeline-noether)
;;; modeline-noether.el ends here

View File

@ -1,38 +0,0 @@
;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*-
;;
;; Copyright (c) 2010-2024 Sameer Rahmani <lxsameer@gnu.org>
;;
;; Author: Sameer Rahmani <lxsameer@gnu.org>
;; URL: https://devheroes.codes/FG42/FG42
;; Version: 4.0.0
;;
;; 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/>.
;;
;;; Commentary:
;;; Code:
(eval-when-compile
(require 'fpkg)
(require 'fg42/config))
(require 'fg42/utils)
(if (string= (fg42/config-get-or modeline "") "noether")
(require 'fg42/modeline-noether)
(progn
;; TODO: Setup the normal mode line
))
(provide 'fg42/modeline)
;;; modeline.el ends here

View File

@ -1,90 +0,0 @@
;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*-
;;
;; Copyright (c) 2010-2024 Sameer Rahmani <lxsameer@gnu.org>
;;
;; Author: Sameer Rahmani <lxsameer@gnu.org>
;; URL: https://devheroes.codes/FG42/FG42
;; Version: 4.0.0
;;
;; 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/>.
;;
;;; Commentary:
;;; Code:
(eval-when-compile
(require 'fpkg))
(require 'noether)
(require 'noether-units)
(require 'projectile)
(require 'nerd-icons)
(defvar fg42/-mode-icon)
(defun fg42/-update-mode-icon ()
"Set the current buffer name to the watched var."
(setq fg42/-mode-icon major-mode))
(defun fg42/-format-mode-icon (_ v _ _)
"Format the icon V."
(format " %s " (nerd-icons-icon-for-mode v)))
(noether-defunit fg42/mode-icon
"Draws an icon for the current major mode."
:label ""
:len 3
:init (lambda ()
(add-hook 'post-command-hook #'fg42/-update-mode-icon))
:deinit (lambda ()
(remove-hook 'post-command-hook #'fg42/-update-mode-icon))
:var 'fg42/-mode-icon
:fn #'fg42/-format-mode-icon)
;; ============================================================================
;; Exwm input mode
;; ============================================================================
(defvar fg42/-exwm-input-mode nil)
(defun fg42/-set-exwm-input-mode ()
"Set the EXWM input mode for the current buffer."
(setq fg42/-exwm-input-mode (format "%s" exwm--input-mode)))
(defun fg42/-format-exwm-input-mode (_ v _ _)
"Just return the input mode name V."
(if (=string v "line")
(propertize "L" 'font-lock-face `(:foreground ,(get-base16-color-or :base07 "eeeeec")))
(propertize "C" 'font-lock-face `(:foreground ,(get-base16-color-or :base0A "eeeeec")))))
(noether-defunit fg42/exwm-input-mode-unit
"Show the input mode of EXWM for the current buffer."
:label "I:"
:len 4
:init (lambda ()
(when (featurep 'exwm)
(add-hook 'noether-on-buffer-change-hook #'fg42/-set-exwm-input-mode)))
:deinit (lambda ()
(when (featurep 'exwm)
(remove-hook 'noether-on-buffer-change-hook #'fg42/-set-exwm-input-mode)))
:var 'fg42/-exwm-input-mode
:fn #'fg42/-format-exwm-input-mode)
(provide 'fg42/modeline/units)
;;; units.el ends here

View File

@ -1,102 +0,0 @@
;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*-
;;
;; Copyright (c) 2010-2024 Sameer Rahmani <lxsameer@gnu.org>
;;
;; Author: Sameer Rahmani <lxsameer@gnu.org>
;; URL: https://devheroes.codes/FG42/FG42
;; Version: 4.0.0
;;
;; 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/>.
;;
;;; Commentary:
;;; Code:
(eval-when-compile
(require 'fpkg))
(require 'fg42/modeline/units)
(defun fg42/--bottom-right (info)
"Keep the modeline at bottom right by using the data from INFO."
(cons -1 -1))
(defun fg42/--bottom-right-padded (info)
"Keep the modeline at bottom right by using the data from INFO."
(cons -70 -1))
(defun fg42/adjust-modeline (view)
"Adjust the VIEW after parent frame resize."
(noether-show view))
(noether-defview fg42/modeline
"A simple and minimalist mode-line like status bar"
:managed? t
:binding (kbd "C-c 0")
:buffer "*modeline*"
:visible? t
:timeout 0
:on-parent-resize #'fg42/adjust-modeline
:frame
(list
:right-fringe 5
:poshandler #'fg42/--bottom-right
:border-width 0
:font (format "%s %s" (car fg42/font) (- (cadr fg42/font) 1))
:border-color "#bd93f9")
:units
(list
(buffer-name-unit
:label (format "%s " (nerd-icons-codicon "nf-cod-layers"))
:len 20)
(projectile-project-unit
:label (format "%s " (nerd-icons-octicon "nf-oct-project"))
:len 20)
(git-branch-unit
:label (format "%s " (nerd-icons-devicon "nf-dev-git_branch"))
:len 20)
(fg42/mode-icon)
(line-unit :label (format "%s " (nerd-icons-codicon "nf-cod-location")))
(time-unit :label (format " %s " (nerd-icons-mdicon "nf-md-clock_time_three")))))
(noether-defview fg42/minimal-exwm
"A super simple bar containing the line number and column number that
Appears on the center of the current window."
:managed? t
:buffer "*exwm-status*"
:binding (kbd "C-c 1")
:separator " | "
:timeout 10
:frame
(list
:poshandler #'fg42/--bottom-right-padded
:border-width 0
:border-color "#bd93f9")
:units
(list
(fg42/exwm-input-mode-unit :label (format "%s " (nerd-icons-faicon "nf-fa-linux")))
(buffer-name-unit
:label (format "%s " (nerd-icons-codicon "nf-cod-layers"))
:len 30)
(time-unit :label (format "%s " (nerd-icons-mdicon "nf-md-clock_time_three")))))
(provide 'fg42/modeline/views)
;;; views.el ends here

View File

@ -27,7 +27,8 @@ let
deps = deps =
(with pkgs.emacsPackages; [ (with pkgs.emacsPackages; [
svg-tag-mode svg-tag-mode
all-the-icons nerd-icons
nerd-icons-completion
] ++ lib.optionals (cfg.emojify) [ ] ++ lib.optionals (cfg.emojify) [
emojify emojify
]); ]);
@ -54,8 +55,14 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
fg42.elispPackages = [ drv ] ++ deps; fg42.elispPackages = [ drv ] ++ deps;
fg42.fonts =
(with pkgs;[
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
]);
fg42.requires = [ drv.pname ]; fg42.requires = [ drv.pname ];
fg42.vars = [ fg42.vars = [
(lib.defVar "graphics" cfg.enable "Graphics/icons support for FG42")
(lib.defVar "emojify" cfg.emojify emojifyDocString) (lib.defVar "emojify" cfg.emojify emojifyDocString)
]; ];
}; };

View File

@ -32,7 +32,7 @@
:hook (emacs-startup . global-emojify-mode)) :hook (emacs-startup . global-emojify-mode))
(use! all-the-icons (use! nerd-icons
"A utility package to collect various Icon Fonts and propertize them within "A utility package to collect various Icon Fonts and propertize them within
Emacs." Emacs."
:if (display-graphic-p)) :if (display-graphic-p))

View File

@ -204,13 +204,13 @@ match all of the components in any order."
:bind (("M-g e" . consult-compile-error))) :bind (("M-g e" . consult-compile-error)))
;; (use! nerd-icons-completion (with-config "graphics"
;; "Nerd icons in marginalia" (use! nerd-icons-completion
;; :after marginalia "Nerd icons in marginalia"
;; :config :after marginalia
;; (nerd-icons-completion-mode) :config
;; (add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup)) (nerd-icons-completion-mode)
(add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup)))
(provide 'fg42/minibuffer-vertico) (provide 'fg42/minibuffer-vertico)

View File

@ -40,8 +40,18 @@
(defmacro with-config (name &rest body) (defmacro with-config (name &rest body)
"Run the BODY only if the config NAME is set to t." "Run the BODY only if the config NAME is set to t."
(declare (indent defun)) (declare (indent defun))
`(when (string= (format "%s" (fg42/config-get-or ,name "")) "t") (if (string= (format "%s" (eval `(fg42/config-get-or ,name ""))) "t")
,@body)) `(progn
,@body)
nil))
(defmacro if-config (name then else)
"Eval THEN if the config NAME was t, otherwise ELSE."
(declare (indent defun))
(if (string= (eval `(fg42/config-get-or ,name "")) "t")
`,then
`,else))
(provide 'fg42/config) (provide 'fg42/config)