Browse Source

Initial commit

master
Juan Placencia 4 years ago
commit
ca602c566c
42 changed files with 1867 additions and 0 deletions
  1. +9
    -0
      .editorconfig
  2. +7
    -0
      .gitignore
  3. +2
    -0
      early-init.el
  4. +3
    -0
      init.el
  5. +1
    -0
      uno/.gitignore
  6. BIN
      uno/assets/banner.png
  7. +14
    -0
      uno/assets/banner.txt
  8. +101
    -0
      uno/bootstrap.org
  9. +23
    -0
      uno/modules/+index.org
  10. +78
    -0
      uno/modules/buffer.org
  11. +35
    -0
      uno/modules/config.org
  12. +35
    -0
      uno/modules/dev/+index.org
  13. +51
    -0
      uno/modules/dev/format.org
  14. +92
    -0
      uno/modules/dev/git.org
  15. +48
    -0
      uno/modules/dev/lsp.org
  16. +35
    -0
      uno/modules/dev/project.org
  17. +47
    -0
      uno/modules/dev/shell.org
  18. +62
    -0
      uno/modules/dev/sudo.org
  19. +38
    -0
      uno/modules/dev/syntax.org
  20. +24
    -0
      uno/modules/doc/+index.org
  21. +40
    -0
      uno/modules/doc/markdown.org
  22. +123
    -0
      uno/modules/doc/org.org
  23. +22
    -0
      uno/modules/key/+index.org
  24. +67
    -0
      uno/modules/key/emacs.org
  25. +67
    -0
      uno/modules/key/vim.org
  26. +52
    -0
      uno/modules/key/window.org
  27. +13
    -0
      uno/modules/lang/+index.org
  28. +29
    -0
      uno/modules/lang/elisp/+index.org
  29. +13
    -0
      uno/modules/lang/js/+index.org
  30. +50
    -0
      uno/modules/lang/js/ts.org
  31. +65
    -0
      uno/modules/lang/js/yarn.org
  32. +39
    -0
      uno/modules/mode.org
  33. +31
    -0
      uno/modules/ui/+index.org
  34. +160
    -0
      uno/modules/ui/completion.org
  35. +51
    -0
      uno/modules/ui/dashboard.org
  36. +69
    -0
      uno/modules/ui/emacs.org
  37. +90
    -0
      uno/modules/ui/filetree.org
  38. +26
    -0
      uno/modules/ui/modeline.org
  39. +35
    -0
      uno/modules/ui/mouse.org
  40. +28
    -0
      uno/modules/ui/theme.org
  41. +47
    -0
      uno/modules/ui/window.org
  42. +45
    -0
      uno/modules/window.org

+ 9
- 0
.editorconfig View File

@ -0,0 +1,9 @@
# For more information visit http://editorconfig.org/
root = true
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2

+ 7
- 0
.gitignore View File

