refactor: remake pankomacs

This commit is contained in:
Artur Manuel 2025-05-03 18:04:12 +01:00
commit d8e729c7d8
Signed by: amadaluzia
SSH key fingerprint: SHA256:uS8IX6IxM7STPOBS/e1vMC6FBToJmSCViQNO/f4SHpU
9 changed files with 150 additions and 208 deletions

View file

@ -1,24 +0,0 @@
;; -*- lexical-binding: t -*-
(defun config-init-dev ()
(use-package which-key
:defer t
:commands (which-key-mode)
:custom
(which-key-mode t))
(use-package envrc
:defer t
:commands (envrc-global-mode envrc-mode)
:custom
(envrc-global-mode t))
(use-package eglot
:defer t
:commands (eglot eglot-ensure)
:hook (prog-mode . eglot-ensure)
:config
(add-to-list 'eglot-server-programs '((nim-mode nimscript-mode) . ("nimlsp")))))
(provide 'config-dev)

View file

@ -1,29 +0,0 @@
;; -*- lexical-binding: t -*-
(defun config-init-ivy ()
(use-package ivy
:custom
(ivy-mode t)
(counsel-mode t)
(ivy-use-virtual-buffers t)
:bind (("C-s" . swiper-isearch)
("C-c C-r" . ivy-resume)
("<f6>" . ivy-resume)
("M-x" . counsel-M-x)
("C-x C-f" . counsel-find-file)
("<f1> f" . counsel-describe-function)
("<f1> v" . counsel-describe-variable)
("<f1> o" . counsel-describe-symbol)
("<f1> l" . counsel-find-library)
("<f2> i" . counsel-info-lookup-symbol)
("<f2> u" . counsel-unicode-char)
("C-c g" . counsel-git)
("C-c j" . counsel-git-grep)
("C-c k" . counsel-ag)
("C-x l" . counsel-locate)
("C-S-o" . counsel-rhythmbox)
:map minibuffer-local-map
("C-r" . counsel-minibuffer-history))))
(provide 'config-ivy)

View file

@ -1,61 +1,16 @@
;; -*- lexical-binding: t -*-
;;; config-languages --- Language configuration -*- lexical-binding: t -*-
(defun config-init-languages ()
;;; Commentary:
;; I need to provide configuration for things like
;; Nix, Nim, etc. so why not just write it down
;; here?
;;; Code:
(defun init-languages-config ()
"Just provide some language configuration."
(use-package nix-ts-mode
:defer t
:commands (nix-ts-mode)
:mode "\\.nix\\'")
(use-package rust-ts-mode
:defer t
:commands (rust-ts-mode)
:mode "\\.rs\\'")
(use-package qml-mode
:defer t
:commands (qml-mode)
:mode "\\.qml\\'")
(use-package haskell-mode
:defer t
:commands (haskell-mode)
:mode "\\.hs\\'")
(use-package python
:defer t
:commands (python-ts-mode python-mode)
:custom
(python-indent-offset 4))
(use-package cc-mode
:defer t
:commands (c-ts-mode
c++-ts-mode
c++-mode
c-mode)
:custom
(c-basic-offset 4))
(use-package nushell-mode
:defer t
:commands (nushell-mode)
:mode "\\.nu\\'")
(use-package tuareg
:defer t
:commands (tuareg-mode tuareg-opam-mode)
:mode "\\.ml\\'")
(use-package nim-mode
:defer t
:commands (nim-mode)
:mode (("\\.nim\\'" . nim-mode)
("\\.nims\\'" . nimscript-mode)))
(use-package go-ts-mode
:defer t
:commands (go-ts-mode go-mod-ts-mode)
:mode (("\\.go\\'" . go-ts-mode)
("go.mod\\'" . go-mod-ts-mode))))
:mode "\\.nix\\'"))
(provide 'config-languages)
;;; config-languages.el ends here

42
config/config-org.el Normal file
View file

@ -0,0 +1,42 @@
;;; config-org --- Configuration for Org-mode -*- lexical-binding: t -*-
;;; Commentary:
;; I need to do Org-mode configuration and this is
;; a decent place to do that.
;;; Code:
(defun init-org-config ()
"Just provide Org-mode configuration."
(defun my/org-mode-borders ()
(modify-all-frames-parameters
'((right-divider-width . 20)
(internal-border-width . 20)))
(dolist (face '(window-divider
window-divider-first-pixel
window-divider-last-pixel))
(face-spec-reset-face face)
(set-face-foreground face (face-attribute 'default :background)))
(set-face-background 'fringe (face-attribute 'default :background)))
(use-package org
:custom
;; Edit settings
(org-auto-align-tags nil)
(org-tags-column 0)
(org-fold-catch-invisible-edits 'show-and-error)
(org-special-ctrl-a/e t)
(org-insert-heading-respect-content t)
;; Org styling, hide markup etc.
(org-hide-emphasis-markers t)
(org-pretty-entities t)
(org-agenda-tags-column 0)
(org-ellipsis "")
:hook (org-mode . my/org-mode-borders))
(use-package org-modern
:hook (org-mode . org-modern-mode))
(use-package org-bullets
:hook org-mode))
(provide 'config-org)
;;; config-org.el ends here

View file

@ -1,24 +1,20 @@
;; -*- lexical-binding: t -*-
;;; config-ui --- UI configuration -*- lexical-binding: t -*-
;;; Commentary:
(defun config-init-ui ()
(defun my/doom-modeline-for-new-frames (&optional frame)
(setq doom-modeline-height (+ (frame-char-height) 8))
(with-selected-frame (or frame (selected-frame))
(doom-modeline-mode 1)))
;; I need to do UI configuration and this is a
;; decent place to do that.
(use-package doom-modeline
:defer t
:commands (doom-modeline-mode)
:custom
(doom-modeline-mode (not (daemonp)))
(doom-modeline-env-load-string "")
:hook ((server-after-make-frame) . my/doom-modeline-for-new-frames)
;; ^^^^^^^^^^^^^^^^^^^^^^^ this hook is my goat
)
;;; Code:
(defun init-ui-config ()
"Just provide UI configuration."
(use-package base16-theme
:config
(load-theme 'base16-rose-pine t)))
(load-theme 'base16-rose-pine t))
(use-package doom-modeline
:custom
(doom-modeline-mode t)))
(provide 'config-ui)
;;; config-ui.el ends here

View file

@ -1,64 +1,62 @@
;;; config.el --- my emacs configuration -*- lexical-binding: t -*-
;; Author: Artur Manuel
;; URL: https://copeberg.org/amadaluzia/pankomacs
;; Version: 0.0.0
;;; Commentary:
;; All this does is provide a configuration for Emacs to use.
;; Not much to gather here.
;;; Code:
(require 'config-ui)
(require 'config-dev)
(require 'config-ivy)
(require 'config-org)
(require 'config-languages)
(require 'use-package)
(defun config-initialise ()
(config-init-dev)
(config-init-ui)
(config-init-languages)
(config-init-ivy)
(defun init-config ()
"The actual configuration to initialise at startup."
(use-package emacs
:init
(setq frame-resize-pixelwise t
window-resize-pixelwise t
frame-inhibit-implied-resize t)
(defun crm-indicator (args)
(cons (format "[CRM%s] %s"
(replace-regexp-in-string
"\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" ""
crm-separator)
(car args))
(cdr args)))
(advice-add #'completing-read-multiple :filter-args #'crm-indicator)
(setq minibuffer-prompt-properties
'(read-only t cursor-intangible t face minibuffer-prompt))
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
:custom
(initial-scratch-message nil)
(inhibit-startup-screen t)
(inhibit-splash-screen t)
(menu-bar-mode nil)
(tool-bar-mode nil)
(scroll-bar-mode nil)
;; vertico setup
(read-extended-command-predicate #'command-completion-default-include-p)
(minibuffer-prompt-properties
'(read-only t cursor-intangible t face minibuffer-prompt))
(enable-recursive-buffer t)
(tab-always-indent 'complete)
;; essentials for me
(delete-selection-mode t)
(column-number-mode t)
(enable-recursive-buffer t)
(read-extended-command-predicate #'command-completion-default-include-p)
(tab-always-indent 'complete)
;; get rid of unneeded ui elements
(scroll-bar-mode nil)
(tool-bar-mode nil)
(menu-bar-mode nil)
;; get rid of the startup screen
(initial-scratch-message nil)
(inhibit-startup-screen t)
:hook (prog-mode . display-line-numbers-mode))
(use-package savehist
:defer t
:commands (savehist-mode)
:custom
(savehist-mode t)))
(savehist-mode t))
(use-package ibuffer
:bind ("C-x C-b" . ibuffer))
(use-package which-key
:custom
(which-key-mode t))
(use-package icomplete
:custom
(fido-mode t)
(icomplete-vertical-mode t))
(use-package flycheck
:custom
(global-flycheck-mode t))
(init-ui-config)
(init-org-config)
(init-languages-config))
(add-hook #'after-init-hook #'config-initialise)
(init-config)
(provide 'config)
;;; config.el ends here