aboutsummaryrefslogtreecommitdiff
path: root/modules/font-config.el
Commit message (Collapse)AuthorAgeFilesLines
* feat(nov): reading-view theme layer with palettes and font sizingCraig Jennings4 days1-5/+0
| | | | | | | | EPUB reading prefs were scattered: a hardcoded Merriweather/180 font-remap in calibredb-epub-config's nov hook, no color control (the old sepia foreground had been stripped), and a frame-global EBook fontaine preset as the only way to size up. That preset resized the font in every buffer in the frame, not just the book. I pulled the reading view into its own layer, modules/nov-reading.el, on top of stock nov (no fork). It owns three things, all buffer-local: a reading palette (sepia/dark/light, each a face the dupre theme owns, sepia the default), the serif typography (family plus a defcustom base height replacing the hardcoded 180), and page font sizing (+/- bump the size live, = resets to the base). Width moves to { }. calibredb-epub-config keeps the library and width/centering layout. Its nov hook now calls into the layer. The three palette faces register as a nov-reading app in theme-studio (face_data.py), so they're tunable there like any other app. I dropped the EBook fontaine preset, since reading size is buffer-local now.
* refactor(icons): drop all-the-icons, nerd-icons drives everythingCraig Jennings5 days1-20/+15
| | | | nerd-icons already rendered every icon in the config (dashboard, dirvish, ibuffer, completion). all-the-icons survived only as scaffolding: a font-install helper, the all-the-icons-nerd-fonts bridge, and a terminal-blanking advice block the nerd-icons one beside it already duplicated. I removed all of it and pointed the font-install helper at nerd-icons (Symbols Nerd Font Mono), keeping the auto-install-on-first-GUI-frame convenience. I updated the font-config tests to the renamed helper.
* refactor: normalize module package headers and enforce themCraig Jennings5 days1-1/+1
| | | | | | The first-line header on 33 modules named the file without its .el extension (;;; font-config --- ... rather than ;;; font-config.el --- ...), the form checkdoc and package-lint expect and the other modules already use. I normalized all 33 to the canonical ;;; name.el --- summary shape. The change is line 1 only. A new test, test-meta-package-headers.el, locks the convention. It checks every module for the canonical first line, Commentary before Code, a provide footer, and no BOM, and unit-tests the checker against each malformed shape so the guard itself is proven.
* chore(font): bump laptop default preset one point to 130Craig Jennings5 days1-1/+1
|
* docs: normalize generated-file headers and prune obvious commentsCraig Jennings6 days1-1/+0
| | | | The theme-studio and browser-choice generators now stamp their output with a header that names the authoritative source and says to regenerate rather than hand-edit. I regenerated both files to match. I also deleted six obvious "describe the next form" comments, replaced two stale placeholders in titlecase.el and an incomplete FIXME in org-checklist.el with real rationale, and condensed early-init's header and Commentary.
* docs: condense module commentaries to the terse header contractCraig Jennings6 days1-41/+8
| | | | 22 module headers carried long user-manual commentaries (quick-starts, keybinding matrices, setup walkthroughs) that belong in user docs, not source. Each now states the purpose, load contract, and entry points tersely. ai-term also drops its stale F9 keybinding references (the scheme is C-; a plus M-SPC now) and a header line claiming a vertical-split that's really host-aware.
* chore(elisp): clear byte-compile warnings (18 more modules)Craig Jennings10 days1-0/+3
| | | | | | Add declare-function/defvar declarations for lazily-loaded package symbols, reflow over-long docstrings, swap pdf-view-*-command interactive-only calls for their non-interactive twins, fix a malformed with-demoted-errors in ledger-config (the clean-buffer body was being read as the format string), and rename the unprefixed global wwwdir to cj/httpd-wwwdir (no external refs). No behavior change. Claude-Session: https://claude.ai/code/session_01BqrdWUo9GcznYX2pZr76gZ
* chore(ai): archive gptel and remove it from the live configCraig Jennings11 days1-3/+2
| | | | | | | | | | I archived gptel to archive/gptel/ since I rarely use it. Moved there: the six gptel modules (ai-config, ai-conversations, ai-conversations-browser, ai-mcp, ai-quick-ask, ai-rewrite), the gptel-tools/ directory, custom/gptel-prompts.el, their test files and utilities, and the four gptel-only specs. Scrubbed from the live config: the ai-config require in init.el, which also drops the whole C-; a keymap; the gptel-mode emojify hook in font-config.el; the gptel-tools entries in the Makefile clean target and the coverage runner; and the gptel feature notes in README. Cancelled the open gptel tasks in todo.org (the AI Open Work issues, the feature-extension brainstorm, the velox gptel-magit bug). ai-term stays. It is the ghostel Claude launcher, independent of gptel. Verified: every module loads, a batch init launch reaches completion clean, and the full test suite shows only pre-existing coverage failures unrelated to this change.
* refactor(font-config): lift frame/icon helpers out of :configCraig Jennings14 days1-36/+39
| | | | cj/apply-font-settings-to-frame, cj/cleanup-frame-list (inside with-eval-after-load 'fontaine) and cj/maybe-install-all-the-icons-fonts (inside all-the-icons :config) carried real branching but were unreachable under make test. Move all three (and the cj/fontaine-configured-frames state) to top level; the :config/eval-after-load blocks keep only the hook wiring. Adds declare-function for the package calls and coverage of the apply/cleanup/install branches.
* fix(font-config): theme-aware browser labels and daemon-safe emoji fontsetCraig Jennings2026-05-251-12/+23
| | | | | | Two font-config robustness fixes. The font-browser (cj/display-available-fonts) hardcoded a "Light Blue" foreground for each family label, which goes nearly unreadable on a light theme. I switched it to font-lock-keyword-face so the label follows the theme's contrast, keeping it bold. The emoji-fontset cond ran once at module load behind (env-gui-p). In daemon mode there's no GUI frame at load, so env-gui-p is nil and the fontset never gets set — a later emacsclient -c GUI frame then has no emoji font. I wrapped it in cj/setup-emoji-fontset (GUI-guarded, idempotent) and, mirroring how the fontaine preset is already applied, run it from server-after-make-frame-hook in daemon mode and directly otherwise. The daemon TTY-then-GUI path can't be exercised in batch, so I left a manual-test entry for it.
* docs(load-graph): classify UI and core-UX modulesCraig Jennings2026-05-241-1/+10
| | | | | | Fourth classification batch: the modules that shape the first interactive frame — ui-config, ui-theme, ui-navigation, font-config, selection-framework, modeline-config, mousetrap-mode, popper-config, dashboard-config, nerd-icons-config. I annotated each header, added a Batch 4 table to the inventory, and extended the validation allowlist. 33 of 102 modules are now classified. These mostly stay eager: each has a real first-frame reason (theme, font, modeline, completion stack, landing page). No new hidden dependencies. popper-config carries the spec's open question about its enabled/disabled state, noted for the deferral phase.
* chore(modules): pass validate-modules in batch by adding requiresCraig Jennings2026-05-071-0/+1
| | | | | | | | `make validate-modules` had 19 module-load failures, all the same shape: a module references a symbol or feature owned by another module without saying so. Production was fine because init.el orders requires correctly. The batch target loads each module in isolation, though, and surfaces the gap. I added explicit `(require 'keybindings)` or `(require 'user-constants)` to each affected module. The requires are idempotent at runtime, so production load order is unchanged. For three optional packages (elpa-mirror, mu4e, org-contacts), I switched to `(require 'X nil t)` so the modules load cleanly when those packages aren't installed. The activation calls become no-ops in that case. `make validate-modules` now reports 0 failures.
* fix: restore daemon icons and consolidate nerd-icons setupCraig Jennings2026-05-071-6/+0
| | | | | | | | | | I replaced the load-time icon-stub block in keyboard-compat with per-call :around advice that checks display-graphic-p against the rendering frame. The old block ran at module-load. Under daemon startup no frame exists yet, so display-graphic-p returned nil and the empty-string stubs installed permanently. Every GUI client connecting to that daemon then saw blanks. The new shape lets one daemon serve real icons to GUI clients and blanks to terminal clients. I also pulled the nerd-icons-completion and nerd-icons-ibuffer integrations, the package install, and a new tint helper into modules/nerd-icons-config.el. Per-feature use stays in the consuming module (dashboard, dirvish, keyboard-compat). The malformed cons-cell on the marginalia hook in selection-framework.el got fixed in the move. Added a default darkgoldenrod tint, a :filter-return advice on nerd-icons-icon-for-dir so dir icons pick up a color face, and a buffer-local face-remap in dired-mode-hook so plain files in dired render in shadow grey. 13 tests across 3 new files cover the per-call gate, the dir-color helper (idempotent under nerd-icons' memoized return strings), and the bulk-tint helper.
* chore: stop emojifying org-mode buffersCraig Jennings2026-05-041-2/+1
|
* docs(font): sync font-config module header with current codeCraig Jennings2026-04-221-3/+5
| | | | Several lines in the header were stale. The default preset is BerkeleyMono, not FiraCode, and the height is now machine-dependent (120 on laptops, 140 on desktops). The default preset's variable-pitch font is Lexend. Merriweather is only the fallback for unnamed presets. The fontaine preset keybinding is M-S-f, not M-F. The emoji bindings (C-c E i, C-c E l) weren't listed.
* feat(font): set default font height per machineCraig Jennings2026-04-221-2/+2
| | | | | | The default fontaine preset now picks its height based on `env-laptop-p`. Laptop: 120 (12pt). Desktop: 140 (14pt), matches foot's `size=14`. Text reads at the same size across Emacs and the terminal. This reuses `env-laptop-p` from `host-environment.el` instead of adding a gitignored local override.
* style(font): set default and fallback font heights to 120Craig Jennings2026-04-201-2/+2
| | | | Default preset (BerkeleyMono) 140→120, fallback preset (FiraCode) 110→120.
* fix(font): prevent HarfBuzz SIGSEGV crash on emoji in mu4e headersCraig Jennings2026-02-091-0/+24
| | | | | | | | Emacs 30.2 + HarfBuzz 12.3.2 segfaults when arabic-shape-gstring is called on emoji characters during mu4e header rendering. Disable Arabic composition ranges, set inhibit-compacting-font-caches, and disable auto-composition in mu4e-headers-mode. Remove duplicate bidi settings from system-defaults.el (already in early-init.el).
* style(font): increase default height to 140Craig Jennings2026-02-011-1/+1
| | | | Better readability at current display scaling.
* fix(font-config): update font settings and fix env-gui-p callCraig Jennings2026-01-261-3/+3
| | | | | | - Change default font to BerkeleyMono Nerd Font - Increase default height from 110 to 130 - Fix env-gui-p call (remove unused frame argument)
* fix(terminal): add console/mosh compatibilityCraig Jennings2026-01-231-15/+18
| | | | | | | | - Create terminal-compat.el for arrow key escape sequences - Fix M-uppercase keybindings (M-O → M-S-o, etc.) that conflicted with terminal escape sequences ESC O A/B/C/D - Add GUI-only guards for emojify and icon rendering - 18 keybindings updated across 13 modules with override comments
* feat(fonts): Update fonts to Berkeley Mono + Lexend, simplify org-drill configCraig Jennings2025-11-121-2/+2
| | | | | | | | | | | | | | | | Font changes: - Set Berkeley Mono + Lexend as default fonts - Updated EBook preset to use Lexend - Created FiraCode preset preserving old defaults - Installed new fonts: Charis SIL, Bitstream Vera, Literata, Lexend Org-drill changes: - Removed fontaine-dependent font switching code - Now uses org-drill's built-in display management - Configured 24-point font, variable-pitch, hidden modeline - Added comprehensive tests for display management (10 tests, all passing) org-drill now loads from local ~/code/org-drill for development.
* feat(fonts): Update default fonts to Berkeley Mono + LexendCraig Jennings2025-11-121-3/+10
| | | | | | | | | | | | Changed default fontaine preset to use Berkeley Mono for fixed-pitch and Lexend for variable-pitch reading. Lexend is specifically designed to improve reading fluency and reduce visual stress for long-form reading. Changes: - Default preset: Berkeley Mono + Lexend - New FiraCode preset: Preserves old defaults (FiraCode + Merriweather) - New BerkeleyMono preset: Berkeley Mono + Charis SIL - Installed fonts: Charis SIL, Bitstream Vera, Literata, Lexend
* feat:which-key: Add descriptive labels for custom keymapsCraig Jennings2025-10-271-0/+7
| | | | | | | | | | | | Enhance which-key integration by providing detailed descriptions for new key bindings across multiple modules. This improves the usability of custom keymaps by clarifying the purpose of each keybinding, making it easier for users to navigate and understand different menus and options available within the configuration. This update ensures that all custom keymaps now display a descriptive label in the which-key popup to explain their functionality, aiding users in identifying keymap purposes promptly.
* chore: Remove redundant autoload directives from modulesCraig Jennings2025-10-261-2/+0
| | | | | | | Remove unnecessary autoload directives from various functions across multiple modules, cleaning up the codebase and improving readability. These directives were redundant and not needed for the current project setup.
* refactor:dirvish: Remove redundant nerd-icons setupCraig Jennings2025-10-251-0/+6
| | | | | Move the `nerd-icons` setup from `dirvish-config.el` to `font-config.el` to consolidate icon configurations.
* refactor:font-config: update font settings and keybindingsCraig Jennings2025-10-231-9/+10
| | | | | | Add EBook font setting with specified weight and height. Change global keybinding functions to keymap-global-set for better clarity and maintainability.
* changing repositoriesCraig Jennings2025-10-121-0/+283