diff --git a/nix/modules/editor/default.nix b/nix/modules/editor/default.nix index 326216a..3630fea 100644 --- a/nix/modules/editor/default.nix +++ b/nix/modules/editor/default.nix @@ -46,9 +46,6 @@ let org-ql org-modern base16-theme - ] ++ lib.optionals (config.fg42.modeline == "noether") [ - posframe - extraPackages.noether ]); drv = makeFG42Drv { @@ -67,9 +64,7 @@ in fg42.fonts = (with pkgs;[ vazir-fonts - fira-code fira-mono - noto-fonts ]); fg42.paths = (with pkgs;[ diff --git a/nix/modules/editor/lisp/fg42/editor.el b/nix/modules/editor/lisp/fg42/editor.el index 0c518e0..9a2c57a 100644 --- a/nix/modules/editor/lisp/fg42/editor.el +++ b/nix/modules/editor/lisp/fg42/editor.el @@ -36,11 +36,8 @@ ;; (require 'fg42/langs/elisp) ;; (require 'fg42/langs/nix) - ;;(require 'fg42/git) ;; (require 'fg42/wm) (require 'fg42/organize) - ;;(require 'fg42/minibuffer) - ;;(require 'fg42/graphics) ;;(require 'fg42/modeline) ) diff --git a/nix/modules/editor/lisp/fg42/modeline-noether.el b/nix/modules/editor/lisp/fg42/modeline-noether.el deleted file mode 100644 index feeb044..0000000 --- a/nix/modules/editor/lisp/fg42/modeline-noether.el +++ /dev/null @@ -1,85 +0,0 @@ -;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*- -;; -;; Copyright (c) 2010-2024 Sameer Rahmani -;; -;; Author: Sameer Rahmani -;; 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 . -;; -;;; 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 diff --git a/nix/modules/editor/lisp/fg42/modeline.el b/nix/modules/editor/lisp/fg42/modeline.el deleted file mode 100644 index 9b8770d..0000000 --- a/nix/modules/editor/lisp/fg42/modeline.el +++ /dev/null @@ -1,38 +0,0 @@ -;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*- -;; -;; Copyright (c) 2010-2024 Sameer Rahmani -;; -;; Author: Sameer Rahmani -;; 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 . -;; -;;; 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 diff --git a/nix/modules/editor/lisp/fg42/modeline/units.el b/nix/modules/editor/lisp/fg42/modeline/units.el deleted file mode 100644 index 7900167..0000000 --- a/nix/modules/editor/lisp/fg42/modeline/units.el +++ /dev/null @@ -1,90 +0,0 @@ -;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*- -;; -;; Copyright (c) 2010-2024 Sameer Rahmani -;; -;; Author: Sameer Rahmani -;; 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 . -;; -;;; 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 diff --git a/nix/modules/editor/lisp/fg42/modeline/views.el b/nix/modules/editor/lisp/fg42/modeline/views.el deleted file mode 100644 index 7662162..0000000 --- a/nix/modules/editor/lisp/fg42/modeline/views.el +++ /dev/null @@ -1,102 +0,0 @@ -;;; FG42 --- The mighty editor for the emacsians -*- lexical-binding: t; -*- -;; -;; Copyright (c) 2010-2024 Sameer Rahmani -;; -;; Author: Sameer Rahmani -;; 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 . -;; -;;; 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 diff --git a/nix/modules/graphics/default.nix b/nix/modules/graphics/default.nix index a9e9b81..0999a81 100644 --- a/nix/modules/graphics/default.nix +++ b/nix/modules/graphics/default.nix @@ -27,7 +27,8 @@ let deps = (with pkgs.emacsPackages; [ svg-tag-mode - all-the-icons + nerd-icons + nerd-icons-completion ] ++ lib.optionals (cfg.emojify) [ emojify ]); @@ -54,8 +55,14 @@ in config = mkIf cfg.enable { fg42.elispPackages = [ drv ] ++ deps; + fg42.fonts = + (with pkgs;[ + (nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; }) + ]); + fg42.requires = [ drv.pname ]; fg42.vars = [ + (lib.defVar "graphics" cfg.enable "Graphics/icons support for FG42") (lib.defVar "emojify" cfg.emojify emojifyDocString) ]; }; diff --git a/nix/modules/graphics/lisp/fg42/graphics.el b/nix/modules/graphics/lisp/fg42/graphics.el index f6e2a62..7fe96c9 100644 --- a/nix/modules/graphics/lisp/fg42/graphics.el +++ b/nix/modules/graphics/lisp/fg42/graphics.el @@ -32,7 +32,7 @@ :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 Emacs." :if (display-graphic-p)) diff --git a/nix/modules/minibuffer-vertico/lisp/fg42/minibuffer-vertico.el b/nix/modules/minibuffer-vertico/lisp/fg42/minibuffer-vertico.el index bd540dd..a400a2b 100644 --- a/nix/modules/minibuffer-vertico/lisp/fg42/minibuffer-vertico.el +++ b/nix/modules/minibuffer-vertico/lisp/fg42/minibuffer-vertico.el @@ -204,13 +204,13 @@ match all of the components in any order." :bind (("M-g e" . consult-compile-error))) -;; (use! nerd-icons-completion -;; "Nerd icons in marginalia" -;; :after marginalia -;; :config -;; (nerd-icons-completion-mode) -;; (add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup)) - +(with-config "graphics" + (use! nerd-icons-completion + "Nerd icons in marginalia" + :after marginalia + :config + (nerd-icons-completion-mode) + (add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup))) (provide 'fg42/minibuffer-vertico) diff --git a/nix/modules/unit/lisp/fg42/config.el b/nix/modules/unit/lisp/fg42/config.el index 60de17b..594f607 100644 --- a/nix/modules/unit/lisp/fg42/config.el +++ b/nix/modules/unit/lisp/fg42/config.el @@ -40,8 +40,18 @@ (defmacro with-config (name &rest body) "Run the BODY only if the config NAME is set to t." (declare (indent defun)) - `(when (string= (format "%s" (fg42/config-get-or ,name "")) "t") - ,@body)) + (if (string= (format "%s" (eval `(fg42/config-get-or ,name ""))) "t") + `(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)