;;; EditorCubes --- The common cubes for FG42 -*- lexical-binding: t; -*- ;; ;; Copyright (c) 2010-2021 Sameer Rahmani & Contributors ;; ;; Author: Sameer Rahmani ;; URL: https://gitlab.com/FG42/FG42 ;; Version: 3.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: (require 'fpkg) (require 'fg42/cube) (defflag font-icons "Enable the support for font icones in FG42.") (defcube fg42/buffer-navigation-cube (:docs "cubes/fg42/buffer-navigation-cube.org" :flag buffer-navigation) (fpkg/use avy :bind ("M-1" . avy-goto-word-1))) (defcube fg42/window-navigation-cube (:docs "cubes/fg42/window-navigation-cube.org" :flag window-navigation) (fpkg/use ace-window :bind ("C-" . ace-window))) (defcube fg42/font-cube (:docs "cubes/fg42/font-cube.org" :no-flag t) (let ((font (or (plist-get fg42/font-cube-params :font-name) "Fira Mono")) (size (or (plist-get fg42/font-cube-params :font-size) 12))) ;; Sets the default font to fg42 font (add-to-list 'default-frame-alist (cons 'font (format "%s-%d" font size))) (set-face-attribute 'default t :font font))) (defcube fg42/dracula-theme-cube (:docs "cubes/fg42/dracula-theme-cube.org" :no-flag t) (fpkg/use dracula-theme :init (progn (load-theme 'dracula t) (enable-theme 'dracula)))) (defcube fg42/selectrum-cube (:docs "cubes/fg42/editor-cube.org" :flag selectrum) (fpkg/use selectrum :defer nil :init (selectrum-mode +1)) (fpkg/use selectrum-prescient :defer t :init (progn (setq prescient-filter-method '(literal fuzzy regexp initialism)) (selectrum-prescient-mode +1) (prescient-persist-mode +1))) ;; TODO: Disbale ctrlf in WM mode (fpkg/use ctrlf :defer t :init (ctrlf-mode +1))) (defcube fg42/editor-cube (:docs "cubes/fg42/editor-cube.org" :no-flag t) (fpkg/use rainbow-delimiters ;; It doesn't work due to a problem/conflict in rainbow-delimiters ;; But we use it any way they might fix it :hook (prog-mode . rainbow-delimiters-mode)) (when-flag font-icon (fpkg/use all-the-icons)) ;; In the following section we're setting some default behavior of FG42. ;; Most of these configuration are opiniated and I think most of people ;; shared the same opinion or don't care at all. ;; Remove splash screen (setq inhibit-splash-screen t) ;; scratch should be scratch (setq initial-scratch-message nil) ;; Don't allow tab as indent (setq-default indent-tabs-mode nil) ;; Default indent width (setq tab-width 2) ;; Share the clipboard with X applications (setq x-select-enable-clipboard t) ;; Automatically removed excess backups of the file (setq delete-old-versions t) ;; Global configurations (tool-bar-mode -1) (scroll-bar-mode -1) (menu-bar-mode -1) (column-number-mode t) (show-paren-mode t) (defalias 'yes-or-no-p 'y-or-n-p) ;; Hooks --- ;; Deletel extra trailing white spaces on save (add-hook 'before-save-hook 'delete-trailing-whitespace) ;; Enable rainbow-delimiters for programming (add-hook 'prog-mode-hook #'rainbow-delimiters-mode)) (provide 'cubes/editor) ;;; editor.el ends here