@ -0,0 +1,7 @@
/*
!/uno/
!/.editorconfig
!/.gitignore
!/init.el
!/early-init.el

+ 2
- 0
early-init.el View File

@ -0,0 +1,2 @@
;; Prevent package.el loading packages prior to their init-file loading.
(setq package-enable-at-startup nil)

+ 3
- 0
init.el View File

@ -0,0 +1,3 @@
;; Load bootstrap.org for actual setup
(org-babel-load-file
(locate-user-emacs-file (convert-standard-filename "uno/bootstrap.org")))

+ 1
- 0
uno/.gitignore View File

@ -0,0 +1 @@
*.el

BIN
uno/assets/banner.png View File

Before After
Width: 320  |  Height: 320  |  Size: 16 KiB

+ 14
- 0
uno/assets/banner.txt View File

@ -0,0 +1,14 @@
⠛⢻⣿⣯⣿⣿⣿⣶⣶⣶⣶⣤⣤⣤⣀
⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷
⠈⠻⣿⡛⠉⠭⠉⠉⢉⣿⣿⣧
⠈⠙⠲⣶⠖ ⢿⣿ ⠶⣶⣾⣿⣿⣿⣿⣧
⠈ ⠺⢿⡗ ⣹⣿⣿⠿⣟⣿⡏
⠤⠤⢾⣿⣿⣿⣦⠘⡿
⠈⢻⡿⣷⣶⣶⣤⣤⣤⣶⣦⠁
⣽⣿⣿⣿⣿⣿⣿⣿⣿⡟
⠘⠿⣿⣿⣿⣿⣿⣿⣿⠃
⠉⠉⠛⠋⠉⠁

+ 101
- 0
uno/bootstrap.org View File

@ -0,0 +1,101 @@
#+TITLE: Bootstrap
#+AUTHOR: Juan Placencia
* Helpers
#+BEGIN_SRC emacs-lisp
(defun uno-emacs-path (name)
(expand-file-name (locate-user-emacs-file
(convert-standard-filename name))))
(defun uno-path (name)
(uno-emacs-path (concat "uno/" name)))
(defun uno-assets-path (name)
(uno-path (concat "assets/" name)))
(defun uno-cache-path (name)
(uno-emacs-path (concat "cache/" name)))
#+END_SRC
* Backup Files
Isolate or remove backup files for a clean structure.
#+BEGIN_SRC emacs-lisp
(setq
auto-save-file-name-transforms `((".*" ,temporary-file-directory t))
auto-save-list-file-prefix (uno-cache-path "auto-save-list/.saves-")
backup-directory-alist `((".*" . ,temporary-file-directory))
create-lockfiles nil
recentf-save-file (uno-cache-path "recentf/list")
tramp-persistency-file-name (uno-cache-path "tramp/history"))
#+END_SRC
* Straight + Use Package
Run bootstrap code for =straight= and have =use-package= ready.
#+BEGIN_SRC emacs-lisp
(setq straight-use-package-by-default t)
(let ((bootstrap-file
(uno-emacs-path "straight/repos/straight.el/bootstrap.el"))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies) (goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil))
(straight-use-package 'use-package)
(use-package general)
#+END_SRC
* General
Set up general and leader key binds that are used throughout.
#+BEGIN_SRC emacs-lisp
(use-package general
:init
(defvar uno-leader-key "SPC"
"Leader key.")
(defvar uno-mode-leader-key ","
"Mode leader key.")
:config
(general-create-definer uno-define
:states '(motion normal visual))
(general-create-definer uno-leader-define
:prefix uno-leader-key
:states '(motion normal visual))
(general-create-definer uno-mode-leader-define
:prefix uno-mode-leader-key
:states '(motion normal visual))
(uno-leader-define "" nil)
(uno-mode-leader-define "" nil))
#+END_SRC
* Modules
#+BEGIN_SRC emacs-lisp
(let* ((uno-module-directory (uno-path "modules/"))
(uno-module-files (directory-files-recursively
uno-module-directory
"\\.org$"
nil
t)))
(dolist (file (reverse uno-module-files))
(org-babel-load-file file)))
#+END_SRC
* Isolate Custom File
#+BEGIN_SRC emacs-lisp
(when (null custom-file)
(setq custom-file (uno-cache-path "custom.el"))
(load custom-file 'noerror))
#+END_SRC

+ 23
- 0
uno/modules/+index.org View File

@ -0,0 +1,23 @@
#+TITLE: Core
#+AUTHOR: Juan Placencia
* Package
Define core package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:config
(provide 'uno))
#+END_SRC
* Garbage Collection
Use =gcmh= to optimize garbage collection calls.
#+BEGIN_SRC emacs-lisp
(use-package gcmh
:after uno
:config
(gcmh-mode))
#+END_SRC

+ 78
- 0
uno/modules/buffer.org View File

@ -0,0 +1,78 @@
#+TITLE: Core - Buffer
#+AUTHOR: Juan Placencia
* Package
Define core buffer package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno
:config
(provide 'uno-buffer))
#+END_SRC
* Useful/Useless Buffers
Define useful and useless buffers. Borrowed from Spacemacs.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-buffer
:init
(defvar uno--useful-buffers nil
"Regexp used to determine if a buffer is useful.")
(defvar uno--useless-buffers nil
"Regexp used to determine if a buffer is useless.")
(defun uno/add-useful-buffer (buffer)
"Add BUFFER to useful buffers."
(push buffer uno--useful-buffers))
(defun uno/add-useless-buffer (buffer)
"Add BUFFER to useless buffers."
(push buffer uno--useless-buffers))
(defun uno/useful-buffer-p (buffer)
"Determines if a buffer is useful."
(let ((buf-name (buffer-name buffer)))
(or (provided-mode-derived-p
(buffer-local-value 'major-mode buffer)
'comint-mode)
(cl-loop for useful-regexp in uno--useful-buffers
thereis (string-match-p useful-regexp buf-name))
(cl-loop for useless-regexp in uno--useless-buffers
never (string-match-p useless-regexp buf-name)))))
:config
(uno/add-useless-buffer "\\*Messages\\*")
(uno/add-useless-buffer "\\*scratch\\*")
(uno/add-useless-buffer "\\*straight-process\\*")
(let ((buf-pred-entry (assq 'buffer-predicate default-frame-alist)))
(if buf-pred-entry
(setcdr buf-pred-entry 'uno/useful-buffer-p)
(push '(buffer-predicate . uno/useful-buffer-p) default-frame-alist))))
#+END_SRC
* Keybinds
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-buffer
:general
(uno-leader-define
"b" '(:ignore t :which-key "Buffer")
"bd" '(uno/kill-this-buffer :which-key "Kill buffer")
"bm" '(uno/switch-to-messages-buffer :which-key "Messages")
"bn" '(next-buffer :which-key "Next buffer")
"bp" '(previous-buffer :which-key "Previous buffer"))
:init
(defun uno/kill-this-buffer ()
"Split the window vertically and focus the new window."
(interactive)
(if (window-minibuffer-p)
(abort-recursive-edit)
(kill-buffer)))
(defun uno/switch-to-messages-buffer ()
"Split the window horizontally and focus the new window."
(interactive)
(with-current-buffer (messages-buffer)
(goto-char (point-max))
(switch-to-buffer (current-buffer)))))
#+END_SRC

+ 35
- 0
uno/modules/config.org View File

@ -0,0 +1,35 @@
#+TITLE: Core - Config
#+AUTHOR: Juan Placencia
* Package
Define core config package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno
:config
(provide 'uno-config))
#+END_SRC
* Emacs Customizations and Overrides
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-config
:general
(uno-leader-define
"fed" '(uno/config/edit :which-key "Edit emacs configuration")
"fer" '(uno/config/reload :which-key "Reload Emacs configuration")
"fs" '(save-buffer :which-key "Save file")
"fS" '(uno/file/save-all-files :which-key "Save all files"))
:init
(defun uno/config/edit ()
"Open configuration file."
(interactive)
(find-file (uno-path "bootstrap.org")))
(defun uno/config/reload ()
"Reload configuration."
(interactive)
(load-file (uno-emacs-path "init.el"))))
#+END_SRC

+ 35
- 0
uno/modules/dev/+index.org View File

@ -0,0 +1,35 @@
#+TITLE: Dev
#+AUTHOR: Juan Placencia
* Package
Define dev package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno
:config
(provide 'uno-dev))
#+END_SRC
* EditorConfig
Automatically configure coding styles.
#+BEGIN_SRC emacs-lisp
(use-package editorconfig
:after uno-dev
:config
(editorconfig-mode 1))
#+END_SRC
* Keychain
Set up integration with keychain.
#+BEGIN_SRC emacs-lisp
(use-package keychain-environment
:after uno-dev
:config
(keychain-refresh-environment))
#+END_SRC

+ 51
- 0
uno/modules/dev/format.org View File

@ -0,0 +1,51 @@
#+TITLE: Dev - Format
#+AUTHOR: Juan Placencia
* Package
Define format dev package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-dev
:config
(provide 'uno-dev-format))
#+END_SRC
* Default Formatting
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-dev-format
:custom
(indent-tabs-mode nil)
(tab-width 2))
#+END_SRC
* Smartparens
Helpers are borrowed from Spacemacs.
#+BEGIN_SRC emacs-lisp
(use-package smartparens
:after uno-dev-format
:custom
(sp-show-pair-delay 0.2)
(sp-show-pair-from-inside t)
(sp-cancel-autoskip-on-backward-movement nil)
(sp-highlight-pair-overlay nil)
(sp-highlight-wrap-overlay nil)
(sp-highlight-wrap-tag-overlay nil)
:hook
((comint-mode uno-prog-mode) . smartparens-strict-mode)
(minibuffer-setup . uno/dev/format/minibuffer-smartparens)
:init
(defun uno/dev/format/minibuffer-smartparens ()
"Enable `smartparens-mode' in the minibuffer, during `eval-expression'."
(when (or (eq this-command 'eval-expression)
(eq this-command 'eldoc-eval-expression))
(smartparens-strict-mode 1)))
:config
(show-smartparens-global-mode 1)
(sp-local-pair 'minibuffer-inactive-mode "'" nil :actions nil))
#+END_SRC

+ 92
- 0
uno/modules/dev/git.org View File

@ -0,0 +1,92 @@
#+TITLE: Dev - Git
#+AUTHOR: Juan Placencia
* Package
Define Git dev package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-dev
:config
(provide 'uno-dev-git))
#+END_SRC
* Magit
#+BEGIN_SRC emacs-lisp
(use-package magit
:after uno-dev-git
:general
(uno-leader-define
"g" '(:ignore t :which-key "Git")
"gc" '(magit-clone :which-key "Git clone")
"gf" '(:ignore t :which-key "Git file")
"gff" '(magit-find-file :which-key "Git file find")
"gfd" '(magit-diff :which-key "Git file diff")
"gfl" '(magit-log-buffer-file :which-key "Git file log")
"gfm" '(magit-file-dispatch :which-key "Git file dispatch")
"gfs" '(magit-stage-file :which-key "Git stage file")
"gfu" '(magit-unstage-file :which-key "Git unstage file")
"gi" '(magit-init :which-key "Git init")
"gl" '(magit-list-repositories :which-key "Git repositories")
"gm" '(magit-dispatch :which-key "Git dispatch")
"gs" '(magit-status :which-key "Git status"))
(uno-mode-leader-define
:keymaps 'with-editor-mode-map
uno-mode-leader-key '(with-editor-finish :which-key "Finish")
"k" '(with-editor-cancel :which-key "Cancel"))
(uno-mode-leader-define
:keymaps 'magit-log-select-mode-map
uno-mode-leader-key '(magit-log-select-pick :which-key "Pick")
"k" '(magit-log-select-quit :which-key "Cancel"))
:init
(uno/add-useful-buffer "magit: .*")
(uno/add-useful-buffer "magit-.*: .*"))
(use-package magit
:after (uno-dev-git mixed-pitch)
:hook
(git-commit-mode . uno/dev/git/commit-mode)
:init
(defun uno/dev/git/commit-mode ()
"Customize commit mode."
(mixed-pitch-mode -1)))
(use-package forge
:unless (eq system-type 'windows-nt)
:after (uno-dev-git magit)
:custom
(forge-database-file (uno-cache-path "forge/database.sqlite"))
:general
(uno-mode-leader-define
:keymaps 'forge-topic-mode-map
"c" '(forge-post-submit :which-key "Create post")
"e" '(forge-post-cancel :which-key "Edit post"))
(uno-mode-leader-define
:keymaps 'forge-post-mode-map
uno-mode-leader-key '(forge-post-submit :which-key "Submit")
"k" '(forge-post-cancel :which-key "Cancel")))
(use-package transient
:after uno-dev-git
:custom
(transient-history-file (uno-cache-path "transient/history.el"))
(transient-levels-file (uno-cache-path "transient/levels.el"))
(transient-values-file (uno-cache-path "transient/values.el")))
#+END_SRC
* Git Files
#+BEGIN_SRC emacs-lisp
(use-package gitattributes-mode
:after uno-dev-git
:config
(uno/add-prog-mode 'gitattributes-mode))
(use-package gitconfig-mode
:after uno-dev-git)
(use-package gitignore-mode
:after uno-dev-git)
#+END_SRC

+ 48
- 0
uno/modules/dev/lsp.org View File

@ -0,0 +1,48 @@
#+TITLE: Dev - LSP
#+AUTHOR: Juan Placencia
* Package
Define LSP dev package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-dev
:config
(provide 'uno-dev-lsp))
#+END_SRC
* Language Server Protocol
#+BEGIN_SRC emacs-lisp
(use-package lsp-mode
:after uno-dev-lsp
:custom
(read-process-output-max (* 5 1024 1024))
(lsp-headerline-breadcrumb-segments '(file symbols))
(lsp-server-install-dir (uno-cache-path "lsp/server/"))
(lsp-session-file (uno-cache-path "lsp/session"))
:general
(uno-mode-leader-define
:keymaps 'lsp-mode-map
"h" '(:ignore t :which-key "Help")
"hh" '(lsp-describe-thing-at-point :which-key "Describe")
"r" '(:ignore t :watch-key "Refactor")
"rr" '(lsp-rename :which-key "Rename"))
:config
(uno/add-useless-buffer "\\*lsp-log\\*"))
(use-package lsp-mode
:after (uno-dev-lsp which-key)
:hook
(lsp-mode . lsp-enable-which-key-integration))
(use-package lsp-ui
:after (uno-dev-lsp lsp-mode))
(use-package lsp-treemacs
:disabled
:after (uno-dev-lsp lsp-mode treemacs)
:config
(lsp-treemacs-sync-mode 1))
#+END_SRC

+ 35
- 0
uno/modules/dev/project.org View File

@ -0,0 +1,35 @@
#+TITLE: Dev - Project
#+AUTHOR: Juan Placencia
* Package
Define project dev package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-dev
:config
(provide 'uno-dev-project))
#+END_SRC
* Projectile
#+BEGIN_SRC emacs-lisp
(use-package projectile
:after uno-dev-project
:custom
(projectile-cache-file (uno-cache-path "projectile/cache"))
(projectile-completion-system 'default)
(projectile-sort-order 'recentf)
(projectile-known-projects-file (uno-cache-path "projectile/bookmarks.eld"))
:general
(uno-leader-define
"p" '(:ignore t :which-key "Project")
"pb" '(projectile-switch-to-buffer :which-key "Switch project buffer")
"pf" '(projectile-find-file :which-key "Open project file")
"pk" '(projectile-kill-buffers :which-key "Kill project buffers")
"pp" '(projectile-switch-project :which-key "Switch project")
"pr" '(projectile-recentf :which-key "Open recent project file"))
:init
(projectile-mode 1))
#+END_SRC

+ 47
- 0
uno/modules/dev/shell.org View File

@ -0,0 +1,47 @@
#+TITLE: Dev - Shell
#+AUTHOR: Juan Placencia
* Package
Define shell dev package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-dev
:config
(provide 'uno-dev-shell))
#+END_SRC
* Eshell
Configure eshell package.
#+BEGIN_SRC emacs-lisp
(use-package eshell
:after uno-dev-shell
:custom
(eshell-banner-message "")
:general
(uno-leader-define
"se" '(eshell :which-key "Eshell"))
:config
(defun eshell/clear ()
(let ((inhibit-read-only t))
(erase-buffer)))
(eshell/alias "e" "find-file $*")
(eshell/alias "hgrep" "history | grep $*")
(eshell/alias "la" "ls -lAh $*"))
(use-package eshell
:after (uno-dev-shell projectile)
:general
(uno-leader-define
"pse" '(uno/shell/project-eshell :which-key "Eshell"))
:init
(defun uno/shell/project-eshell ()
"Open Eshell in project root."
(interactive)
(when (projectile-project-p)
(let ((default-directory (projectile-project-root)))
(eshell 'N)))))
#+END_SRC

+ 62
- 0
uno/modules/dev/sudo.org View File

@ -0,0 +1,62 @@
#+TITLE: Dev - Sudo
#+AUTHOR: Juan Placencia
* Package
Define sudo dev package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-dev
:config
(provide 'uno-dev-sudo))
#+END_SRC
* Sudo File Support
Borrowed from doom-emacs.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-dev-sudo
:init
(defun uno/dev/sudo/file-path (file)
"Get FILE path for sudo access."
(let ((host (or (file-remote-p file 'host) "localhost")))
(concat "/" (when (file-remote-p file)
(concat (file-remote-p file 'method) ":"
(if-let (user (file-remote-p file 'user))
(concat user "@" host)
host)
"|"))
"sudo:root@" host
":" (or (file-remote-p file 'localname)
file))))
(defun uno/dev/sudo/find-file (file)
"Open FILE as root."
(interactive "FOpen file as root: ")
(find-file (uno/dev/sudo/file-path file)))
(defun uno/dev/sudo/open-this-file ()
"Open the current file as root."
(interactive)
(uno/dev/sudo/find-file
(or buffer-file-name
(when (or (derived-mode-p 'dired-mode)
(derived-mode-p 'wdired-mode))
default-directory))))
(defun uno/dev/sudo/save-this-file ()
"Save this file as root."
(interactive)
(let ((file (uno/dev/sudo/file-path buffer-file-name)))
(if-let (buffer (find-file-noselect file))
(let ((origin (current-buffer)))
(copy-to-buffer buffer (point-min) (point-max))
(unwind-protect
(with-current-buffer buffer
(save-buffer))
(unless (eq origin buffer)
(kill-buffer buffer))
(with-current-buffer origin
(revert-buffer t t))))
(user-error "Unable to open %S" file)))))
#+END_SRC

+ 38
- 0
uno/modules/dev/syntax.org View File

@ -0,0 +1,38 @@
#+TITLE: Dev - Syntax
#+AUTHOR: Juan Placencia
* Package
Define syntax dev package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-dev
:config
(provide 'uno-dev-syntax))
#+END_SRC
* Flycheck
#+BEGIN_SRC emacs-lisp
(use-package flycheck
:after uno-dev-syntax
:general
(uno-leader-define
"e" '(:ignore t :which-key "Error")
"el" '(uno/dev/syntax/toggle-flycheck :which-key "Error list"))
:init
(defun uno/dev/syntax/toggle-flycheck ()
"Toggle flycheck"
(interactive)
(if-let ((-window (flycheck-get-error-list-window)))
(quit-window nil -window)
(flycheck-list-errors)))
:config
(uno/handle-side-window "\\*Flycheck errors\\*"))
(use-package hide-mode-line
:after (uno-dev-syntax flycheck)
:hook
(flycheck-error-list-mode . turn-on-hide-mode-line-mode))
#+END_SRC

+ 24
- 0
uno/modules/doc/+index.org View File

@ -0,0 +1,24 @@
#+TITLE: Document
#+AUTHOR: Juan Placencia
* Package
Define document package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno
:config
(provide 'uno-doc))
#+END_SRC
* Mixed Pitch
Use variable pitch font where applicable.
#+BEGIN_SRC emacs-lisp
(use-package mixed-pitch
:after uno-doc
:hook
(uno-text-mode . mixed-pitch-mode))
#+END_SRC

+ 40
- 0
uno/modules/doc/markdown.org View File

@ -0,0 +1,40 @@
#+TITLE: Doc - Markdown
#+AUTHOR: Juan Placencia
* Package
Define markdown document package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-doc
:config
(provide 'uno-doc-markdown))
#+END_SRC
* Markdown
#+BEGIN_SRC emacs-lisp
(use-package markdown-mode
:after uno-doc-markdown
:hook
(markdown-mode . uno/doc/markdown/theme-markdown)
:init
(defun uno/doc/markdown/theme-markdown ()
"Customize face heights."
(when (display-graphic-p)
(custom-theme-set-faces
'user
'(markdown-header-face-1
((t (:inherit markdown-header-face :height 1.6))))
'(markdown-header-face-2
((t (:inherit markdown-header-face :height 1.5))))
'(markdown-header-face-3
((t (:inherit markdown-header-face :height 1.4))))
'(markdown-header-face-4
((t (:inherit markdown-header-face :height 1.3))))
'(markdown-header-face-5
((t (:inherit markdown-header-face :height 1.2))))
'(markdown-header-face-6
((t (:inherit markdown-header-face :height 1.1))))))))
#+END_SRC

+ 123
- 0
uno/modules/doc/org.org View File

@ -0,0 +1,123 @@
#+TITLE: Doc - Org
#+AUTHOR: Juan Placencia
* Package
Define Org document package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-doc
:config
(provide 'uno-doc-org))
#+END_SRC
* Org
#+BEGIN_SRC emacs-lisp
(use-package org
:after uno-doc-org
:ensure org-plus-contrib
:custom
(org-adapt-indentation nil)
(org-ellipsis " ▼")
(org-hide-emphasis-markers t)
(org-src-window-setup 'current-window)
:hook
(org-mode . toggle-truncate-lines)
(org-mode . uno/doc/org/theme)
:general
(uno-mode-leader-define
:keymaps 'org-mode-map
"p" '(org-present :which-key "Org present")
"'" '(org-edit-special :which-key "Edit special"))
(uno-mode-leader-define
:definer 'minor-mode
:keymaps 'org-src-mode
uno-mode-leader-key '(org-edit-src-exit :which-key "Save")
"k" '(org-edit-src-abort :which-key "Cancel"))
:init
(defun uno/doc/org/theme ()
"Customize face heights for org-mode."
(when (display-graphic-p)
(custom-theme-set-faces
'user
'(org-document-title ((t (:height 1.8))))
'(org-level-1 ((t (:inherit outline-1 :height 1.6))))
'(org-level-2 ((t (:inherit outline-2 :height 1.5))))
'(org-level-3 ((t (:inherit outline-3 :height 1.4))))
'(org-level-4 ((t (:inherit outline-4 :height 1.3))))
'(org-level-4 ((t (:inherit outline-5 :height 1.2))))
'(org-level-5 ((t (:inherit outline-6 :height 1.1))))))))
(use-package org-superstar
:if (display-graphic-p)
:after (uno-doc-org org)
:custom
(org-hide-leading-stars nil)
(org-superstar-leading-bullet "")
(org-superstar-special-todo-items t)
:hook
(org-mode . org-superstar-mode))
#+END_SRC
* Presentation
#+BEGIN_SRC emacs-lisp
(use-package org-present
:after uno-doc-org
:hook
(org-present-mode . evil-motion-state)
(org-present-mode . org-display-inline-images)
(org-present-mode . org-present-big)
(org-present-mode . org-present-hide-cursor)
(org-present-mode . org-present-read-only)
(org-present-mode . uno/doc/org/present)
(org-present-mode-quit . blink-cursor-mode)
(org-present-mode-quit . evil-normal-state)
(org-present-mode-quit . fringe-mode)
(org-present-mode-quit . org-present-read-write)
(org-present-mode-quit . org-present-show-cursor)
(org-present-mode-quit . org-present-small)
(org-present-mode-quit . uno/doc/org/present-quit)
:general
(uno-define
:keymaps 'org-present-mode-keymap
"h" 'org-present-prev
"l" 'org-present-next
"q" 'org-present-quit
"<left>" 'org-present-prev
"<right>" 'org-present-next)
:init
(defun uno/doc/org/present ()
"Start up org-present."
(set-window-margins (get-buffer-window) 1 1)
(setq-local header-line-format " ")
(blink-cursor-mode -1)
(fringe-mode -1))
(defun uno/doc/org/present-quit ()
"Clean up after exiting org-present."
(set-window-margins (get-buffer-window) 0 0)
(setq-local header-line-format nil)
(unless org-startup-with-inline-images
(org-remove-inline-images))))
(use-package hide-mode-line
:after (uno-doc-org org-present)
:hook
(org-present-mode . turn-on-hide-mode-line-mode)
(org-present-mode-quit . turn-off-hide-mode-line-mode))
#+END_SRC
* Evil Integration
#+BEGIN_SRC emacs-lisp
(use-package evil-org
:after (uno-doc-org evil org)
:custom
(evil-org-use-additional-insert t)
(evil-org-key-theme '(textobjects navigation additional))
:hook
(org-mode . evil-org-mode)
(org-src-mode . evil-normalize-keymaps))
#+END_SRC

+ 22
- 0
uno/modules/key/+index.org View File

@ -0,0 +1,22 @@
#+TITLE: Key
#+AUTHOR: Juan Placencia
* Package
Define key package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno
:config
(provide 'uno-key))
#+END_SRC
* Ace Link
#+BEGIN_SRC emacs-lisp
(use-package ace-link
:after uno-key
:config
(ace-link-setup-default))
#+END_SRC

+ 67
- 0
uno/modules/key/emacs.org View File

@ -0,0 +1,67 @@
#+TITLE: Key - Emacs
#+AUTHOR: Juan Placencia
* Package
Define Emacs key package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-key
:config
(provide 'uno-key-emacs))
#+END_SRC
* Keybinds
Define core keybinds.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-key-emacs
:custom
(confirm-kill-emacs 'y-or-n-p)
:general
(uno-leader-define
"f" '(:ignore t :which-key "File")
"fe" '(:ignore t :which-key "Emacs")
"fR" '(uno/key/emacs/rename-file :which-key "Rename file")
"fs" '(save-buffer :which-key "Save file")
"fS" '(uno/key/emacs/save-all-files :which-key "Save all files")
"h" '(:ignore t :which-key "Help")
"hd" '(:ignore t :which-key "Describe")
"hdb" '(describe-bindings :which-key "Describe bindings")
"hdc" '(describe-char :which-key "Describe char")
"hdf" '(describe-function :which-key "Describe function")
"hdF" '(describe-face :which-key "Describe face")
"hdk" '(describe-key :which-key "Describe key")
"hdm" '(describe-mode :which-key "Describe mode")
"hdp" '(describe-package :which-key "Describe package")
"hdt" '(describe-theme :which-key "Describe theme")
"hdv" '(describe-variable :which-key "Describe variable")
"q" '(:ignore t :which-key "Quit")
"qq" '(save-buffers-kill-terminal :which-key "Save all and quit Emacs")
"qQ" '(kill-emacs :which-key "Quit Emacs")
"qx" '(save-buffers-kill-emacs :which-key "Save all and kill Emacs"))
:init
(defun uno/key/emacs/save-all-files ()
"Save all files."
(interactive)
(save-some-buffers t (lambda ()
(and (not buffer-read-only)
(buffer-file-name))))))
#+END_SRC
** Restart Emacs
Use =restart-emacs= to handle different edge cases.
#+BEGIN_SRC emacs-lisp
(use-package restart-emacs
:after uno-key-emacs
:custom
(restart-emacs-restore-frames t)
:general
(uno-leader-define
"qr" '(restart-emacs :which-key "Restart Emacs")))
#+END_SRC

+ 67
- 0
uno/modules/key/vim.org View File

@ -0,0 +1,67 @@
#+TITLE: Key - Vim
#+AUTHOR: Juan Placencia
* Package
Define Vim key package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-key
:config
(provide 'uno-key-vim))
#+END_SRC
* Evil
#+BEGIN_SRC emacs-lisp
(use-package evil
:after uno-key-vim
:custom
(evil-split-window-before t)
(evil-vsplit-window-right t)
(evil-want-integration t)
(evil-want-keybinding nil)
:config
(general-evil-setup)
(evil-mode 1))
#+END_SRC
** Comment
#+BEGIN_SRC emacs-lisp
(use-package evil-nerd-commenter
:after (uno-key-vim evil)
;; :general
;; (uno-leader-define
;; ";" '(evilnc-comment-or-uncomment-lines :which-key "Toggle comment"))
)
#+END_SRC
** Undo-Fu Integration
#+BEGIN_SRC emacs-lisp
(use-package undo-fu
:after (uno-key-vim evil)
:custom
(evil-undo-system 'undo-fu)
:general
(uno-define ";" 'evil-ex))
#+END_SRC
** Evil Collection
#+BEGIN_SRC emacs-lisp
(use-package evil-collection
:after (uno-key-vim evil)
:config
(evil-collection-init))
#+END_SRC
** Anzu Integration
#+BEGIN_SRC emacs-lisp
(use-package evil-anzu
:after (uno-key-vim evil)
:config
(global-anzu-mode 1))
#+END_SRC

+ 52
- 0
uno/modules/key/window.org View File

@ -0,0 +1,52 @@
#+TITLE: Key - Window
#+AUTHOR: Juan Placencia
* Package
Define window key package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-key
:config
(provide 'uno-key-window))
#+END_SRC
* Keybinds
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-key-window
:general
(uno-leader-define
"w" '(:ignore t :which-key "Window")
"wd" '(delete-window :which-key "Delete window")
"wD" '(delete-other-windows :which-key "Delete other windows")
"wm" '(uno/key/window/toggle-maximize :which-key "Toggle maximize")
"ws" '(uno/key/window/split-below :which-key "Split down and focus")
"wS" '(split-window-below :which-key "Split down")
"wv" '(uno/key/window/split-right :which-key "Split right and focus")
"wV" '(split-window-right :which-key "Split right"))
:init
(defun uno/key/window/toggle-maximize ()
"Maximize buffer"
(interactive)
(save-excursion
(if (and (= 1 (length (window-list)))
(assoc ?_ register-alist))
(jump-to-register ?_)
(progn
(window-configuration-to-register ?_)
(delete-other-windows)))))
(defun uno/key/window/split-below ()
"Split the window vertically and focus the new window."
(interactive)
(split-window-below)
(windmove-down))
(defun uno/key/window/split-right ()
"Split the window horizontally and focus the new window."
(interactive)
(split-window-right)
(windmove-right)))
#+END_SRC

+ 13
- 0
uno/modules/lang/+index.org View File

@ -0,0 +1,13 @@
#+TITLE: Language
#+AUTHOR: Juan Placencia
* Package
Define language package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno
:config
(provide 'uno-lang))
#+END_SRC

+ 29
- 0
uno/modules/lang/elisp/+index.org View File

@ -0,0 +1,29 @@
#+TITLE: Language - Emacs Lisp
#+AUTHOR: Juan Placencia
* Package
Define Emacs Lisp language package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-lang
:config
(provide 'uno-lang-elisp))
#+END_SRC
* Flycheck Integration
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after flycheck
:hook
(emacs-lisp-mode . flycheck-mode)
(emacs-lisp-mode . uno/emacs-lisp/check-org-src)
:init
(defun uno/lang/elisp/check-org-src ()
"Check if in org-src mode."
(when (org-src-edit-buffer-p)
(make-local-variable 'flycheck-disabled-checkers)
(push 'emacs-lisp-checkdoc flycheck-disabled-checkers))))
#+END_SRC

+ 13
- 0
uno/modules/lang/js/+index.org View File

@ -0,0 +1,13 @@
#+TITLE: Language - JavaScript
#+AUTHOR: Juan Placencia
* Package
Define JavaScript language package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-lang
:config
(provide 'uno-lang-js))
#+END_SRC

+ 50
- 0
uno/modules/lang/js/ts.org View File

@ -0,0 +1,50 @@
#+TITLE: Language - JavaScript - TypeScript
#+AUTHOR: Juan Placencia
* Package
Define TypeScript JavaScript language package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-lang-js
:config
(provide 'uno-lang-js-ts))
#+END_SRC
* TypeScript, TSX Mode
#+BEGIN_SRC emacs-lisp
(use-package web-mode
:after uno-lang-js-ts)
(use-package typescript-mode
:after (uno-lang-js-ts web-mode)
:init
(define-derived-mode typescript-tsx-mode web-mode "typescript-tsx")
(push '("\\.tsx\\'" . typescript-tsx-mode) auto-mode-alist))
#+END_SRC
* LSP Integration
#+BEGIN_SRC emacs-lisp
(use-package typescript-mode
:after (uno-lang-js-ts uno-lang-js-yarn)
:hook
(uno-lang-js-yarn . uno/lang/js/ts/yarn)
((typescript-mode typescript-tsx-mode) . uno/lang/js/yarn/check)
:init
(defun uno/lang/js/ts/yarn ()
"Attempt to load SDKs with Yarn support."
(when (and (member major-mode '(typescript-mode typescript-tsx-mode))
(uno/lang/js/yarn/add-to-local-lsp
'typescript-language-server
"typescript-language-server/lib/cli.js")
(uno/lang/js/yarn/add-to-local-lsp
'typescript
"typescript/bin/tsserver"))
(push 'ts-ls lsp-enabled-clients)
(lsp)))
(uno/add-useless-buffer "\\*ts-ls\\*")
(uno/add-useless-buffer "\\*ts-ls::.*\\*"))
#+END_SRC

+ 65
- 0
uno/modules/lang/js/yarn.org View File

@ -0,0 +1,65 @@
#+TITLE: Language - JavaScript - Yarn
#+AUTHOR: Juan Placencia
* Package
Define JavaScript language package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after (uno-lang-js uno-dev-lsp projectile)
:config
(provide 'uno-lang-js-yarn))
#+END_SRC
* LSP Integration
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-lang-js-yarn
:init
(defun uno/lang/js/yarn/add-to-local-lsp (name file)
"Add NAME dependency from FILE to local yarn instance."
(when (uno/lang/js/yarn/local-p file)
(lsp-dependency name `(:yarn-local ,file))
t))
(defun uno/lang/js/yarn/check ()
"Set up support with local Yarn instance."
(when (uno/lang/js/yarn/local-p)
(require 'lsp-javascript)
(make-local-variable 'lsp-enabled-clients)
(plist-put lsp-deps-providers
:yarn-local '(:path uno/lang/js/yarn/local-provider))
(setq-local lsp-auto-guess-root t)
(run-hooks 'uno-lang-js-yarn-hook)))
(defun uno/lang/js/yarn/local-p (&optional file)
"Check if Yarn SDK is available locally."
(if file
(file-exists-p (uno/lang/js/yarn/local-provider file))
(file-directory-p (uno/lang/js/yarn/local-provider))))
(defun uno/lang/js/yarn/local-provider (&optional path)
"Provide path for local yarn instance relative to PATH."
(concat (projectile-project-root) ".yarn/sdks/" path)))
#+END_SRC
** ESLint Integration
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after (uno-lang-js-yarn flycheck)
:hook
(uno-lang-js-yarn . uno/lang/js/eslint/add)
:init
(defun uno/lang/js/eslint/add ()
"Add support for ESLint."
(when (uno/lang/js/yarn/local-p "eslint/bin/eslint.js")
(let ((-eslint-full (uno/lang/js/yarn/local-provider "eslint/bin/eslint.js"))
(-node-path (uno/lang/js/yarn/local-provider)))
(setq-local
flycheck-javascript-eslint-executable -eslint-full
lsp-eslint-node-path -node-path
lsp-eslint-package-manager "yarn"))
(push 'eslint lsp-enabled-clients)))
(uno/add-useless-buffer "\\*eslint\\*")
(uno/add-useless-buffer "\\*eslint::.*\\*"))
#+END_SRC

+ 39
- 0
uno/modules/mode.org View File

@ -0,0 +1,39 @@
#+TITLE: Core - Mode
#+AUTHOR: Juan Placencia
* Package
Define core mode package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno
:config
(provide 'uno-mode))
#+END_SRC
* Program/Text Mode
Define custom =prog-mode= and =text-mode= as there are some libraries that do not abide.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-mode
:hook
((conf-mode prog-mode) . uno/run-prog-mode-hook)
(text-mode . uno/run-text-mode-hook)
:init
(defvar uno--prog-based-modes '(nxml-mode)
"List of prog based modes.")
(defun uno/add-prog-mode (mode)
"Consider MODE prog based."
(push mode uno--prog-based-modes))
(defun uno/run-prog-mode-hook ()
"Configure program mode."
(run-hooks 'uno-prog-mode-hook))
(defun uno/run-text-mode-hook ()
"Configure text mode, checking for prog mode."
(if (member major-mode uno--prog-based-modes)
(uno/run-prog-mode-hook)
(run-hooks 'uno-text-mode-hook))))
#+END_SRC

+ 31
- 0
uno/modules/ui/+index.org View File

@ -0,0 +1,31 @@
#+TITLE: UI
#+AUTHOR: Juan Placencia
* Package
Define UI package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno
:config
(provide 'uno-ui))
#+END_SRC
* Icons
Add support for icons via =all-the-icons=.
#+BEGIN_SRC emacs-lisp
(use-package all-the-icons
:after uno-ui)
#+END_SRC
* Which Key
#+BEGIN_SRC emacs-lisp
(use-package which-key
:after uno-ui
:config
(which-key-mode 1))
#+END_SRC

+ 160
- 0
uno/modules/ui/completion.org View File

@ -0,0 +1,160 @@
#+TITLE: UI - Completion
#+AUTHOR: Juan Placencia
* Package
Define UI completion package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui
:config
(provide 'uno-ui-completion))
#+END_SRC
* Vertico
#+BEGIN_SRC emacs-lisp
(use-package vertico
:after uno-ui-completion
:custom
(enable-recursive-minibuffers t)
(minibuffer-prompt-properties '(read-only
t
cursor-intangible
t
face
minibuffer-prompt))
(vertico-cycle t)
:hook
(minibuffer-setup . cursor-intangible-mode)
:general
(vertico-map
"<escape>" 'abort-recursive-edit
"C-j" 'vertico-next
"C-k" 'vertico-previous)
:init
(defun crm-indicator (args)
(cons (concat "[CRM] " (car args)) (cdr args)))
(advice-add 'completing-read-multiple :filter-args 'crm-indicator)
(vertico-mode 1))
(use-package orderless
:after (uno-ui-completion vertico)
:custom
(completion-category-defaults nil)
(completion-category-overrides '((file (styles . (partial-completion)))))
(completion-styles '(substring orderless)))
(use-package savehist
:after (uno-ui-completion vertico)
:custom
(savehist-file (uno-cache-path "savehist"))
:config
(savehist-mode 1))
#+END_SRC
* Consult
Enhance completion.
#+BEGIN_SRC emacs-lisp
(use-package consult
:after uno-ui-completion
:custom
(register-preview-delay 0)
(register-preview-function 'consult-register-format)
(xref-show-xrefs-function 'consult-xref)
(xref-show-definitions-function 'consult-xref)
:hook
(completion-list-mode . consult-preview-at-point-mode)
:general
(uno-leader-define
"bb" '(consult-buffer :which-key "Switch buffer")))
(use-package consult
:after (uno-ui-completion projectile)
:custom
(consult-project-root-function 'projectile-project-root))
#+END_SRC
** Ripgrep Integration
Integrate for searching capabilities.
#+BEGIN_SRC emacs-lisp
(use-package ripgrep
:after uno-ui-completion
:if (executable-find "rg"))
(use-package consult
:after (uno-ui-completion ripgrep)
:general
(uno-leader-define
"/" '(consult-ripgrep :which-key "Search files")))
#+END_SRC
* Company
Text completion framework.
#+BEGIN_SRC emacs-lisp
(use-package company
:after uno-ui-completion
:custom
(company-idle-delay 0)
(company-minimum-prefix-length 2)
(company-tooltip-limit 14)
(company-tooltip-align-annotations t)
(company-require-match 'never)
:hook
(company-mode . evil-normalize-keymaps)
(uno-prog-mode . company-mode))
#+END_SRC
** Help
Enable help tooltip for =company=.
#+BEGIN_SRC emacs-lisp
(use-package company-quickhelp
:after (uno-ui-completion company)
:custom
(register-preview-delay 0)
(register-preview-function 'consult-register-format)
(xref-show-xrefs-function 'consult-xref)
(xref-show-definitions-function 'consult-xref)
:hook
(company-mode . company-quickhelp-local-mode)
:config
(delq 'company-echo-metadata-frontend company-frontends))
#+END_SRC
** Icons
Front-end for =company= GUI.
#+BEGIN_SRC emacs-lisp
(use-package company-box
:after (uno-ui-completion company)
:if (display-graphic-p)
:custom
(company-box-backends-colors nil)
(company-box-max-candidates 50)
(company-box-show-single-candidate t)
:hook
(company-mode . company-box-mode)
:config
(delq 'company-echo-metadata-frontend company-frontends))
#+END_SRC
** Usage History
#+BEGIN_SRC emacs-lisp
(use-package company-statistics
:after (uno-ui-completion company)
:custom
(company-statistics-file (uno-cache-path "company/statistics.el"))
:hook
(company-mode . company-statistics-mode))
#+END_SRC

+ 51
- 0
uno/modules/ui/dashboard.org View File

@ -0,0 +1,51 @@
#+TITLE: UI - Dashboard
#+AUTHOR: Juan Placencia
* Package
Define UI dashboard package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui
:config
(provide 'uno-ui-dashboard))
#+END_SRC
* Dashboard
#+BEGIN_SRC emacs-lisp
(use-package dashboard
:after uno-ui-dashboard
:custom
(dashboard-banner-logo-title nil)
(dashboard-center-content t)
(dashboard-image-banner-max-height 210)
(dashboard-items '((recents . 5)
(agenda . 5)))
(dashboard-page-separator "\n\n")
(dashboard-set-file-icons t)
(dashboard-set-footer nil)
(dashboard-set-heading-icons t)
(dashboard-show-shortcuts nil)
(dashboard-startup-banner (uno-assets-path (if (display-graphic-p)
"banner.png"
"banner.txt")))
(initial-buffer-choice 'uno/ui/dashboard/get-buffer)
:general
(uno-leader-define
"bh" '(dashboard-refresh-buffer :which-key "Dashboard"))
:init
(defun uno/ui/dashboard/get-buffer ()
"Get dashboard buffer."
(get-buffer dashboard-buffer-name))
(dashboard-setup-startup-hook)
:config
(uno/add-useless-buffer "\\*dashboard\\*")
(uno/ui/exclude-center-cursor 'dashboard-mode))
(use-package dashboard
:after (uno-ui-dashboard projectile)
:config
(push '(projects . 5) dashboard-items))
#+END_SRC

+ 69
- 0
uno/modules/ui/emacs.org View File

@ -0,0 +1,69 @@
#+TITLE: UI - Emacs
#+AUTHOR: Juan Placencia
* Package
Define UI Emacs package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui
:config
(provide 'uno-ui-emacs))
#+END_SRC
* Overrides
- Hide UI items
- Set up relative line numbers
- Highlight current line.
- Simplify yes/no
- Switch to help automatically
- Avoid cursor going into minibuffer.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui-emacs
:custom
(display-line-numbers-type 'relative)
(help-window-select t)
(minibuffer-prompt-properties '(read-only
t
point-entered
minibuffer-avoid-prompt
face
minibuffer-prompt))
:hook
((special-mode uno-prog-mode uno-text-mode) . hl-line-mode)
(uno-prog-mode . display-line-numbers-mode)
(uno-prog-mode . toggle-truncate-lines)
(uno-text-mode . toggle-word-wrap)
:config
(fset 'yes-or-no-p 'y-or-n-p)
(scroll-bar-mode -1)
(menu-bar-mode -1)
(tool-bar-mode -1))
#+END_SRC
* Centered Cursor
Hide UI items, set up relative line numbers, and highlight current line.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui-emacs
:init
(defvar uno--ui-center-cursor-blacklist nil
"Major modes to exclude center cursor mode.")
(defun uno/ui/exclude-center-cursor (mode)
"Exclude major MODE from center cursor."
(push mode uno--ui-center-cursor-blacklist))
(defun uno/ui/center-cursor ()
"Set up center cursor unless excluded."
(unless (member major-mode uno--ui-center-cursor-blacklist)
(setq-local
scroll-preserve-screen-position t
scroll-conservatively 0
maximum-scroll-margin 0.5
scroll-margin 99999))))
#+END_SRC

+ 90
- 0
uno/modules/ui/filetree.org View File

@ -0,0 +1,90 @@
#+TITLE: UI - Filetree
#+AUTHOR: Juan Placencia
* Package
Define UI filetree package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui
:config
(provide 'uno-ui-filetree))
#+END_SRC
* Treemacs
#+BEGIN_SRC emacs-lisp
(use-package treemacs
:after uno-ui-filetree
:commands
(treemacs--window-number-ten
treemacs-current-visibility
treemacs-current-workspace
treemacs-select-scope-type
treemacs-select-window)
:custom
(treemacs-persist-file (uno-cache-path "treemacs/persist"))
(treemacs-project-follow-cleanup t)
(treemacs-show-hidden-files nil)
:general
(uno-leader-define
"ft" '(treemacs :which-key "File tree")
"fB" '(treemacs-bookmark :which-key "Find bookmark in file tree")
"fT" '(treemacs-find-file :which-key "Focus current file in file tree"))
:init
(require 'treemacs))
(use-package treemacs-evil
:after (uno-ui-filetree treemacs evil))
(use-package treemacs-icons-dired
:after (uno-ui-filetree treemacs dired)
:config
(treemacs-icons-dired-mode 1))
(use-package treemacs-magit
:after (uno-ui-filetree treemacs magit))
#+END_SRC
** Projectile Integration
#+BEGIN_SRC emacs-lisp
(use-package treemacs-projectile
:after (uno-ui-filetree treemacs projectile)
:general
(uno-leader-define
"pt" '(uno/ui/filetree/project-toggle :which-key "Open project file tree"))
:init
(defun uno/ui/filetree/project-toggle ()
"Toggle and add the current project to treemacs if not already added."
(interactive)
(if (eq (treemacs-current-visibility) 'visible)
(delete-window (treemacs-get-local-window))
(let ((path (projectile-ensure-project (projectile-project-root)))
(name (projectile-project-name)))
(unless (treemacs-current-workspace)
(treemacs--find-workspace))
(treemacs-do-add-project-to-workspace path name)
(treemacs-select-window)))))
#+END_SRC
* Winum Integration
Borrowed from Spacemacs.
#+BEGIN_SRC emacs-lisp
(use-package treemacs
:after (uno-ui-filetree winum)
:general
(winum-keymap
[remap winum-select-window-0-or-10] 'treemacs-select-window)
:config
(push
'((nil . "winum-select-window-0-or-10") . (nil . "treemacs-select-window"))
which-key-replacement-alist)
(dolist (n (number-sequence 1 5))
(push
(format "%sFramebuffer-%s*" treemacs--buffer-name-prefix n)
winum-ignored-buffers)))
#+END_SRC

+ 26
- 0
uno/modules/ui/modeline.org View File

@ -0,0 +1,26 @@
#+TITLE: UI - Modeline
#+AUTHOR: Juan Placencia
* Package
Define UI modeline package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui
:config
(provide 'uno-ui-modeline))
#+END_SRC
* Doom Modeline
#+BEGIN_SRC emacs-lisp
(use-package doom-modeline
:after uno-ui-modeline
:custom
(column-number-indicator-zero-based nil)
(column-number-mode t)
(doom-modeline-indent-info t)
:config
(doom-modeline-mode 1))
#+END_SRC

+ 35
- 0
uno/modules/ui/mouse.org View File

@ -0,0 +1,35 @@
#+TITLE: UI - Mouse
#+AUTHOR: Juan Placencia
* Package
Define mouse modeline package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui
:config
(provide 'uno-ui-mouse))
#+END_SRC
* Disable Mouse
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui-mouse
:custom
(mouse-highlight nil))
(use-package disable-mouse
:after uno-ui-mouse
:config
(global-disable-mouse-mode 1))
(use-package disable-mouse
:after (uno-ui-mouse evil)
:config
(mapc 'disable-mouse-in-keymap (list evil-motion-state-map
evil-normal-state-map
evil-visual-state-map
evil-insert-state-map)))
#+END_SRC

+ 28
- 0
uno/modules/ui/theme.org View File

@ -0,0 +1,28 @@
#+TITLE: UI - Theme
#+AUTHOR: Juan Placencia
* Package
Define UI theme package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui
:config
(provide 'uno-ui-theme))
#+END_SRC
* Theme
#+BEGIN_SRC emacs-lisp
(use-package doom-themes
:after uno-ui-theme
:custom
(doom-themes-enable-bold t)
(doom-themes-enable-italic t)
(doom-themes-treemacs-theme "doom-colors")
:config
(load-theme 'doom-one t)
(when (display-graphic-p)
(doom-themes-treemacs-config)))
#+END_SRC

+ 47
- 0
uno/modules/ui/window.org View File

@ -0,0 +1,47 @@
#+TITLE: UI - Window
#+AUTHOR: Juan Placencia
* Package
Define UI window package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-ui
:config
(provide 'uno-ui-window))
#+END_SRC
* Winum
#+BEGIN_SRC emacs-lisp
(use-package winum
:after uno-ui-window
:custom
(winum-auto-assign-0-to-minibuffer nil)
(winum-auto-setup-mode-line nil)
(winum-ignored-buffers '(" *LV*" " *which-key*"))
:general
(uno-leader-define
"0" '(winum-select-window-0-or-10 :which-key "Switch to window 0")
"1" '(winum-select-window-1 :which-key "Switch to window 1")
"2" '(winum-select-window-2 :which-key "Switch to window 2")
"3" '(winum-select-window-3 :which-key "Switch to window 3")
"4" '(winum-select-window-4 :which-key "Switch to window 4")
"5" '(winum-select-window-5 :which-key "Switch to window 5")
"6" '(winum-select-window-6 :which-key "Switch to window 6")
"7" '(winum-select-window-7 :which-key "Switch to window 7")
"8" '(winum-select-window-8 :which-key "Switch to window 8")
"9" '(winum-select-window-9 :which-key "Switch to window 9")
"b1" '(buffer-to-window-1 :which-key "Move buffer to window 1")
"b2" '(buffer-to-window-2 :which-key "Move buffer to window 2")
"b3" '(buffer-to-window-3 :which-key "Move buffer to window 3")
"b4" '(buffer-to-window-4 :which-key "Move buffer to window 4")
"b5" '(buffer-to-window-5 :which-key "Move buffer to window 5")
"b6" '(buffer-to-window-6 :which-key "Move buffer to window 6")
"b7" '(buffer-to-window-7 :which-key "Move buffer to window 7")
"b8" '(buffer-to-window-8 :which-key "Move buffer to window 8")
"b9" '(buffer-to-window-9 :which-key "Move buffer to window 9"))
:config
(winum-mode 1))
#+END_SRC

+ 45
- 0
uno/modules/window.org View File

@ -0,0 +1,45 @@
#+TITLE: Core - Window
#+AUTHOR: Juan Placencia
* Package
Define core window package.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno
:config
(provide 'uno-window))
#+END_SRC
* Display Buffer
Define where certain buffers go where in the window.
#+BEGIN_SRC emacs-lisp
(use-package emacs
:after uno-window
:custom
(display-buffer-alist nil)
:init
(defun uno/handle-side-window (buffer &optional side slot)
"Support displaying BUFFER in a SIDE window for a SLOT."
(let* ((-side (if (member side '(top left right)) side 'bottom))
(-slot (if (integerp slot) slot 0))
(-size (if (member -side '(left right))
'window-height
'window-width)))
(push `(,buffer
(display-buffer-in-side-window)
(,-size . 0.25)
(side . ,-side)
(slot . ,-slot))
display-buffer-alist)))
:config
(uno/handle-side-window "\\*Backtrace\\*")
(uno/handle-side-window "\\*Compile-Log\\*")
(uno/handle-side-window "\\*eshell\\*" 'bottom -1)
(uno/handle-side-window "\\*[Hh]elp\\*")
(uno/handle-side-window "\\*Messages\\*")
(uno/handle-side-window "\\*Warnings\\*"))
#+END_SRC

Loading…
Cancel
Save