diff --git a/.config/fish/config.fish b/.config/fish/config.fish deleted file mode 100644 index 82ac3d6..0000000 --- a/.config/fish/config.fish +++ /dev/null @@ -1,20 +0,0 @@ -if status is-interactive - # Commands to run in interactive sessions can go here - figlet -w 100 "JaeUs-Device" -end -set fish_color_normal brcyan -set fish_color_autosuggestion '#7d7d7d' -set fish_color_command brcyan -set fish_color_error '#ff6c6b' -set fish_color_param brcyan - - -set EDITOR "emacsclient -t -a ''" - -alias vi=nvim -alias emacs="emacsclient -t" -alias paruunlock="sudo rm /var/lib/pacman/db.lck" -alias update-grub="sudo grub-mkconfig -o /boot/grub/grub.cfg" -alias ytv-best="youtube-dl -f bestvideo+bestaudio " - -starship init fish | source diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables deleted file mode 100644 index 4dbe202..0000000 --- a/.config/fish/fish_variables +++ /dev/null @@ -1,30 +0,0 @@ -# This file contains fish universal variable definitions. -# VERSION: 3.0 -SETUVAR __fish_initialized:3100 -SETUVAR fish_color_autosuggestion:\x237d7d7d -SETUVAR fish_color_cancel:\x2dr -SETUVAR fish_color_command:brcyan -SETUVAR fish_color_comment:990000 -SETUVAR fish_color_cwd:green -SETUVAR fish_color_cwd_root:red -SETUVAR fish_color_end:009900 -SETUVAR fish_color_error:\x23ff6c6b -SETUVAR fish_color_escape:00a6b2 -SETUVAR fish_color_history_current:\x2d\x2dbold -SETUVAR fish_color_host:normal -SETUVAR fish_color_host_remote:yellow -SETUVAR fish_color_normal:brcyan -SETUVAR fish_color_operator:00a6b2 -SETUVAR fish_color_param:brcyan -SETUVAR fish_color_quote:999900 -SETUVAR fish_color_redirection:00afff -SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack -SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack -SETUVAR fish_color_status:red -SETUVAR fish_color_user:brgreen -SETUVAR fish_color_valid_path:\x2d\x2dunderline -SETUVAR fish_key_bindings:fish_default_key_bindings -SETUVAR fish_pager_color_completion:\x1d -SETUVAR fish_pager_color_description:B3A06D\x1eyellow -SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline -SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan diff --git a/.config/nu/config.toml b/.config/nu/config.toml deleted file mode 100644 index 668e7b9..0000000 --- a/.config/nu/config.toml +++ /dev/null @@ -1,64 +0,0 @@ -complete_from_path = true -ctrlc_exit = false -disable_table_indexes = false -filesize_format = "B" -filesize_metric = true -nonzero_exit_errors = true -path = ["/sbin", "/bin", "/usr/bin", "/usr/local/bin", "/usr/local/sbin", "/usr/bin/site_perl", "/usr/bin/vendor_perl", "/usr/bin/core_perl", "/var/lib/snapd/snap/bin"] -pivot_mode = "auto" -plugin_dirs = ["D:\\Src\\GitHub\\nu-plugin-lib\\samples\\Nu.Plugin.Len\\bin\\Debug\\netcoreapp3.1"] -prompt = "build-string (ansi gb) (pwd) (ansi reset) '(' (ansi cb) (do -i { git rev-parse --abbrev-ref HEAD } | str trim ) (ansi reset) ')' (char newline) (ansi yb) (date format '%m/%d/%Y %I:%M:%S%.3f %p') (ansi reset) '> ' " -rm_always_trash = true -skip_welcome_message = false -startup = ["figlet -w 100 'JaeUs-Device'"] -table_mode = "other" - -[color_config] -header_align = "l" -header_bold = true -header_color = "c" -index_color = "rd" -leading_trailing_space_bg = "white" -primitive_binary = "cyan" -primitive_boolean = "green" -primitive_columnpath = "cyan" -primitive_date = "ru" -primitive_decimal = "red" -primitive_duration = "blue" -primitive_filesize = "ur" -primitive_int = "green" -primitive_line = "yellow" -primitive_path = "yellow" -primitive_pattern = "white" -primitive_range = "purple" -primitive_string = "pb" -separator_color = "purple" - -[line_editor] -auto_add_history = true -bell_style = "audible" -color_mode = "enabled" -completion_prompt_limit = 100 -completion_type = "circular" -edit_mode = "emacs" -history_duplicates = "ignoreconsecutive" -history_ignore_space = false -keyseq_timeout_ms = 500 -max_history_size = 100000 -tab_stop = 4 - -[textview] -colored_output = true -grid = false -header = true -line_numbers = true -pager = "less" -paging_mode = "QuitIfOneScreen" -snip = true -tab_width = 4 -term_width = "default" -theme = "TwoDark" -true_color = true -use_italics = true -vcs_modification_markers = true -wrapping_mode = "NoWrapping" diff --git a/.config/starship.toml b/.config/starship.toml deleted file mode 100644 index 3b400c8..0000000 --- a/.config/starship.toml +++ /dev/null @@ -1,21 +0,0 @@ -# ~/.config/starship.toml -# Don't print a new line at the start of the prompt -add_newline = false - -# Make prompt a single line instead of two lines -[line_break] -disabled = true - -# Replace the "❯" symbol in the prompt with "➜" -# [character] # The name of the module we are configuring is "character" -# success_symbol = "[➜](bold green)" # The "success_symbol" is set to "➜" with color "bold green" - -# Use custom format -# format = """ -# [┌───────────────────>](bold green) -# [│](bold green)$directory$rust$package -# [└─>](bold green) """ - -# Disable the package module, hiding it from the prompt completely -[package] -disabled = true diff --git a/.emacs-profiles.el b/.emacs-profiles.el deleted file mode 100644 index 3a44455..0000000 --- a/.emacs-profiles.el +++ /dev/null @@ -1,6 +0,0 @@ -(("default" . ((user-emacs-directory . "~/.emacs.df"))) - ("vanilla" . ((user-emacs-directory . "~/.emacs.vanilla"))) - ("doom" . ((user-emacs-directory . "~/.emacs.doom") - (env . (("DOOMDIR" . "~/.emacs.doom.d"))))) - ("rational" . ((user-emacs-directory . "~/.emacs.rational") - (env . (("RATIONAL_EMACS_HOME" . "~/.emacs.rational.d")))))) diff --git a/.emacs.df/.gitignore b/.emacs.df/.gitignore deleted file mode 100644 index 714f437..0000000 --- a/.emacs.df/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -emojis/ -forge-database.sqlite -backups/ -history -org-roam.db -recentf -straight -transient -undo -projects diff --git a/.emacs.df/desktop.el b/.emacs.df/desktop.el deleted file mode 100644 index 87104a6..0000000 --- a/.emacs.df/desktop.el +++ /dev/null @@ -1,164 +0,0 @@ -(straight-use-package - '(app-launcher :type git :host github :repo "SebastienWae/app-launcher")) -(defun efs/run-in-background (command) - (let ((command-parts (split-string command "[ ]+"))) - (apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts))))) -(defun vifon/exwm-terminal () - (interactive) - (let ((default-directory (if (derived-mode-p 'dired-mode) - (dired-current-directory) - default-directory))) - (start-process "alacritty" nil "alacritty"))) -(defun efs/exwm-init-hook () - ;; Make workspace 1 be the one where we land at startup - (exwm-workspace-switch-create 1) - (efs/start-panel) - ;; if not wsl - ;;(efs/run-in-background "xsetroot -cursor_name left_ptr") - ;;(efs/run-in-background "nm-applet") - ;;(efs/run-in-background "pamac-tray") - ;;(efs/run-in-background "volumeicon") - ;;(efs/run-in-background "numlockx on") - ;;(efs/run-in-background "blueberry-tray") - ;;(efs/run-in-background "bitwarden-desktop") - - ;; Launch apps that will run in the background - ;;(efs/run-in-background "fcitx") -) - -(defun efs/exwm-update-class () - (exwm-workspace-rename-buffer exwm-class-name)) - -(defun efs/exwm-update-title () - (pcase exwm-class-name - ("Firefox" (exwm-workspace-rename-buffer (format "Firefox: %s" exwm-title))))) - -;; This function isn't currently used, only serves as an example how to -;; position a window -(defun efs/position-window () - (let* ((pos (frame-position)) - (pos-x (car pos)) - (pos-y (cdr pos))) - - (exwm-floating-move (- pos-x) (- pos-y)))) - -(use-package exwm - :straight t - :config - ;; Set the default number of workspaces - (setq exwm-workspace-number 10) - - ;; When window "class" updates, use it to set the buffer name - (add-hook 'exwm-update-class-hook #'efs/exwm-update-class) - - ;; When window title updates, use it to set the buffer name - (add-hook 'exwm-update-title-hook #'efs/exwm-update-title) - - ;; Configure windows as they're created - ;;(add-hook 'exwm-manage-finish-hook #'efs/configure-window-by-class) - - ;; When EXWM starts up, do some extra confifuration - (add-hook 'exwm-init-hook #'efs/exwm-init-hook) - - ;; Automatically send the mouse cursor to the selected workspace's display - (setq exwm-workspace-warp-cursor t) - - ;; Window focus should follow the mouse pointer - ;;(setq mouse-autoselect-window t - ;; focus-follows-mouse t) - - (add-hook 'exwm-floating-setup-hook - (lambda () - (exwm-layout-hide-mode-line))) - - ;; These keys should always pass through to Emacs - (setq exwm-input-prefix-keys - '(?\C-x - ?\C-u - ?\C-h - ?\M-x - ?\M-` - ?\M-& - ?\M-: - ?\C-\M-j ;; Buffer list - ?\C-\ )) ;; Ctrl+Space - - ;; Ctrl+Q will enable the next key to be sent directly - (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) - - ;; Set up global key bindings. These always work, no matter the input state! - ;; Keep in mind that changing this list after EXWM initializes has no effect. - (setq exwm-input-global-keys - `( - ;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard) - ([?\s-r] . exwm-reset) - - ;; Move between windows - ([?\s-h] . windmove-left) - ([?\s-l] . windmove-right) - ([?\s-k] . windmove-up) - ([?\s-j] . windmove-down) - - ;;([s-space] . toggle-frame-fullscreen) - ([?\s-f] . exwm-floating-toggle-floating) - - ;; Launch applications via shell command - ([?\s-&] . (lambda (command) - (interactive (list (read-shell-command "$ "))) - (start-process-shell-command command nil command))) - - ([?\s-C] . (lambda () (interactive) (kill-buffer))) - - ;; App - (,(kbd "") . vifon/exwm-terminal) - (,(kbd "") . app-launcher-run-app) - ;; Switch workspace - ([?\s-w] . exwm-workspace-switch) - ([?\s-`] . (lambda () (interactive) (exwm-workspace-switch-create 0))) - - ;; 's-N': Switch to certain workspace with Super (Win) plus a number key (0 - 9) - ,@(mapcar (lambda (i) - `(,(kbd (format "s-%d" i)) . - (lambda () - (interactive) - (exwm-workspace-switch-create ,i)))) - (number-sequence 0 9)))) - - (exwm-enable)) - -;; if not wsl -;;(use-package desktop-environment -;; :after exwm -;; :config (desktop-environment-mode) -;; :custom -;; (desktop-environment-brightness-small-increment "2%+") -;; (desktop-environment-brightness-small-decrement "2%-") -;; (desktop-environment-brightness-normal-increment "5%+") -;; (desktop-environment-brightness-normal-decrement "5%-")) - -;; Make sure the server is started (better to do this in your main Emacs config!) -(server-start) - -(defvar efs/polybar-process nil - "Holds the process of the running Polybar instance, if any") - -(defun efs/kill-panel () - (interactive) - (when efs/polybar-process - (ignore-errors - (kill-process efs/polybar-process))) - (setq efs/polybar-process nil)) - -(defun efs/start-panel () - (interactive) - (efs/kill-panel) - (setq efs/polybar-process (start-process-shell-command "polybar" nil "polybar panel"))) - -(defun efs/send-polybar-hook (module-name hook-index) - (start-process-shell-command "polybar-msg" nil (format "polybar-msg hook %s %s" module-name hook-index))) - -(defun efs/send-polybar-exwm-workspace () - (efs/send-polybar-hook "exwm-workspace" 1)) - -;; Update panel indicator when workspace changes -(add-hook 'exwm-workspace-switch-hook #'efs/send-polybar-exwm-workspace) diff --git a/.emacs.df/early-init.el b/.emacs.df/early-init.el deleted file mode 100644 index c7230bb..0000000 --- a/.emacs.df/early-init.el +++ /dev/null @@ -1,46 +0,0 @@ -;;; early-init.el -*- lexical-binding: t; -*- - -;; Increase the GC threshold for faster startup -;; The default is 800 kilobytes. Measured in bytes. -(setq gc-cons-threshold (* 50 1000 1000)) - -;; Prefer loading newest compiled .el file -(setq load-prefer-newer noninteractive) - -;; Native compilation settings -(when (featurep 'native-compile) - ;; Silence compiler warnings as they can be pretty disruptive - (setq native-comp-async-report-warnings-errors nil) - - ;; Make native compilation happens asynchronously - (setq native-comp-deferred-compilation t) - - ;; Set the right directory to store the native compilation cache - ;; NOTE the method for setting the eln-cache directory depends on the emacs version - (when (fboundp 'startup-redirect-eln-cache) - (if (version< emacs-version "29") - (add-to-list 'native-comp-eln-load-path (convert-standard-filename (expand-file-name "var/eln-cache/" user-emacs-directory))) - (startup-redirect-eln-cache (convert-standard-filename (expand-file-name "var/eln-cache/" user-emacs-directory))))) - - (add-to-list 'native-comp-eln-load-path (expand-file-name "eln-cache/" user-emacs-directory))) - -;; Don't use package.el, we'll use straight.el instead -(setq package-enable-at-startup nil) - -;; Remove some unneeded UI elements (the user can turn back on anything they wish) -(setq inhibit-startup-message t) -(push '(tool-bar-lines . 0) default-frame-alist) -(push '(menu-bar-lines . 0) default-frame-alist) -(push '(vertical-scroll-bars) default-frame-alist) -(push '(mouse-color . "white") default-frame-alist) - -;; Loads a nice blue theme, avoids the white screen flash on startup. -(load-theme 'deeper-blue t) - -;; Make the initial buffer load faster by setting its mode to fundamental-mode -(setq initial-major-mode 'fundamental-mode) - -;; Load the early config file if it exists -(let ((early-config-path (expand-file-name "~/.emacs.df/early-config.el"))) - (when (file-exists-p early-config-path) - (load early-config-path nil 'nomessage))) diff --git a/.emacs.df/exwm/.start-exwm.sh.~undo-tree~ b/.emacs.df/exwm/.start-exwm.sh.~undo-tree~ deleted file mode 100644 index 2271a37..0000000 --- a/.emacs.df/exwm/.start-exwm.sh.~undo-tree~ +++ /dev/null @@ -1,6 +0,0 @@ -(undo-tree-save-format-version . 1) -"e976d2036366e62bb8915b7138e0b4a5fb4918fa" -[nil nil nil nil (25145 39387 666368 202000) 0 nil] -([nil nil ((445 . 454) (t 25145 11614 471859 40000)) nil (25145 39387 666364 698000) 0 nil]) -([nil current ((408 . 416) (#("vanilla" 0 7 (fontified t)) . 408) (undo-tree-id0 . -7) (undo-tree-id1 . -7) (undo-tree-id2 . -7) (undo-tree-id3 . -7) (undo-tree-id4 . -7) (undo-tree-id5 . -6) (undo-tree-id6 . -6) (undo-tree-id7 . -6) (undo-tree-id8 . -6) (undo-tree-id9 . -6) (undo-tree-id10 . -5) (undo-tree-id11 . -5) (undo-tree-id12 . -5) (undo-tree-id13 . -5) (undo-tree-id14 . -5) (undo-tree-id15 . -5) (undo-tree-id16 . -5) (undo-tree-id17 . -5) (undo-tree-id18 . -5) (undo-tree-id19 . -5) (undo-tree-id20 . -6) (undo-tree-id21 . -6) (undo-tree-id22 . -6) (undo-tree-id23 . -6) (undo-tree-id24 . -6) (undo-tree-id25 . -6) (undo-tree-id26 . -6) (undo-tree-id27 . -6) (undo-tree-id28 . -6) (undo-tree-id29 . -6) (undo-tree-id30 . -7) (undo-tree-id31 . -7) (undo-tree-id32 . -7) (undo-tree-id33 . -7) (undo-tree-id34 . -7) (undo-tree-id35 . -7) (undo-tree-id36 . -7) (undo-tree-id37 . -7) (undo-tree-id38 . -7) (undo-tree-id39 . -7) (undo-tree-id40 . -7) (undo-tree-id41 . -7) (undo-tree-id42 . -7) (undo-tree-id43 . -7) (undo-tree-id44 . -7) (undo-tree-id45 . -7) (undo-tree-id46 . -7) (undo-tree-id47 . -6) (undo-tree-id48 . -6) (undo-tree-id49 . -6) (undo-tree-id50 . -6) (undo-tree-id51 . -6) (undo-tree-id52 . -6) (undo-tree-id53 . -6) (undo-tree-id54 . -6) (undo-tree-id55 . -6) (undo-tree-id56 . -6) (undo-tree-id57 . -6) (undo-tree-id58 . -6) (undo-tree-id59 . -6) (undo-tree-id60 . -6) (undo-tree-id61 . -6) (undo-tree-id62 . -5) (undo-tree-id63 . -5) (undo-tree-id64 . -5) (undo-tree-id65 . -5) (undo-tree-id66 . -5) (undo-tree-id67 . -4) (undo-tree-id68 . -4) (undo-tree-id69 . -4) (undo-tree-id70 . -4) (undo-tree-id71 . -4) (undo-tree-id72 . -3) (undo-tree-id73 . -3) (undo-tree-id74 . -3) (undo-tree-id75 . -3) (undo-tree-id76 . -3) (undo-tree-id77 . -2) (undo-tree-id78 . -2) (undo-tree-id79 . -2) (undo-tree-id80 . -2) (undo-tree-id81 . -2) (undo-tree-id82 . -1) (undo-tree-id83 . -1) (undo-tree-id84 . -1) (undo-tree-id85 . -1) (undo-tree-id86 . -1) (undo-tree-id87 . -1) (undo-tree-id88 . -1) (undo-tree-id89 . -1) (undo-tree-id90 . -1) (undo-tree-id91 . -1) (t 25145 39387 681489 213000)) nil (25145 39399 354371 746000) 0 nil]) -nil diff --git a/.emacs.df/exwm/EXWM.desktop b/.emacs.df/exwm/EXWM.desktop deleted file mode 100644 index 7de02bf..0000000 --- a/.emacs.df/exwm/EXWM.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Name=EXWM -Comment=Emacs Window Manager -Exec=sh /home/jaeus/.emacs.rational.d/exwm/start-exwm.sh -TryExec=sh -Type=Application -X-LightDM-DesktopName=exwm -DesktopNames=exwm diff --git a/.emacs.df/exwm/start-exwm.sh b/.emacs.df/exwm/start-exwm.sh deleted file mode 100755 index 0d9a596..0000000 --- a/.emacs.df/exwm/start-exwm.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# Set the screen DPI (uncomment this if needed!) -# xrdb ~/.emacs.d/exwm/Xresources - -# Run the screen compositor -#picom & -#picom -b --config /home/jaeus/.config/i3/picom.conf & -# Enable screen locking on suspend -#xss-lock -- slock & - -picom -b --config $HOME/.xmonad/scripts/picom.conf & -~/scripts/random_wallpaper.sh -exec dbus-launch --exit-with-session emacs -mm --debug-init -l ~/.emacs.df/desktop.el diff --git a/.emacs.df/init.el b/.emacs.df/init.el deleted file mode 100644 index b9eab2b..0000000 --- a/.emacs.df/init.el +++ /dev/null @@ -1,976 +0,0 @@ -;;; init.el -*- lexical-binding: t; -*- - -;; Profile emacs startup -(add-hook 'emacs-startup-hook - (lambda () - (message "Emacs loaded in %s." - (emacs-init-time)))) - -;; Set default coding system (especially for Windows) -(set-language-environment "korean") -(set-default-coding-systems 'utf-8) -(prefer-coding-system 'utf-8) -(customize-set-variable 'visible-bell 1) ; turn off beeps, make them flash! -(customize-set-variable 'large-file-warning-threshold 100000000) ;; change to ~100 MB -;; backup in one place. flat, no tree structure -(setq backup-directory-alist '(("." . "~/.emacs.df/backups"))) -(customize-set-variable - 'tramp-backup-directory-alist backup-directory-alist) -(setq undo-tree-history-directory-alist '(("." . "~/.emacs.df/undo"))) -(setq auto-save-default nil) - -;; straight.el -(defvar bootstrap-version) -(let ((bootstrap-file - (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) - (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 'nomessage)) -(setq straight-use-package-by-default t) -(straight-use-package 'use-package) - - -(defvar user-config-etc-directory (expand-file-name "etc/" user-emacs-directory) - "The user's configuration etc/ folder.") -(defvar user-config-var-directory (expand-file-name "var/" user-emacs-directory) - "The user's configuration var/ folder.") - -(mkdir user-config-etc-directory t) -(mkdir user-config-var-directory t) - -;; Make GC pauses faster by decreasing the threshold. - -(use-package gcmh - :config - (gcmh-mode 1)) -(setq gc-cons-threshold (* 2 1000 1000)) - -;; follow symboliclinks -(setq vc-follow-symlinks t) - -;; configuration -(setq user-full-name "JaeYoo-Im" - user-mail-address "cpu3792@gmail.com") - -(defvar gvar/default-font-size 110) -(defvar gvar/default-variable-font-size 110) -(defvar gvar/frame-transparency '(85 . 85)) - -;; Set further font and theme customizations -(custom-set-variables - '(rational-ui-default-font - '(:font "Fira Code Retina" :weight light :height 110))) - -(add-to-list 'default-frame-alist `(font . "Fira Code Retina")) -(set-face-attribute 'default nil :font "Fira Code Retina" :height 110) -(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina" :height 110) -(set-face-attribute 'variable-pitch nil :font "Fira Code Retina" :height 110 :weight 'regular) -(set-fontset-font t 'hangul (font-spec :family "D2Coding" :height 110)) -(setq face-font-rescale-alist - '(("D2Coding" . 1.25))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Theme -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(scroll-bar-mode -1) ; Disable visible scrollbar -(tool-bar-mode -1) ; Disable the toolbar -(tooltip-mode -1) ; Disable tooltips -(set-fringe-mode 10) ; Give some breathing room -(xterm-mouse-mode) - -(menu-bar-mode -1) ; Disable the menu bar - - -;;(setq visible-bell t) -;; Transparency -(defun toggle-transparency () - (interactive) - (let ((alpha (frame-parameter nil 'alpha))) - (set-frame-parameter - nil 'alpha - (if (eql (cond ((numberp alpha) alpha) - ((numberp (cdr alpha)) (cdr alpha)) - ;; Also handle undocumented ( ) form. - ((numberp (cadr alpha)) (cadr alpha))) - 100) - gvar/frame-transparency '(100 . 100))))) - -(global-set-key (kbd "C-c t") 'toggle-transparency) - -;; Set transparency & Fullscreen -(set-frame-parameter (selected-frame) 'alpha gvar/frame-transparency) -(add-to-list 'default-frame-alist `(alpha . ,gvar/frame-transparency)) -(set-frame-parameter (selected-frame) 'fullscreen 'maximized) -(add-to-list 'default-frame-alist '(fullscreen . maximized)) - -;; line number -(column-number-mode) -(global-display-line-numbers-mode t) -;; Disable line numbers for some modes -(dolist (mode '(org-mode-hook - vterm-mode-hook - shell-mode-hook - treemacs-mode-hook - dired-mode-hook - eshell-mode-hook)) - (add-hook mode (lambda () (display-line-numbers-mode 0)))) - - -(use-package doom-themes - :init - (setq doom_themes-enable-bold t - doom-themes-enablbe-italic t) - :config - (load-theme 'doom-palenight t) - ;;(load-theme 'doom-gruvbox t) - ;;(load-theme 'doom-one t) - ;;(load-theme 'doom-dracula t) - ;; Enable flashing mode-line on errors - (doom-themes-visual-bell-config) - ;; Corrects (and improves) org-mode's native fontification. - (doom-themes-org-config)) - - -(global-hl-line-mode t) -;;(use-package beacon -;; :straight t -;; :config -;; (beacon-mode)) - -(use-package doom-modeline - :init (doom-modeline-mode 1) - :custom ((doom-modeline-height 15))) - -;; Dashboard -(use-package dashboard - :ensure t - :init - (setq dashboard-set-heading-icons t) - (setq dashboard-set-file-icons t) - ;;(setq dashboard-banner-logo-title "Emacs is more than a text editor!") - ;;(dashboard-startup-banner 'logo) - (setq dashboard-startup-banner "/home/jaeus/.emacs.df/logos/emacs-e.png") - (setq dashboard-center-content t) - (setq dashboard-week-agenda t) - (setq dashboard-agenda-time-string-format "%d/%m/%Y %A %H:%M") - (setq dashboard-items '((recents . 10) - (agenda . 5) - (bookmarks . 5) - ;;(projects . 5) - (registers . 5))) - (setq dashboard-set-navigator t) - ;; Format: "(icon title help action face prefix suffix)" - (setq dashboard-navigator-buttons - `((;; Github - (,(all-the-icons-octicon "mark-github" :height 1.1 :v-adjust 0.0) - "Github" - "Browse github" - (lambda (&rest _) (browse-url "https://github.com/JaeUs3792/")))))) - ;;(,(all-the-icons-octicon "history" :height 1.1 :v-adjust 0.0) - ;; "Reload last session" - ;; "Reload last session" - ;; (lambda (&rest _) (persp-state-load persp-state-default-file)))))) - :config - (dashboard-setup-startup-hook) - (dashboard-modify-heading-icons '((recents . "file-text") - (bookmarks . "book")))) -(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) -(use-package rainbow-delimiters - :hook (prog-mode . rainbow-delimiters-mode)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Vertico -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package vertico - :ensure t - :bind (:map vertico-map - ("C-j" . vertico-next) - ("C-k" . vertico-previous)) - :custom - (vertico-cycle t) - :init - (vertico-mode)) -(use-package savehist - :init - (savehist-mode)) - -(use-package marginalia - :after vertico - :ensure t - :custom - (marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)) - :init - (marginalia-mode)) -(use-package vertico-posframe - :disabled - :after vertico - :ensure t - :init - (setq vertico-posframe-parameters - `((left-fringe . 8) - (right-fringe . 8) (alpha . 100))) - (vertico-posframe-mode 1)) -(use-package embark - :bind (("C-S-a" . embark-act) - :map minibuffer-local-map - ("C-d" . embark-act)) - :config - - ;; Show Embark actions via which-key - (setq embark-action-indicator - (lambda (map) - (which-key--show-keymap "Embark" map nil nil 'no-paging) - #'which-key--hide-popup-ignore-command) - embark-become-indicator embark-action-indicator)) - -(use-package orderless - :init - (setq completion-styles '(orderless) - completion-category-defaults nil - completion-category-overrides '((file (styles . (partial-completion)))))) - -(use-package embark-consult - :after embark) - -;;(defun dw/get-project-root () -;; (when (fboundp 'projectile-project-root) -;; (projectile-project-root))) - -(use-package consult - :demand t - :bind (("C-s" . consult-line) - ("C-M-l" . consult-imenu) - ("C-M-j" . persp-switch-to-buffer*) - :map minibuffer-local-map - ("C-r" . consult-history)) - :custom - ;;(consult-project-root-function #'dw/get-project-root) - (completion-in-region-function #'consult-completion-in-region)) -(use-package consult-dir - :straight t - :bind (("C-x C-d" . consult-dir) - :map vertico-map - ("C-x C-d" . consult-dir) - ("C-x C-j" . consult-dir-jump-file)) - :custom - (consult-dir-project-list-function nil)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Evil -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun ju/evil-hook() - (dolist (mode '(custom-mode - erc-mode)) - (add-to-list 'evil-emacs-state-modes mode))) -(use-package undo-tree - :init - (global-undo-tree-mode 1)) -(use-package evil - :ensure t - :init - (setq evil-want-integration t) - (setq evil-want-keybinding nil) - (setq evil-want-C-u-scroll t) - (setq evil-want-C-i-jump nil) - (setq evil-undo-system 'undo-tree) - :config - (add-hook 'evil-mode-hook 'ju/evil-hook) - (evil-mode 1) - (define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join) - ;;(setq-default evil-symbol-word-search t) ;; evil can identify the word with underscore. - ;; Http://blog.binchen.org/posts/auto-complete-word-in-emacs-mini-buffer-when-using-evil.html - ;;(defun minibuffer-inactive-mode-hook-setup () - ;;;; make `try-expand-dabbrev' from `hippie-expand' work in mini-buffer - ;;;; @see `he-dabbrev-beg', so we need re-define syntax for '/' - ;;(set-syntax-table (let* ((table (make-syntax-table))) - ;;(modify-syntax-entry ?/ "." table) - ;;table))) - ;;(add-hook 'minibuffer-inactive-mode-hook 'minibuffer-inactive-mode-hook-setup) - - ;; Use visual line motions even outside of visual-line-mode buffers - (evil-global-set-key 'motion "j" 'evil-next-visual-line) - (evil-global-set-key 'motion "k" 'evil-previous-visual-line) - (evil-set-initial-state 'messages-buffer-mode 'normal) - (evil-set-initial-state 'dashboard-mode 'normal)) -(use-package evil-numbers - :after evil - :config - ;; unfortunately C-x is emacs common key binding. - (define-key evil-normal-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-normal-state-map (kbd "g -") 'evil-numbers/dec-at-pt) - (define-key evil-visual-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-visual-state-map (kbd "g -") 'evil-numbers/dec-at-pt)) -(use-package evil-nerd-commenter - :after evil - :config - (define-key evil-normal-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines) - (define-key evil-visual-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines)) - -(use-package evil-collection - :after evil - :ensure t - :config - (evil-collection-init)) - -(modify-syntax-entry ?_ "w") -;;(defalias 'forward-evil-word 'forward-evil-symbol) ;; include underscore to word - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Company -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package company - :init - (add-hook 'after-init-hook 'global-company-mode) - :bind - (:map company-active-map - ("" . company-complete-selection)) - (:map lsp-mode-map - ("" . company-indent-or-complete-common)) - :config - (setq company-idle-delay 0 - company-show-numbers "on" - company-dabbrev-downcase nil - ) - (add-to-list 'company-backends 'org-keyword-backend)) -(use-package flycheck - :ensure t - :defer t - :init (global-flycheck-mode t)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Org mode -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun org-keyword-backend (command &optional arg &rest ignored) - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'org-keyword-backend)) - (prefix (and (eq major-mode 'org-mode) - (cons (company-grab-line "^#\\+\\(\\w*\\)" 1) - t))) - (candidates (mapcar #'upcase - (cl-remove-if-not - (lambda (c) (string-prefix-p arg c)) - (pcomplete-completions)))) - (ignore-case t) - (duplicates t))) - -(defun efs/org-mode-setup () - (org-indent-mode) - ;;(variable-pitch-mode 1) - (visual-line-mode 1)) - -(use-package org - :commands (org-capture org-agenda) - :hook (org-mode . efs/org-mode-setup) - :config - - (setq org-todo-keywords - '((sequence "TODO(t)" "HOLD(h)" "|" "KILL(k)" "DONE(d)"))) - (setq org-ellipsis " ▾") - (setq org-hide-emphasis-markers t) - (setq org-src-fontify-natively t) - (setq org-fontify-quote-and-verse-blocks t) - - (setq org-agenda-start-with-log-mode t) - (setq org-log-done 'time) - (setq org-log-into-drawer t) - (setq org-format-latex-options (plist-put org-format-latex-options :scale 1.8))) -(use-package org-superstar :after org :hook (org-mode . org-superstar-mode)) -(use-package org-attach-screenshot) -(use-package org-download) - -(defun efs/org-mode-visual-fill () - (setq visual-fill-column-width 100 - visual-fill-column-center-text t) - (visual-fill-column-mode 1)) - -(use-package visual-fill-column - :hook (org-mode . efs/org-mode-visual-fill)) - -(with-eval-after-load 'org - (org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) - (python . t) - (latex . t))) - - (push '("conf-unix" . conf-unix) org-src-lang-modes)) - -(with-eval-after-load 'org - ;; This is needed as of Org 9.2 - (require 'org-tempo) - - (add-to-list 'org-structure-template-alist '("sh" . "src shell")) - (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) - (add-to-list 'org-structure-template-alist '("hs" . "src haskell")) - (add-to-list 'org-structure-template-alist '("cc" . "src c")) - (add-to-list 'org-structure-template-alist '("cp" . "src c++")) - (add-to-list 'org-structure-template-alist '("rs" . "src rust")) - (add-to-list 'org-structure-template-alist '("py" . "src python")) - (add-to-list 'org-structure-template-alist '("oc" . "src octave")) - (add-to-list 'org-structure-template-alist '("vl" . "src verilog")) - (add-to-list 'org-structure-template-alist '("vh" . "src vhdl"))) - -;; ODT export to docx -(setq org-odt-preferred-output-format "docx") - -;; Do not ask when run code block -(setq org-confirm-babel-evaluate nil) - -(use-package org-contrib) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Org Roam -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package org-roam - :ensure t - :demand t ;; Ensure org-roam is loaded by default - :init - (setq org-roam-v2-ack t) - :custom - (org-roam-directory "~/Roam") - (org-roam-completion-everywhere t) - - :config - (org-roam-db-autosync-mode)) - ;;(org-roam-setup)) -(defun org-roam-node-insert-immediate (arg &rest args) - (interactive "P") - (let ((args (push arg args)) - (org-roam-capture-templates (list (append (car org-roam-capture-templates) - '(:immediate-finish t))))) - (apply #'org-roam-node-insert args))) - -(defun my/org-roam-filter-by-tag (tag-name) - (lambda (node) - (member tag-name (org-roam-node-tags node)))) - -(defun my/org-roam-list-notes-by-tag (tag-name) - (mapcar #'org-roam-node-file - (seq-filter - (my/org-roam-filter-by-tag tag-name) - (org-roam-node-list)))) - -(defun my/org-roam-refresh-agenda-list () - (interactive) - (setq org-agenda-files (my/org-roam-list-notes-by-tag "Project"))) - -;; Build the agenda list the first time for the session -(my/org-roam-refresh-agenda-list) - -(defun my/org-roam-project-finalize-hook () - "Adds the captured project file to `org-agenda-files' if the -capture was not aborted." - ;; Remove the hook since it was added temporarily - (remove-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook) - - ;; Add project file to the agenda list if the capture was confirmed - (unless org-note-abort - (with-current-buffer (org-capture-get :buffer) - (add-to-list 'org-agenda-files (buffer-file-name))))) - -(defun my/org-roam-find-project () - (interactive) - ;; Add the project file to the agenda after capture is finished - (add-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook) - - ;; Select a project file to open, creating it if necessary - (org-roam-node-find - nil - nil - (my/org-roam-filter-by-tag "Project") - :templates - '(("p" "project" plain "* Goals\n\n%?\n\n* Tasks\n\n** TODO Add initial tasks\n\n* History\n\n* Notes\n\n" - :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n#+category: ${title}\n#+filetags: Project") - :unnarrowed t)))) - -(add-to-list 'org-after-todo-state-change-hook - (lambda () - (when (equal org-state "DONE") - (my/org-roam-copy-todo-to-today)))) -(use-package websocket - :after org-roam) -(use-package org-roam-ui - :straight - (:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out")) - :after org-roam - ;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have - ;; a hookable mode anymore, you're advised to pick something yourself - ;; if you don't care about startup time, use - ;; :hook (after-init . org-roam-ui-mode) - :config - (setq org-roam-ui-sync-theme t - org-roam-ui-follow t - org-roam-ui-update-on-save t - org-roam-ui-open-on-start nil)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Org mode etc. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package ob-translate - :config - (setq ob-translate:default-dest "ko")) - -(use-package pdf-tools - :straight t - :config - (pdf-tools-install) - (setq-default pdf-view-display-size 'fit-width) - (define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward) - :custom - (pdf-annot-activate-created-annotations t "automatically annotate highlights")) -(use-package org-pdfview - :straight t) -(use-package org-noter) -(setq org-publish-use-timestamps-flag nil) -(setq org-export-with-broken-lilnks t) -(setq org-publish-project-alist - '(("jaeus.net" - :base-directory "~/Roam/www/" - :base-extension "org" - :publishing-directory "~/Projects/html/" - :recursive t - :publishing-function org-html-publish-to-html - :headline-levels 4 - :auto-preamble t))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Magit -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package magit - :commands (magit-status magit-get-current-branch) - :custom - (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) -;; NOTE: Make sure to configure a GitHub token before using this package! -;; - https://magit.vc/manual/forge/Token-Creation.html#Token-Creation -;; - https://magit.vc/manual/ghub/Getting-Started.html#Getting-Started -(use-package forge - :after magit) -(use-package magit-todos - :defer t) -(use-package git-link) -(use-package git-gutter - :straight git-gutter-fringe - ;;:diminish - :hook ((text-mode . git-gutter-mode) - (prog-mode . git-gutter-mode)) - :config - (setq git-gutter:update-interval 2) - (require 'git-gutter-fringe) - (set-face-foreground 'git-gutter-fr:added "LightGreen") - (fringe-helper-define 'git-gutter-fr:added nil - ".XXXXXX." - "XX....XX" - "X......X" - "X......X" - "XXXXXXXX" - "XXXXXXXX" - "X......X" - "X......X") - - (set-face-foreground 'git-gutter-fr:modified "LightGoldenrod") - (fringe-helper-define 'git-gutter-fr:modified nil - "XXXXXXXX" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X") - - (set-face-foreground 'git-gutter-fr:deleted "LightCoral") - (fringe-helper-define 'git-gutter-fr:deleted nil - "XXXXXX.." - "XX....X." - "XX.....X" - "XX.....X" - "XX.....X" - "XX.....X" - "XX....X." - "XXXXXX..") - - ;; These characters are used in terminal mode - (setq git-gutter:modified-sign "≡") - (setq git-gutter:added-sign "≡") - (setq git-gutter:deleted-sign "≡") - (set-face-foreground 'git-gutter:added "LightGreen") - (set-face-foreground 'git-gutter:modified "LightGoldenrod") - (set-face-foreground 'git-gutter:deleted "LightCoral")) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; EShell -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package exec-path-from-shell) -(exec-path-from-shell-initialize) -(defun dw/get-prompt-path () - (let* ((current-path (eshell/pwd)) - (git-output (shell-command-to-string "git rev-parse --show-toplevel")) - (has-path (not (string-match "^fatal" git-output)))) - (if (not has-path) - (abbreviate-file-name current-path) - (string-remove-prefix (file-name-directory git-output) current-path)))) - -(defun dw/eshell-prompt () - (let ((current-branch (magit-get-current-branch))) - (concat - "\n" - (propertize (system-name) 'face `(:foreground "#62aeed")) - (propertize " ॐ " 'face `(:foreground "white")) - (propertize (dw/get-prompt-path) 'face `(:foreground "#82cfd3")) - (when current-branch - (concat - (propertize " • " 'face `(:foreground "white")) - (propertize (concat " " current-branch) 'face `(:foreground "#c475f0")))) - (propertize " • " 'face `(:foreground "white")) - (propertize (format-time-string "%I:%M:%S %p") 'face `(:foreground "#5a5b7f")) - (if (= (user-uid) 0) - (propertize "\n#" 'face `(:foreground "red2")) - (propertize "\nλ" 'face `(:foreground "#aece4a"))) - (propertize " " 'face `(:foreground "white"))))) - -(defun efs/configure-eshell () - ;; Save command history when commands are entered - (add-hook 'eshell-pre-command-hook 'eshell-save-some-history) - - ;; Truncate buffer for performance - (add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer) - - ;; Bind some useful keys for evil-mode - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "C-r") 'counsel-esh-history) - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "") 'eshell-bol) - (evil-normalize-keymaps) - - (setq eshell-prompt-function 'dw/eshell-prompt - eshell-prompt-regexp "^λ " - eshell-history-size 10000 - eshell-buffer-maximum-lines 10000 - eshell-hist-ignoredups t - eshell-scroll-to-bottom-on-input t)) - -(use-package eshell-git-prompt - :after eshell) - -(use-package eshell - :hook (eshell-first-time-mode . efs/configure-eshell) - :config - - (with-eval-after-load 'esh-opt - (setq eshell-destroy-buffer-when-process-dies t) - (setq eshell-visual-commands '("htop" "zsh" "vim")))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Dired -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package dired - :ensure nil - :straight nil - :commands (dired dired-jump) - :bind (("C-x C-j" . dired-jump)) - :custom ((dired-listing-switches "-agho --group-directories-first")) - :config - (evil-collection-define-key 'normal 'dired-mode-map - "h" 'dired-single-up-directory - "l" 'dired-single-buffer)) -(autoload 'dired-omit-mode "dired-x") -(add-hook 'dired-load-hook - (lambda () - (interactive) - (dired-collapse))) -;; to use h,l key -(use-package dired-single - :commands (dired dired-jump)) -(use-package diredfl - :hook (dired-mode . diredfl-mode)) - -;; from doom emacs -(defun +dired-enable-git-info-h () - "Enable `dired-git-info-mode' in git repos." - (and (not (file-remote-p default-directory)) - (locate-dominating-file "." ".git") - (dired-git-info-mode 1))) -(use-package dired-git-info) -(use-package diff-hl - :hook (dired-mode . diff-hl-dired-mode-unless-remote) - :hook (magit-post-refresh . diff-hl-magit-post-refresh) - :config - ;; use margin instead of fringe - (diff-hl-margin-mode)) -(use-package dired-rsync - :config - (bind-key "C-c C-r" 'dired-rsync dired-mode-map)) -(use-package all-the-icons-dired - :hook (dired-mode . all-the-icons-dired-mode) - :config - ;; HACK Fixes #1929: icons break file renaming in Emacs 27+, because the icon - ;; is considered part of the filename, so we disable icons while we're in - ;; wdired-mode. - ;;(when EMACS27+ - (defvar +wdired-icons-enabled -1)) - -;;(defadvice! +dired-disable-icons-in-wdired-mode-a (&rest _) -;; :before #'wdired-change-to-wdired-mode -;; (setq-local +wdired-icons-enabled (if all-the-icons-dired-mode 1 -1)) -;; (when all-the-icons-dired-mode -;; (all-the-icons-dired-mode -1))) - -;;(defadvice! +dired-restore-icons-after-wdired-mode-a (&rest _) -;; :after #'wdired-change-to-dired-mode -;; (all-the-icons-dired-mode +wdired-icons-enabled)))) -;;(use-package fd-dired) - -(use-package dired-hide-dotfiles - :hook (dired-mode . dired-hide-dotfiles-mode) - :config - (evil-collection-define-key 'normal 'dired-mode-map - "H" 'dired-hide-dotfiles-mode)) -;;(use-package ranger -;; :config -;; (setq ranger-preview-file t) -;; (setq ranger-show-preview t) -;; (setq ranger-show-literal nil) -;; (ranger-override-dired-mode t)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Support File Type -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; EPUB Support -(use-package nov) -(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ELFEED RSS -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package elfeed - :config - (setq elfeed-search-feed-face ":foreground #fff :weight bold" - elfeed-feeds (quote - (("https://www.reddit.com/r/linux.rss" reddit linux) - ("https://www.reddit.com/r/emacs.rss" reddit emacs) - ("https://www.gamingonlinux.com/article_rss.php" gaming linux) - ("https://hackaday.com/blog/feed/" hackaday linux) - ("https://opensource.com/feed" opensource linux) - ("https://linux.softpedia.com/backend.xml" softpedia linux) - ("https://itsfoss.com/feed/" itsfoss linux) - ("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux) - ("https://www.phoronix.com/rss.php" phoronix linux) - ("http://feeds.feedburner.com/d0od" omgubuntu linux) - ("https://www.computerworld.com/index.rss" computerworld linux) - ("https://www.networkworld.com/category/linux/index.rss" networkworld linux) - ("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux) - ("https://betanews.com/feed" betanews linux) - ("http://lxer.com/module/newswire/headlines.rss" lxer linux) - ("https://coolenjoy.net/rss?bo_table=38" coolenjoy IT) - ("https://gigglehd.com/gg/ggnews/rss" giggle IT))))) - -(use-package elfeed-goodies - :init - (elfeed-goodies/setup) - :config - (setq elfeed-goodies/entry-pane-size 0.5)) - -(add-hook 'elfeed-show-mode-hook 'visual-line-mode) -(evil-define-key 'normal elfeed-show-mode-map - (kbd "J") 'elfeed-goodies/split-show-next - (kbd "K") 'elfeed-goodies/split-show-prev) -(evil-define-key 'normal elfeed-search-mode-map - (kbd "J") 'elfeed-goodies/split-show-next - (kbd "K") 'elfeed-goodies/split-show-prev) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; LSP -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package lsp-mode - :init - ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") - (setq lsp-keymap-prefix "C-c l") - :hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode) - (c++-mode . lsp) - (verilog-mode . lsp) - ;; if you want which-key integration - (lsp-mode . lsp-enable-which-key-integration)) - :commands lsp) - -;; optionally -(use-package lsp-ui :commands lsp-ui-mode) -;; if you are ivy user -(use-package lsp-ivy :commands lsp-ivy-workspace-symbol) -(use-package lsp-treemacs :commands lsp-treemacs-errors-list) -;; optionally if you want to use debugger -(use-package dap-mode) -;; (use-package dap-LANGUAGE) to load the dap adapter for your language -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Language Support -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package rust-mode) -(use-package jupyter - :straight t) -(org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) ;; Other languages - (shell . t) - ;; Python & Jupyter - (python . t) - (jupyter . t))) -(org-babel-jupyter-override-src-block "python") -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Keymap -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package which-key - :defer 0 - :diminish which-key-mode - :config - (which-key-mode) - (setq which-key-idle-delay 0.5)) - -(use-package general - :ensure t - :config - (general-evil-setup t) - (general-create-definer ju/leader-key-def - :keymaps '(normal insert visual emacs) - :prefix "SPC" - :global-prefix "C-SPC")) - -(ju/leader-key-def - "." 'find-file - ;; Buffer - "b" '(:ignore t :which-key "buffer handling") - "b b" '(ibuffer :which-key "IBuffer") - "b k" '(kill-current-buffer :which-key "Kill current buffer") - "b n" '(next-buffer :which-key "Next buffer") - "b p" '(previous-buffer :which-key "Previous buffer") - "b B" '(ibuffer-list-buffers :which-key "IBuffer List Buffers") - "b K" '(kill-buffer :which-key "IBuffer Kill Buffers") - ;; Eshell - "e" '(:ignore t :which-key "eshell") - "e h" '(counsel-esh-history :which "Kill history") - "e s" '(eshell :which "run eshell") - ;; Magit - "g" 'magit - ;; Workspace - ;; Counsel - "f" '(:ignore t :which-key "file op.") - "f r" '(consult-recent-file :which-key "Recent files") - "f R" '(revert-buffer :which-key "Revert Buffer") - "t t" '(toggle-truncate-lines :which-key "Toggle truncate lines") - ;; Shortcut - "f d d" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.df/desktop.el")) :which-key "open exwm config") - "f d e" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.df/init.el")) :which-key "open emacs config") - ;; Insert something - "i" '(:ignore t :which-key "insert something.") - "ie" '(emojify-insert-emoji :which-key "emoji") - ;; AVY (easymotion) - "v" '(:ignore t :which-key "Avy") - "vc" '(avy-goto-char :which-key "Avy Goto Char") - "vw" '(avy-goto-word-0 :which-key "Avy Goto Word") - "vl" '(avy-goto-line :which-key "Avy Goto Line") - ;; Org mode - "o" '(:ignore t :which-key "Org mode") - "oa" '(:ignore t :which-key "Org Agenda") - "oar" '(my/org-roam-refresh-agenda-list :which-key "Org agenda refresh list") - "oaa" '(org-agenda :which-key "open org agenda") - ;; project.el - "p" '(:ignore t :which-key "Project") - "p." 'project-find-file - "ps" 'project-switch-project - "pg" 'consult-ripgrep - "pc" 'project-compile - "pd" 'project-dired - ;; Org roam - "r" '(:ignore t :which-key "Org Roam") - "ru" 'org-roam-ui-open - "rl" 'org-roam-buffer-toggle - "rf" 'org-roam-node-find - "ri" 'org-roam-node-insert - "rI" 'org-roam-node-insert-immediate - "rp" 'my/org-roam-find-project) - -(global-set-key (kbd "C-M-j") 'consult-buffer) -;; Key binding -;; Make ESC quit prompts -(global-set-key (kbd "") 'keyboard-escape-quit) -;; this annoying binding. -(global-unset-key (kbd "C-j")) -(global-unset-key (kbd "C-k")) -(global-unset-key (kbd "S-SPC")) ;; use only S-\ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ETC -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package emojify - :hook (after-init . global-emojify-mode)) -(use-package super-save - :defer 1 - :diminish super-save-mode - :config - (super-save-mode +1) - (setq super-save-auto-save-when-idle t)) -(setq global-auto-revert-non-file-buffers t) -(global-auto-revert-mode 1) -;; tramp default is scp -(setq tramp-default-method "ssh") -;; AVY (like easymotion) -(use-package avy - :straight t - :commands (avy-goto-char avy-goto-word-0 avy-goto-line)) -(use-package hl-todo - :straight t - :hook (prog-mode . hl-todo-mode) - :hook (yaml-mode . hl-todo-mode) - :config - (setq hl-todo-highlight-punctuation ":" - hl-todo-keyword-faces - `(;; For things that need to be done, just not today. - ("TODO" warning bold) - ;; For problems that will become bigger problems later if not - ;; fixed ASAP. - ("FIXME" error bold) - ;; For tidbits that are unconventional and not intended uses of the - ;; constituent parts, and may break in a future update. - ("HACK" font-lock-constant-face bold) - ;; For things that were done hastily and/or hasn't been thoroughly - ;; tested. It may not even be necessary! - ("REVIEW" font-lock-keyword-face bold) - ;; For especially important gotchas with a given implementation, - ;; directed at another user other than the author. - ("NOTE" success bold) - ;; For things that just gotta go and will soon be gone. - ("DEPRECATED" font-lock-doc-face bold) - ;; For a known bug that needs a workaround - ("BUG" error bold) - ;; For warning about a problematic or misguiding code - ("XXX" font-lock-constant-face bold))) - (global-hl-todo-mode)) - -(use-package helpful - :commands (helpful-callable helpful-variable helpful-command helpful-key) - :custom - (counsel-describe-function-function #'helpful-callable) - (counsel-describe-variable-function #'helpful-variable) - :bind - ([remap describe-function] . describe-function) - ([remap describe-command] . helpful-command) - ([remap describe-variable] . describe-variable) - ([remap describe-key] . helpful-key)) -(use-package openwith - :after dired - :config - (setq larget-file-warning-threshold nil) - (openwith-mode t) - (setq openwith-associations - (list (list (openwith-make-extension-regexp - '("mpg" "mpeg" "mp3" "mp4" "m4v" - "avi" "wmv" "wav" "mov" "flv" - "ogm" "ogg" "mkv")) - "mpv" - '(file)) - (list (openwith-make-extension-regexp - '("pdf")) - "zathura" - '(file))))) -(use-package vlf - :config (progn - (require 'vlf-setup))) - -;; Don't let ediff break EXWM, keep it in one frame -(setq ediff-diff-options "-w" - ediff-split-window-function 'split-window-horizontally - ediff-window-setup-function 'ediff-setup-windows-plain) - diff --git a/.emacs.df/logos/emacs-e.png b/.emacs.df/logos/emacs-e.png deleted file mode 100644 index 0c5cd63..0000000 Binary files a/.emacs.df/logos/emacs-e.png and /dev/null differ diff --git a/.emacs.doom.d/black-hole.png b/.emacs.doom.d/black-hole.png deleted file mode 100755 index 457bc55..0000000 Binary files a/.emacs.doom.d/black-hole.png and /dev/null differ diff --git a/.emacs.doom.d/config.el b/.emacs.doom.d/config.el deleted file mode 100644 index a06f4fb..0000000 --- a/.emacs.doom.d/config.el +++ /dev/null @@ -1,200 +0,0 @@ -;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- - -;; Place your private configuration here! Remember, you do not need to run 'doom -;; sync' after modifying this file! - - -;; Some functionality uses this to identify you, e.g. GPG configuration, email -;; clients, file templates and snippets. -;; Initial Setup -(setq user-full-name "JaeYoo,Im" - user-mail-address "cpu3792@gmail.com") -(set-default-coding-systems 'utf-8) -(setq default-input-method "korean-hangul") - -;; UI -(set-frame-parameter (selected-frame) 'alpha '(90 . 90)) -(add-to-list 'default-frame-alist '(alpha . (90 . 90))) -(set-frame-parameter (selected-frame) 'fullscreen 'maximized) -(add-to-list 'default-frame-alist '(fullscreen . maximized)) - -(scroll-bar-mode 1) -(setq doom-modeline-major-mode-icon t) -(setq doom-modeline-major-mode-color-icon t) - - - -;; Doom exposes five (optional) variables for controlling fonts in Doom. Here -;; are the three important ones: -;; -;; + `doom-font' -;; + `doom-variable-pitch-font' -;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for -;; presentations or streaming. -;; -;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd -;; font string. You generally only need these two: -;; (setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light) -;; doom-variable-pitch-font (font-spec :family "sans" :size 13)) -(setq doom-font (font-spec :family "Fira Code Retina" :size 14)) -(set-fontset-font "fontset-default" '(#x1100 . #xffdc) - '("Noto Sans CJK KR" . "unicode-bmp")) -(setq face-font-rescale-alist '(("Noto Sans CJK KR" . 2))) -(setq fancy-splash-image "~/.doom.d/black-hole.png") -;;(setq fancy-splash-image "~/.doom.d/emacs-e.png") - -;; There are two ways to load a theme. Both assume the theme is installed and -;; available. You can either set `doom-theme' or manually load a theme with the -;; `load-theme' function. This is the default: -;;(setq doom-theme 'doom-palenight) -(setq doom-theme 'doom-gruvbox) - -;; If you use `org' and don't want your org files in the default location below, -;; change `org-directory'. It must be set before org loads! -(setq org-directory "~/Org/") -;;(setq org-roam-directory "~/Roam/") -(setq org-agenda-files - '("~/Roam/Agenda/Agenda-2021-6th.org")) - -;; This determines the style of line numbers in effect. If set to `nil', line -;; numbers are disabled. For relative line numbers, set this to `relative'. -(setq display-line-numbers-type t) -(after! org - (add-hook 'org-mode-hook (lambda () (display-line-numbers-mode 0))) - (require 'org-tempo) - (add-to-list 'org-structure-template-alist '("sh" . "src shell")) - (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) - (add-to-list 'org-structure-template-alist '("py" . "src python")) - (add-to-list 'org-structure-template-alist '("cc" . "src c")) - (add-to-list 'org-structure-template-alist '("cp" . "src c++")) - (add-to-list 'org-structure-template-alist '("rs" . "src rust")) - (add-to-list 'org-structure-template-alist '("hk" . "src haskell"))) - - -;; Roam -;;(use-package org-roam-server -;; :ensure t -;; :config -;; (setq org-roam-server-host "127.0.0.1" -;; org-roam-server-port 8080 -;; org-roam-server-authenticate nil -;; org-roam-server-export-inline-images t -;; org-roam-server-serve-files nil -;; org-roam-server-served-file-extensions '("pdf" "mp4" "ogv") -;; org-roam-server-network-poll t -;; org-roam-server-network-arrows nil -;; org-roam-server-network-label-truncate t -;; org-roam-server-network-label-truncate-length 60 -;; org-roam-server-network-label-wrap-length 20)) -;; -;;(defun org-roam-server-open () -;; "Ensure the server is active, then open the roam graph." -;; (interactive) -;; (smartparens-global-mode -1) -;; (org-roam-server-mode 1) -;; (browse-url-xdg-open (format "http://localhost:%d" org-roam-server-port)) -;; (smartparens-global-mode 1)) -;; -;;;; automatically enable server-mode -;;(after! org-roam -;; (smartparens-global-mode -1) -;; (org-roam-server-mode) -;; (smartparens-global-mode 1)) - -;; Dired -(evil-define-key 'normal dired-mode-map - (kbd "h") 'dired-up-directory - (kbd "l") 'dired-find-file) -(add-hook 'dired-mode-hook 'dired-hide-dotfiles-mode) -(evil-define-key 'normal 'dired-mode-map - (kbd "H") 'dired-hide-dotfiles-mode) - -;; Tramp -(setq tramp-default-method "ssh") -(customize-set-variable 'tramp-inline-compress-start-size nil) -(customize-set-variable 'tramp-copy-size-limit nil) - -;; Open with -(require 'openwith) -(setq large-file-warning-threshold nil) -(after! dired - (openwith-mode t) - (setq openwith-associations - (list (list (openwith-make-extension-regexp - '("mpg" "mpeg" "mp3" "mp4" "m4v" - "avi" "wmv" "wav" "mov" "flv" - "ogm" "ogg" "mkv")) - "mpv" - '(file))))) -;; Nov mode -(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) - -;; Very large file -(use-package! vlf-setup - :defer-incrementally vlf-tune vlf-base vlf-write vlf-search vlf-occur vlf-follow vlf-ediff vlf) - -(use-package exec-path-from-shell - :ensure - :init (exec-path-from-shell-initialize)) - -(use-package dap-mode - :ensure - :config - (dap-ui-mode) - (dap-ui-controls-mode 1) - - (require 'dap-lldb) - (require 'dap-gdb-lldb) - ;; installs .extension/vscode - (dap-gdb-lldb-setup) - (dap-register-debug-template - "Rust::LLDB Run Configuration" - (list :type "lldb" - :request "launch" - :name "LLDB::Run" - :gdbpath "rust-lldb" - :target nil - :cwd nil)) - (dap-register-debug-template - "Rust::GDB Run Configuration" - (list :type "gdb" - :request "launch" - :name "GDB::Run" - :gdbpath "rust-gdb" - :target nil - :cwd nil))) - -;; Time -(setq display-time-world-list - '(("Etc/UTC" "UTC") - ("Asia/Seoul" "Seoul") - ("Asia/Shanghai" "Shanghai"))) -(setq display-time-world-time-format "%a, %d %b %I:%M %p %Z") - - -;; Key binding -(global-unset-key (kbd "C-j")) -(global-unset-key (kbd "C-k")) -(global-unset-key (kbd "C-s")) -(global-set-key (kbd "C-s") 'swiper) -(map! :leader - (:prefix-map ("e" . "eshell") - :desc "open e-shell" "s" #'eshell)) - - -;; Here are some additional functions/macros that could help you configure Doom: -;; -;; - `load!' for loading external *.el files relative to this one -;; - `use-package!' for configuring packages -;; - `after!' for running code after a package has loaded -;; - `add-load-path!' for adding directories to the `load-path', relative to -;; this file. Emacs searches the `load-path' when you load packages with -;; `require' or `use-package'. -;; - `map!' for binding new keys -;; -;; To get information about any of these functions/macros, move the cursor over -;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). -;; This will open documentation for it, including demos of how they are used. -;; -;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how -;; they are implemented. diff --git a/.emacs.doom.d/init.el b/.emacs.doom.d/init.el deleted file mode 100644 index 4cbf260..0000000 --- a/.emacs.doom.d/init.el +++ /dev/null @@ -1,205 +0,0 @@ -;;; init.el -*- lexical-binding: t; -*- - -;; This file controls what Doom modules are enabled and what order they load -;; in. Remember to run 'doom sync' after modifying it! - -;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's -;; documentation. There you'll find a "Module Index" link where you'll find -;; a comprehensive list of Doom's modules and what flags they support. - -;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or -;; 'C-c c k' for non-vim users) to view its documentation. This works on -;; flags as well (those symbols that start with a plus). -;; -;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its -;; directory (for easy access to its source code). - -(doom! :input - ;;chinese - ;;japanese - ;;layout ; auie,ctsrnm is the superior home row - - :completion - company ; the ultimate code completion backend - ;;helm ; the *other* search engine for love and life - ;;ido ; the other *other* search engine... - ;;(ivy +icons) ; a search engine for love and life - (vertico +icons) ; the search engine of the future - - :ui - ;;deft ; notational velocity for Emacs - doom ; what makes DOOM look the way it does - doom-dashboard ; a nifty splash screen for Emacs - doom-quit ; DOOM quit-message prompts when you quit Emacs - (emoji +unicode) ; 🙂 - hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW - ;;hydra - ;;indent-guides ; highlighted indent columns - ;;ligatures ; ligatures and symbols to make your code pretty again - ;;minimap ; show a map of the code on the side - modeline ; snazzy, Atom-inspired modeline, plus API - ;;nav-flash ; blink cursor line after big motions - ;;neotree ; a project drawer, like NERDTree for vim - ophints ; highlight the region an operation acts on - (popup +defaults) ; tame sudden yet inevitable temporary windows - ;;tabs ; a tab bar for Emacs - ;;treemacs ; a project drawer, like neotree but cooler - unicode ; extended unicode support for various languages - vc-gutter ; vcs diff in the fringe - vi-tilde-fringe ; fringe tildes to mark beyond EOB - ;;window-select ; visually switch windows - workspaces ; tab emulation, persistence & separate workspaces - ;;zen ; distraction-free coding or writing - - :editor - (evil +everywhere); come to the dark side, we have cookies - file-templates ; auto-snippets for empty files - fold ; (nigh) universal code folding - ;;(format +onsave) ; automated prettiness - ;;god ; run Emacs commands without modifier keys - ;;lispy ; vim for lisp, for people who don't like vim - ;;multiple-cursors ; editing in many places at once - ;;objed ; text object editing for the innocent - ;;parinfer ; turn lisp into python, sort of - ;;rotate-text ; cycle region at point between text candidates - snippets ; my elves. They type so I don't have to - ;;word-wrap ; soft wrapping with language-aware indent - - :emacs - (dired +icons) ; making dired pretty [functional] - electric ; smarter, keyword-based electric-indent - (ibuffer +icons) ; interactive buffer management - undo ; persistent, smarter undo for your inevitable mistakes - vc ; version-control and Emacs, sitting in a tree - - :term - eshell ; the elisp shell that works everywhere - ;;shell ; simple shell REPL for Emacs - ;;term ; basic terminal emulator for Emacs - ;;vterm ; the best terminal emulation in Emacs - - :checkers - syntax ; tasing you for every semicolon you forget - ;;(spell +flyspell) ; tasing you for misspelling mispelling - ;;grammar ; tasing grammar mistake every you make - - :tools - ;;ansible - ;;debugger ; FIXME stepping through code, to help you add bugs - ;;direnv - ;;docker - ;;editorconfig ; let someone else argue about tabs vs spaces - ;;ein ; tame Jupyter notebooks with emacs - (eval +overlay) ; run code, run (also, repls) - ;;gist ; interacting with github gists - lookup ; navigate your code and its documentation - lsp ; M-x vscode - (magit +forge) ; a git porcelain for Emacs - ;;make ; run make tasks from Emacs - ;;pass ; password manager for nerds - pdf ; pdf enhancements - ;;prodigy ; FIXME managing external services & code builders - ;;rgb ; creating color strings - ;;taskrunner ; taskrunner for all your projects - ;;terraform ; infrastructure as code - ;;tmux ; an API for interacting with tmux - ;;upload ; map local to remote projects via ssh/ftp - - :os - (:if IS-MAC macos) ; improve compatibility with macOS - ;;tty ; improve the terminal Emacs experience - - :lang - ;;agda ; types of types of types of types... - ;;beancount ; mind the GAAP - ;;(cc +lsp) ; C > C++ == 1 - cc ; C > C++ == 1 - ;;clojure ; java with a lisp - ;;common-lisp ; if you've seen one lisp, you've seen them all - ;;coq ; proofs-as-programs - ;;crystal ; ruby at the speed of c - ;;csharp ; unity, .NET, and mono shenanigans - ;;data ; config/data formats - ;;(dart +flutter) ; paint ui and not much else - ;;dhall - ;;elixir ; erlang done right - ;;elm ; care for a cup of TEA? - emacs-lisp ; drown in parentheses - ;;erlang ; an elegant language for a more civilized age - ;;ess ; emacs speaks statistics - ;;factor - ;;faust ; dsp, but you get to keep your soul - ;;fsharp ; ML stands for Microsoft's Language - ;;fstar ; (dependent) types and (monadic) effects and Z3 - ;;gdscript ; the language you waited for - ;;(go +lsp) ; the hipster dialect - (haskell +dante) ; a language that's lazier than I am - ;;hy ; readability of scheme w/ speed of python - ;;idris ; a language you can depend on - json ; At least it ain't XML - ;;(java +meghanada) ; the poster child for carpal tunnel syndrome - ;;javascript ; all(hope(abandon(ye(who(enter(here)))))) - ;;julia ; a better, faster MATLAB - ;;kotlin ; a better, slicker Java(Script) - (latex ; writing papers in Emacs has never been so fun - +cdlatex ; Enable cdlatex for fast math insertion. - +fold) ; Use TeX-fold (from auctex) to fold LaTeX macros to unicode, and make folding hook-based and less manual. - ;;lean ; for folks with too much to prove - ;;ledger ; be audit you can be - ;;lua ; one-based indices? one-based indices - markdown ; writing docs for people to ignore - ;;nim ; python + lisp at the speed of c - ;;nix ; I hereby declare "nix geht mehr!" - ;;ocaml ; an objective camel - (org ; organize your plain life in plain text - ;;+brain ; Enables org-brain integration. - +dragndrop ; Enables drag-and-drop support for images and files; inserts inline previews for images and an icon+link for other media types. - +gnuplot ; Installs gnuplot & gnuplot-mode, which enables rendering images from gnuplot src blocks or plotting tables with org-plot/gnuplot (bound to SPC m b p, by default). - ;;+hugo ; Enables integration with hugo to export from Emacs well-formed (blackfriday) markdown. - ;;+journal ; Enables org-journal integration. - ;;+jupyter ; Enables Jupyter integration for babel. - +noter ; Enables org-noter integration. Keeps notes in sync with a document. Requires pdf-tools (:tools pdf) or DocView or nov.el to be enabled. - +pandoc ; Enables pandoc integration into the Org exporter. - ;;+pomodoro ; Enables a pomodoro timer for clocking time on tasks. - ;;+present ; Enables integration with reveal.js, beamer and org-tree-slide, so Emacs can be used for presentations. It automatically downloads reveal.js. - +pretty ; Enables pretty unicode symbols for bullets and priorities, and better syntax highlighting for latex. Keep in mind: this can be expensive. If org becomes too slow, it’d be wise to disable this flag. - +roam2 ; Enables org-roam integration. This requires sqlite3 to be installed on your system. - ) - ;;php ; perl's insecure younger brother - ;;plantuml ; diagrams for confusing people more - ;;purescript ; javascript, but functional - python ; beautiful is better than ugly - ;;qt ; the 'cutest' gui framework ever - ;;racket ; a DSL for DSLs - ;;raku ; the artist formerly known as perl6 - ;;rest ; Emacs as a REST client - ;;rst ; ReST in peace - ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} - (rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() - ;;scala ; java, but good - ;;(scheme +guile) ; a fully conniving family of lisps - sh ; she sells {ba,z,fi}sh shells on the C xor - ;;sml - ;;solidity ; do you need a blockchain? No. - ;;swift ; who asked for emoji variables? - ;;terra ; Earth and Moon in alignment for performance. - ;;web ; the tubes - ;;yaml ; JSON, but readable - ;;zig ; C, but simpler - - :email - (mu4e +org +gmail) - ;;notmuch - ;;(wanderlust +gmail) - - :app - ;;calendar - ;;emms - ;;everywhere ; *leave* Emacs!? You must be joking - ;;irc ; how neckbeards socialize - ;;(rss +org) ; emacs as an RSS reader - ;;twitter ; twitter client https://twitter.com/vnought - - :config - ;;literate - (default +bindings +smartparens)) diff --git a/.emacs.doom.d/packages.el b/.emacs.doom.d/packages.el deleted file mode 100644 index cffc8dc..0000000 --- a/.emacs.doom.d/packages.el +++ /dev/null @@ -1,60 +0,0 @@ -;; -*- no-byte-compile: t; -*- -;;; $DOOMDIR/packages.el - -;; To install a package with Doom you must declare them here and run 'doom sync' -;; on the command line, then restart Emacs for the changes to take effect -- or -;; use 'M-x doom/reload'. - - -;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: -;(package! some-package) - -;; To install a package directly from a remote git repo, you must specify a -;; `:recipe'. You'll find documentation on what `:recipe' accepts here: -;; https://github.com/raxod502/straight.el#the-recipe-format -;(package! another-package -; :recipe (:host github :repo "username/repo")) - -;; If the package you are trying to install does not contain a PACKAGENAME.el -;; file, or is located in a subdirectory of the repo, you'll need to specify -;; `:files' in the `:recipe': -;(package! this-package -; :recipe (:host github :repo "username/repo" -; :files ("some-file.el" "src/lisp/*.el"))) - -;; If you'd like to disable a package included with Doom, you can do so here -;; with the `:disable' property: -;(package! builtin-package :disable t) - -;; You can override the recipe of a built in package without having to specify -;; all the properties for `:recipe'. These will inherit the rest of its recipe -;; from Doom or MELPA/ELPA/Emacsmirror: -;(package! builtin-package :recipe (:nonrecursive t)) -;(package! builtin-package-2 :recipe (:repo "myfork/package")) - -;; Specify a `:branch' to install a package from a particular branch or tag. -;; This is required for some packages whose default branch isn't 'master' (which -;; our package manager can't deal with; see raxod502/straight.el#279) -;(package! builtin-package :recipe (:branch "develop")) - -;; Use `:pin' to specify a particular commit to install. -;(package! builtin-package :pin "1a2b3c4d5e") - - -;; Doom's packages are pinned to a specific commit and updated from release to -;; release. The `unpin!' macro allows you to unpin single packages... -;(unpin! pinned-package) -;; ...or multiple packages -;(unpin! pinned-package another-pinned-package) -;; ...Or *all* packages (NOT RECOMMENDED; will likely break things) -;(unpin! t) - - -;;(package! org-roam-server) -(package! dired-hide-dotfiles) -(package! openwith) -(package! nov) -(package! vlf) -(package! swiper) -(package! exec-path-from-shell) -(package! dap-mode) diff --git a/.emacs.rational.d/config.el b/.emacs.rational.d/config.el deleted file mode 100644 index e14b4dc..0000000 --- a/.emacs.rational.d/config.el +++ /dev/null @@ -1,807 +0,0 @@ -;;; example-config.el -- Example Rational Emacs user customization file -*- lexical-binding: t; -*- - -;;; Commentary: -;; -;; Rational Emacs supports user customization through a `config.el' file -;; similar to this one. You can copy this file as `config.el' to your -;; Rational Emacs configuration directory as an example. -;; -;; In your configuration you can set any Emacs configuration variable, face -;; attributes, themes, etc as you normally would. -;; -;; See the README.org file in this repository for additional information. - -;;; Code: -(require 'rational-defaults) -;;(require 'rational-screencast) -(require 'rational-ui) -;;(require 'rational-editing) -(require 'rational-evil) -(require 'rational-completion) -;;(require 'rational-windows) -(require 'rational-use-package) - -;; Load auctex -(load "auctex.el" nil t t) -(load "preview-latex.el" nil t t) - -;; backup in one place. flat, no tree structure -(setq backup-directory-alist '(("." . "~/.emacs.rational.d/backups"))) -(customize-set-variable - 'tramp-backup-directory-alist backup-directory-alist) -(setq undo-tree-history-directory-alist '(("." . "~/.emacs.rational.d/undo"))) - -;; tab size -(setq-default indent-tabs-mode t) -(setq-default tab-width 4) -(setq-default evil-shift-width tab-width) - -(setq user-full-name "JaeYoo-Im" - user-mail-address "cpu3792@gmail.com") - -(setq system-time-locale "C") -(setenv "LANG" "en_US.UTF-8") -(setenv "LC_ALL" "en_US.UTF-8") - -;; Set further font and theme customizations -(custom-set-variables - '(rational-ui-default-font - '(:font "Fira Code Retina" :weight light :height 110))) - -(add-to-list 'default-frame-alist `(font . "Fira Code Retina")) -(set-face-attribute 'default nil :font "Fira Code Retina" :height 110) -(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina" :height 110) -(set-face-attribute 'variable-pitch nil :font "Fira Code Retina" :height 110 :weight 'regular) -(set-fontset-font t 'hangul (font-spec :family "D2Coding" :height 110)) -(setq face-font-rescale-alist - '(("D2Coding" . 1.25))) - -;; Fullscreen -(set-frame-parameter (selected-frame) 'fullscreen 'maximized) -(add-to-list 'default-frame-alist '(fullscreen . maximized)) -(set-frame-parameter (selected-frame) 'alpha '(80 . 80)) - -;; Favorite Themes -(load-theme 'doom-palenight t) -;;(load-theme 'doom-gruvbox t) -;;(load-theme 'doom-one t) -;;(load-theme 'doom-dracula t) - - -(straight-use-package 'use-package) - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Additional Evil -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(setq evil-want-C-u-scroll t) -;; EVIL Numbers -(use-package evil-numbers - :straight t - :after evil - :config - ;; unfortunately C-x is emacs common key binding. - (define-key evil-normal-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-normal-state-map (kbd "g -") 'evil-numbers/dec-at-pt) - (define-key evil-visual-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-visual-state-map (kbd "g -") 'evil-numbers/dec-at-pt)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Additional UI pkg -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Line numbers -(column-number-mode) -(global-display-line-numbers-mode t) -(global-hl-line-mode) -(dolist (mode '(org-mode-hook - vterm-mode-hook - shell-mode-hook - treemacs-mode-hook - dired-mode-hook - eshell-mode-hook)) - (add-hook mode (lambda () (display-line-numbers-mode 0)))) -(use-package rainbow-delimiters - :straight t - :hook (prog-mode . rainbow-delimiters-mode)) -;; dashboard -(use-package dashboard - :straight t - :after all-the-icons - :init - (setq dashboard-set-heading-icons t) - (setq dashboard-set-file-icons t) - ;;(setq dashboard-banner-logo-title "Emacs is more than a text editor!") - ;;(setq dashboard-startup-banner 'logo) - (setq dashboard-startup-banner "/home/jaeus/.emacs.rational.d/logos/emacs-e.png") - (setq dashboard-center-content t) - (setq dashboard-week-agenda t) - (setq dashboard-agenda-time-string-format "%d/%m/%Y %A %H:%M") - (setq dashboard-items '((recents . 10) - (agenda . 5) - (bookmarks . 5) - ;;(projects . 5) <= related projectile - (registers . 5))) - (setq dashboard-set-navigator t) - ;; Format: "(icon title help action face prefix suffix)" - (setq dashboard-navigator-buttons - `((;; Github - (,(all-the-icons-octicon "mark-github" :height 1.1 :v-adjust 0.0) - "Github" - "Browse github" - (lambda (&rest _) (browse-url "https://github.com/JaeYoo-Im/"))) - (,(all-the-icons-octicon "history" :height 1.1 :v-adjust 0.0) - "Reload last session" - "Reload last session" - (lambda (&rest _) (persp-state-load persp-state-default-file)))))) - :config - (dashboard-setup-startup-hook) - (dashboard-modify-heading-icons '((recents . "file-text") - (bookmarks . "book")))) -(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) - -(use-package vertico-posframe - :straight t - :disabled - :after vertico - :ensure t - :init - (setq vertico-posframe-parameters - `((left-fringe . 8) - (right-fringe . 8) (alpha . 100))) - (vertico-posframe-mode 1)) - -(defun toggle-transparency () - (interactive) - (let ((alpha (frame-parameter nil 'alpha))) - (set-frame-parameter - nil 'alpha - (if (eql (cond ((numberp alpha) alpha) - ((numberp (cdr alpha)) (cdr alpha)) - ;; Also handle undocumented ( ) form. - ((numberp (cadr alpha)) (cadr alpha))) - 100) - '(80 . 80) '(100 . 100))))) -(global-set-key (kbd "C-c t") 'toggle-transparency) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; EMOJIFY ♌ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package emojify - :straight t - :hook (after-init . global-emojify-mode)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Key bindings -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package which-key - :straight t - :defer 0 - :diminish which-key-mode - :config - (which-key-mode) - (setq which-key-idle-delay 0.5)) -(use-package general - :straight t - :ensure t - :config - (general-evil-setup t) - (general-create-definer ju/leader-key-def - :keymaps '(normal insert visual emacs) - :prefix "SPC" - :global-prefix "C-SPC")) -;; General key definer key-prefix SPC -(ju/leader-key-def - "." 'find-file - ;; Buffer - "b" '(:ignore t :which-key "buffer handling") - "b b" '(ibuffer :which-key "IBuffer") - "b k" '(kill-current-buffer :which-key "Kill current buffer") - "b n" '(next-buffer :which-key "Next buffer") - "b p" '(previous-buffer :which-key "Previous buffer") - "b B" '(ibuffer-list-buffers :which-key "IBuffer List Buffers") - "b K" '(kill-buffer :which-key "IBuffer Kill Buffers") - ;; Eshell - "e" '(:ignore t :which-key "eshell") - "e h" '(counsel-esh-history :which "Kill history") - "e s" '(eshell :which "run eshell") - ;; Magit - "g" 'magit - ;; Workspace - ;; Counsel - "f" '(:ignore t :which-key "file op.") - "f r" '(consult-recent-file :which-key "Recent files") - "f R" '(revert-buffer :which-key "Revert Buffer") - "t t" '(toggle-truncate-lines :which-key "Toggle truncate lines") - ;; Shortcut - "f d d" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.rational.d/desktop.el")) :which-key "open exwm config") - "f d e" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.rational.d/config.el")) :which-key "open emacs config") - ;; Insert something - "i" '(:ignore t :which-key "insert something.") - "ie" '(emojify-insert-emoji :which-key "emoji") - ;; AVY (easymotion) - "v" '(:ignore t :which-key "Avy") - "vc" '(avy-goto-char :which-key "Avy Goto Char") - "vw" '(avy-goto-word-0 :which-key "Avy Goto Word") - "vl" '(avy-goto-line :which-key "Avy Goto Line") - ;; Org mode - "o" '(:ignore t :which-key "Org mode") - "oa" '(:ignore t :which-key "Org Agenda") - "oar" '(my/org-roam-refresh-agenda-list :which-key "Org agenda refresh list") - "oaa" '(org-agenda :which-key "open org agenda") - ;; project.el - "p" '(:ignore t :which-key "Project") - "p." 'project-find-file - "ps" 'project-switch-project - "pg" 'consult-ripgrep - "pc" 'project-compile - "pd" 'project-dired - ;; Org roam - "r" '(:ignore t :which-key "Org Roam") - "ru" 'org-roam-ui-open - "rl" 'org-roam-buffer-toggle - "rf" 'org-roam-node-find - "ri" 'org-roam-node-insert - "rI" 'org-roam-node-insert-immediate - "rp" 'my/org-roam-find-project) - -(global-set-key (kbd "C-M-j") 'consult-buffer) - -;; Make ESC quit prompts -(global-set-key (kbd "") 'keyboard-escape-quit) -;; this annoying binding. -(global-unset-key (kbd "C-j")) -(global-unset-key (kbd "C-k")) -(global-unset-key (kbd "S-SPC")) ;; use only S-\ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; tramp default is scp -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(setq tramp-default-method "ssh") -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Flycheck -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package flycheck - :straight t - :ensure t - :defer t - :init (global-flycheck-mode t)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; AVY (like easymotion) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package avy - :straight t - :commands (avy-goto-char avy-goto-word-0 avy-goto-line)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Hilight TODO -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package hl-todo - :straight t - :hook (prog-mode . hl-todo-mode) - :hook (yaml-mode . hl-todo-mode) - :config - (setq hl-todo-highlight-punctuation ":" - hl-todo-keyword-faces - `(;; For things that need to be done, just not today. - ("TODO" warning bold) - ;; For problems that will become bigger problems later if not - ;; fixed ASAP. - ("FIXME" error bold) - ;; For tidbits that are unconventional and not intended uses of the - ;; constituent parts, and may break in a future update. - ("HACK" font-lock-constant-face bold) - ;; For things that were done hastily and/or hasn't been thoroughly - ;; tested. It may not even be necessary! - ("REVIEW" font-lock-keyword-face bold) - ;; For especially important gotchas with a given implementation, - ;; directed at another user other than the author. - ("NOTE" success bold) - ;; For things that just gotta go and will soon be gone. - ("DEPRECATED" font-lock-doc-face bold) - ;; For a known bug that needs a workaround - ("BUG" error bold) - ;; For warning about a problematic or misguiding code - ("XXX" font-lock-constant-face bold)))) -(global-hl-todo-mode) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Dired -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package dired - :ensure nil - :straight nil - :commands (dired dired-jump) - :bind (("C-x C-j" . dired-jump)) - :custom ((dired-listing-switches "-agho --group-directories-first")) - :config - (evil-collection-define-key 'normal 'dired-mode-map - "h" 'dired-single-up-directory - "l" 'dired-single-buffer)) -(autoload 'dired-omit-mode "dired-x") -(add-hook 'dired-load-hook - (lambda () - (interactive) - (dired-collapse))) -;; to use h,l key -(use-package dired-single - :straight t - :commands (dired dired-jump)) -(use-package diredfl - :straight t - :hook (dired-mode . diredfl-mode)) - -;; from doom emacs -(defun +dired-enable-git-info-h () - "Enable `dired-git-info-mode' in git repos." - (and (not (file-remote-p default-directory)) - (locate-dominating-file "." ".git") - (dired-git-info-mode 1))) -(use-package dired-git-info :straight t) -(use-package diff-hl - :straight t - :hook (dired-mode . diff-hl-dired-mode-unless-remote) - :hook (magit-post-refresh . diff-hl-magit-post-refresh) - :config - ;; use margin instead of fringe - (diff-hl-margin-mode)) -(use-package dired-rsync - :straight t - :config - (bind-key "C-c C-r" 'dired-rsync dired-mode-map)) -(use-package all-the-icons-dired - :straight t - :hook (dired-mode . all-the-icons-dired-mode) - :config - ;; HACK Fixes #1929: icons break file renaming in Emacs 27+, because the icon - ;; is considered part of the filename, so we disable icons while we're in - ;; wdired-mode. - ;;(when EMACS27+ - (defvar +wdired-icons-enabled -1)) - -;;(defadvice! +dired-disable-icons-in-wdired-mode-a (&rest _) -;; :before #'wdired-change-to-wdired-mode -;; (setq-local +wdired-icons-enabled (if all-the-icons-dired-mode 1 -1)) -;; (when all-the-icons-dired-mode -;; (all-the-icons-dired-mode -1))) - -;;(defadvice! +dired-restore-icons-after-wdired-mode-a (&rest _) -;; :after #'wdired-change-to-dired-mode -;; (all-the-icons-dired-mode +wdired-icons-enabled)))) -;;(use-package fd-dired) - -(use-package dired-hide-dotfiles - :straight t - :hook (dired-mode . dired-hide-dotfiles-mode) - :config - (evil-collection-define-key 'normal 'dired-mode-map - "H" 'dired-hide-dotfiles-mode)) -;;(use-package ranger -;; :config -;; (setq ranger-preview-file t) -;; (setq ranger-show-preview t) -;; (setq ranger-show-literal nil) -;; (ranger-override-dired-mode t)) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; OpenWith -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package openwith - :straight t - :after dired - :config - (setq larget-file-warning-threshold nil) - (openwith-mode t) - (setq openwith-associations - (list (list (openwith-make-extension-regexp - '("mpg" "mpeg" "mp3" "mp4" "m4v" - "avi" "wmv" "wav" "mov" "flv" - "ogm" "ogg" "mkv")) - "mpv" - '(file)) - (list (openwith-make-extension-regexp - '("pdf")) - "evince" - '(file))))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Magit -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package magit - :straight t - :commands (magit-status magit-get-current-branch) - :custom - (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) - -;; NOTE: Make sure to configure a GitHub token before using this package! -;; - https://magit.vc/manual/forge/Token-Creation.html#Token-Creation -;; - https://magit.vc/manual/ghub/Getting-Started.html#Getting-Started -(use-package forge - :straight t - :after magit) -(use-package magit-todos - :straight t - :defer t) -(use-package git-link :straight t) -(use-package git-gutter - :straight git-gutter-fringe - ;;:diminish - :hook ((text-mode . git-gutter-mode) - (prog-mode . git-gutter-mode)) - :config - (setq git-gutter:update-interval 2) - (require 'git-gutter-fringe) - (set-face-foreground 'git-gutter-fr:added "LightGreen") - (fringe-helper-define 'git-gutter-fr:added nil - ".XXXXXX." - "XX....XX" - "X......X" - "X......X" - "XXXXXXXX" - "XXXXXXXX" - "X......X" - "X......X") - - (set-face-foreground 'git-gutter-fr:modified "LightGoldenrod") - (fringe-helper-define 'git-gutter-fr:modified nil - "XXXXXXXX" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X") - - (set-face-foreground 'git-gutter-fr:deleted "LightCoral") - (fringe-helper-define 'git-gutter-fr:deleted nil - "XXXXXX.." - "XX....X." - "XX.....X" - "XX.....X" - "XX.....X" - "XX.....X" - "XX....X." - "XXXXXX..") - - ;; These characters are used in terminal mode - (setq git-gutter:modified-sign "≡") - (setq git-gutter:added-sign "≡") - (setq git-gutter:deleted-sign "≡") - (set-face-foreground 'git-gutter:added "LightGreen") - (set-face-foreground 'git-gutter:modified "LightGoldenrod") - (set-face-foreground 'git-gutter:deleted "LightCoral")) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; ORG mode -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun org-keyword-backend (command &optional arg &rest ignored) - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'org-keyword-backend)) - (prefix (and (eq major-mode 'org-mode) - (cons (company-grab-line "^#\\+\\(\\w*\\)" 1) - t))) - (candidates (mapcar #'upcase - (cl-remove-if-not - (lambda (c) (string-prefix-p arg c)) - (pcomplete-completions)))) - (ignore-case t) - (duplicates t))) -(defun efs/org-mode-setup () - (org-indent-mode) - ;;(variable-pitch-mode 1) - (visual-line-mode 1)) - -(use-package org - :straight t - ;;:pin org - :commands (org-capture org-agenda) - :hook (org-mode . efs/org-mode-setup) - :config - - (setq org-todo-keywords - '((sequence "TODO(t)" "HOLD(h)" "|" "KILL(k)" "DONE(d)"))) - (setq org-ellipsis " ▾") - (setq org-hide-emphasis-markers t) - (setq org-src-fontify-natively t) - (setq org-fontify-quote-and-verse-blocks t) - - (setq org-agenda-start-with-log-mode t) - (setq org-log-done 'time) - (setq org-log-into-drawer t) - (setq org-format-latex-options (plist-put org-format-latex-options :scale 1.8))) - -(use-package org-superstar :straight t :after org :hook (org-mode . org-superstar-mode)) -(use-package org-attach-screenshot :straight t) -(use-package org-download - :straight t - :config - (setq-default org-download-image-dir "./images") - (setq-default org-download-heading-lvl nil)) -(add-hook 'dired-mode-hook 'org-download-enable) - -(defun efs/org-mode-visual-fill () - (setq visual-fill-column-width 150 - visual-fill-column-center-text t) - (visual-fill-column-mode 1)) - -(use-package visual-fill-column - :straight t - :hook (org-mode . efs/org-mode-visual-fill)) - -(with-eval-after-load 'org - (org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) - (python . t) - (latex . t))) - - (push '("conf-unix" . conf-unix) org-src-lang-modes)) - -(with-eval-after-load 'org - ;; This is needed as of Org 9.2 - (require 'org-tempo) - - (add-to-list 'org-structure-template-alist '("sh" . "src shell")) - (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) - (add-to-list 'org-structure-template-alist '("hs" . "src haskell")) - (add-to-list 'org-structure-template-alist '("cc" . "src c")) - (add-to-list 'org-structure-template-alist '("cp" . "src c++")) - (add-to-list 'org-structure-template-alist '("rs" . "src rust")) - (add-to-list 'org-structure-template-alist '("py" . "src python")) - (add-to-list 'org-structure-template-alist '("oc" . "src octave")) - (add-to-list 'org-structure-template-alist '("vl" . "src verilog")) - (add-to-list 'org-structure-template-alist '("vh" . "src vhdl"))) - -;; ODT export to docx -(setq org-odt-preferred-output-format "docx") - -;; Do not ask when run code block -(setq org-confirm-babel-evaluate nil) -(use-package org-contrib :straight t) - -;; translate -(use-package ob-translate - :straight t - :config - (setq ob-translate:default-dest "ko")) - -;; Noter -(use-package pdf-tools - :straight t - :config - (pdf-tools-install) - (setq-default pdf-view-display-size 'fit-width) - (define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward) - :custom - (pdf-annot-activate-created-annotations t "automatically annotate highlights")) -(use-package org-pdfview - :straight t) -(use-package org-noter :straight t) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; ORG Roam -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package org-roam - :straight t - :ensure t - :demand t ;; Ensure org-roam is loaded by default - :init - (setq org-roam-v2-ack t) - :custom - (org-roam-directory "~/Roam") - (org-roam-completion-everywhere t) - - :config - (org-roam-db-autosync-mode)) -;;(org-roam-setup)) - -(defun org-roam-node-insert-immediate (arg &rest args) - (interactive "P") - (let ((args (push arg args)) - (org-roam-capture-templates (list (append (car org-roam-capture-templates) - '(:immediate-finish t))))) - (apply #'org-roam-node-insert args))) - -(defun my/org-roam-filter-by-tag (tag-name) - (lambda (node) - (member tag-name (org-roam-node-tags node)))) - -(defun my/org-roam-list-notes-by-tag (tag-name) - (mapcar #'org-roam-node-file - (seq-filter - (my/org-roam-filter-by-tag tag-name) - (org-roam-node-list)))) - -(defun my/org-roam-refresh-agenda-list () - (interactive) - (setq org-agenda-files (my/org-roam-list-notes-by-tag "Project"))) - - -(defun my/org-roam-project-finalize-hook () - "Adds the captured project file to `org-agenda-files' if the - capture was not aborted." - ;; Remove the hook since it was added temporarily - (remove-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook) - - ;; Add project file to the agenda list if the capture was confirmed - (unless org-note-abort - (with-current-buffer (org-capture-get :buffer) - (add-to-list 'org-agenda-files (buffer-file-name))))) - -(defun my/org-roam-find-project () - (interactive) - ;; Add the project file to the agenda after capture is finished - (add-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook) - - ;; Select a project file to open, creating it if necessary - (org-roam-node-find - nil - nil - (my/org-roam-filter-by-tag "Project") - :templates - '(("p" "project" plain "* Goals\n\n%?\n\n* Tasks\n\n** TODO Add initial tasks\n\n* History\n\n* Notes\n\n" - :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n#+category: ${title}\n#+filetags: Project") - :unnarrowed t)))) - -(add-to-list 'org-after-todo-state-change-hook - (lambda () - (when (equal org-state "DONE") - (my/org-roam-copy-todo-to-today)))) - -(use-package websocket - :straight t - :after org-roam) -(use-package org-roam-ui - :straight t - :after org-roam - ;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have - ;; a hookable mode anymore, you're advised to pick something yourself - ;; if you don't care about startup time, use - ;; :hook (after-init . org-roam-ui-mode) - :config - (setq org-roam-ui-sync-theme t - org-roam-ui-follow t - org-roam-ui-update-on-save t - org-roam-ui-open-on-start nil)) - -;; Build the agenda list the first time for the session -;;(my/org-roam-refresh-agenda-list) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Language Settings -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(custom-set-variables - '(verilog-indent-level 2) - '(verilog-indent-level-module 0) - '(verilog-indent-level-declaration 0) - '(verilog-indent-level-behavioral 0) - '(verilog-indent-level-directive 0) - '(verilog-cexp-indent 0) - '(verilog-case-indent 2) - - '(verilog-auto-newline nil)) - -(use-package rust-mode :straight t) - -(use-package jupyter - :straight t) -(org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) ;; Other languages - (shell . t) - ;; Python & Jupyter - (python . t) - (jupyter . t))) -(org-babel-jupyter-override-src-block "python") -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Eshell -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(when (eq system-type 'windows-nt) - (setq explicit-shell-file-name "powershell.exe") - (setq explicit-powershell.exe-args '())) -(defun dw/get-prompt-path () - (let* ((current-path (eshell/pwd)) - (git-output (shell-command-to-string "git rev-parse --show-toplevel")) - (has-path (not (string-match "^fatal" git-output)))) - (if (not has-path) - (abbreviate-file-name current-path) - (string-remove-prefix (file-name-directory git-output) current-path)))) - -(defun dw/eshell-prompt () - (let ((current-branch (magit-get-current-branch))) - (concat - "\n" - (propertize (system-name) 'face `(:foreground "#62aeed")) - (propertize " ॐ " 'face `(:foreground "white")) - (propertize (dw/get-prompt-path) 'face `(:foreground "#82cfd3")) - (when current-branch - (concat - (propertize " • " 'face `(:foreground "white")) - (propertize (concat " " current-branch) 'face `(:foreground "#c475f0")))) - (propertize " • " 'face `(:foreground "white")) - (propertize (format-time-string "%I:%M:%S %p") 'face `(:foreground "#5a5b7f")) - (if (= (user-uid) 0) - (propertize "\n#" 'face `(:foreground "red2")) - (propertize "\nλ" 'face `(:foreground "#aece4a"))) - (propertize " " 'face `(:foreground "white"))))) -(defun efs/configure-eshell () - ;; Save command history when commands are entered - (add-hook 'eshell-pre-command-hook 'eshell-save-some-history) - - ;; Truncate buffer for performance - (add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer) - - ;; Bind some useful keys for evil-mode - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "C-r") 'counsel-esh-history) - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "") 'eshell-bol) - (evil-normalize-keymaps) - - (setq eshell-prompt-function 'dw/eshell-prompt - eshell-prompt-regexp "^λ " - eshell-history-size 10000 - eshell-buffer-maximum-lines 10000 - eshell-hist-ignoredups t - eshell-scroll-to-bottom-on-input t)) - -(use-package eshell-git-prompt - :straight t - :after eshell) - -(use-package eshell - :straight t - :hook (eshell-first-time-mode . efs/configure-eshell) - :config - - (with-eval-after-load 'esh-opt - (setq eshell-destroy-buffer-when-process-dies t) - (setq eshell-visual-commands '("htop" "zsh" "vim")))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; ELFEED (rss) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package elfeed - :straight t - :config - (setq elfeed-search-feed-face ":foreground #fff :weight bold" - elfeed-feeds (quote - (("https://www.reddit.com/r/linux.rss" reddit linux) - ("https://www.reddit.com/r/emacs.rss" reddit emacs) - ("https://www.gamingonlinux.com/article_rss.php" gaming linux) - ("https://hackaday.com/blog/feed/" hackaday linux) - ("https://opensource.com/feed" opensource linux) - ("https://linux.softpedia.com/backend.xml" softpedia linux) - ("https://itsfoss.com/feed/" itsfoss linux) - ("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux) - ("https://www.phoronix.com/rss.php" phoronix linux) - ("http://feeds.feedburner.com/d0od" omgubuntu linux) - ("https://www.computerworld.com/index.rss" computerworld linux) - ("https://www.networkworld.com/category/linux/index.rss" networkworld linux) - ("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux) - ("https://betanews.com/feed" betanews linux) - ("http://lxer.com/module/newswire/headlines.rss" lxer linux) - ("https://coolenjoy.net/rss?bo_table=38" coolenjoy IT) - ("https://gigglehd.com/gg/ggnews/rss" giggle IT))))) - -(use-package elfeed-goodies - :straight t - :init - (elfeed-goodies/setup) - :config - (setq elfeed-goodies/entry-pane-size 0.5)) - -(add-hook 'elfeed-show-mode-hook 'visual-line-mode) -(evil-define-key 'normal elfeed-show-mode-map - (kbd "J") 'elfeed-goodies/split-show-next - (kbd "K") 'elfeed-goodies/split-show-prev) -(evil-define-key 'normal elfeed-search-mode-map - (kbd "J") 'elfeed-goodies/split-show-next - (kbd "K") 'elfeed-goodies/split-show-prev) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; ETC -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; ediff, keep it in one frame -(setq ediff-diff-options "-w" - ediff-split-window-function 'split-window-horizontally - ediff-window-setup-function 'ediff-setup-windows-plain) - -;; very large file -(use-package vlf - :straight t - :config (progn - (require 'vlf-setup))) - -;; epub -(use-package nov :straight t) -(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) diff --git a/.emacs.rational.d/desktop.el b/.emacs.rational.d/desktop.el deleted file mode 100644 index 510538c..0000000 --- a/.emacs.rational.d/desktop.el +++ /dev/null @@ -1,164 +0,0 @@ -(straight-use-package - '(app-launcher :type git :host github :repo "SebastienWae/app-launcher")) -(defun efs/run-in-background (command) - (let ((command-parts (split-string command "[ ]+"))) - (apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts))))) -(defun vifon/exwm-terminal () - (interactive) - (let ((default-directory (if (derived-mode-p 'dired-mode) - (dired-current-directory) - default-directory))) - (start-process "alacritty" nil "alacritty"))) -(defun efs/exwm-init-hook () - ;; Make workspace 1 be the one where we land at startup - (exwm-workspace-switch-create 1) - (efs/start-panel) - ;; if not wsl - (efs/run-in-background "xsetroot -cursor_name left_ptr") - (efs/run-in-background "nm-applet") - (efs/run-in-background "pamac-tray") - (efs/run-in-background "volumeicon") - (efs/run-in-background "numlockx on") - (efs/run-in-background "blueberry-tray") - (efs/run-in-background "bitwarden-desktop") - - ;; Launch apps that will run in the background - (efs/run-in-background "fcitx") -) - -(defun efs/exwm-update-class () - (exwm-workspace-rename-buffer exwm-class-name)) - -(defun efs/exwm-update-title () - (pcase exwm-class-name - ("Firefox" (exwm-workspace-rename-buffer (format "Firefox: %s" exwm-title))))) - -;; This function isn't currently used, only serves as an example how to -;; position a window -(defun efs/position-window () - (let* ((pos (frame-position)) - (pos-x (car pos)) - (pos-y (cdr pos))) - - (exwm-floating-move (- pos-x) (- pos-y)))) - -(use-package exwm - :straight t - :config - ;; Set the default number of workspaces - (setq exwm-workspace-number 10) - - ;; When window "class" updates, use it to set the buffer name - (add-hook 'exwm-update-class-hook #'efs/exwm-update-class) - - ;; When window title updates, use it to set the buffer name - (add-hook 'exwm-update-title-hook #'efs/exwm-update-title) - - ;; Configure windows as they're created - ;;(add-hook 'exwm-manage-finish-hook #'efs/configure-window-by-class) - - ;; When EXWM starts up, do some extra confifuration - (add-hook 'exwm-init-hook #'efs/exwm-init-hook) - - ;; Automatically send the mouse cursor to the selected workspace's display - (setq exwm-workspace-warp-cursor t) - - ;; Window focus should follow the mouse pointer - ;;(setq mouse-autoselect-window t - ;; focus-follows-mouse t) - - (add-hook 'exwm-floating-setup-hook - (lambda () - (exwm-layout-hide-mode-line))) - - ;; These keys should always pass through to Emacs - (setq exwm-input-prefix-keys - '(?\C-x - ?\C-u - ?\C-h - ?\M-x - ?\M-` - ?\M-& - ?\M-: - ?\C-\M-j ;; Buffer list - ?\C-\ )) ;; Ctrl+Space - - ;; Ctrl+Q will enable the next key to be sent directly - (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) - - ;; Set up global key bindings. These always work, no matter the input state! - ;; Keep in mind that changing this list after EXWM initializes has no effect. - (setq exwm-input-global-keys - `( - ;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard) - ([?\s-r] . exwm-reset) - - ;; Move between windows - ([?\s-h] . windmove-left) - ([?\s-l] . windmove-right) - ([?\s-k] . windmove-up) - ([?\s-j] . windmove-down) - - ;;([s-space] . toggle-frame-fullscreen) - ([?\s-f] . exwm-floating-toggle-floating) - - ;; Launch applications via shell command - ([?\s-&] . (lambda (command) - (interactive (list (read-shell-command "$ "))) - (start-process-shell-command command nil command))) - - ([?\s-C] . (lambda () (interactive) (kill-buffer))) - - ;; App - (,(kbd "") . vifon/exwm-terminal) - (,(kbd "") . app-launcher-run-app) - ;; Switch workspace - ([?\s-w] . exwm-workspace-switch) - ([?\s-`] . (lambda () (interactive) (exwm-workspace-switch-create 0))) - - ;; 's-N': Switch to certain workspace with Super (Win) plus a number key (0 - 9) - ,@(mapcar (lambda (i) - `(,(kbd (format "s-%d" i)) . - (lambda () - (interactive) - (exwm-workspace-switch-create ,i)))) - (number-sequence 0 9)))) - - (exwm-enable)) - -;; if not wsl -;;(use-package desktop-environment -;; :after exwm -;; :config (desktop-environment-mode) -;; :custom -;; (desktop-environment-brightness-small-increment "2%+") -;; (desktop-environment-brightness-small-decrement "2%-") -;; (desktop-environment-brightness-normal-increment "5%+") -;; (desktop-environment-brightness-normal-decrement "5%-")) - -;; Make sure the server is started (better to do this in your main Emacs config!) -(server-start) - -(defvar efs/polybar-process nil - "Holds the process of the running Polybar instance, if any") - -(defun efs/kill-panel () - (interactive) - (when efs/polybar-process - (ignore-errors - (kill-process efs/polybar-process))) - (setq efs/polybar-process nil)) - -(defun efs/start-panel () - (interactive) - (efs/kill-panel) - (setq efs/polybar-process (start-process-shell-command "polybar" nil "polybar panel"))) - -(defun efs/send-polybar-hook (module-name hook-index) - (start-process-shell-command "polybar-msg" nil (format "polybar-msg hook %s %s" module-name hook-index))) - -(defun efs/send-polybar-exwm-workspace () - (efs/send-polybar-hook "exwm-workspace" 1)) - -;; Update panel indicator when workspace changes -(add-hook 'exwm-workspace-switch-hook #'efs/send-polybar-exwm-workspace) diff --git a/.emacs.rational.d/exwm/.start-exwm.sh.~undo-tree~ b/.emacs.rational.d/exwm/.start-exwm.sh.~undo-tree~ deleted file mode 100644 index 2271a37..0000000 --- a/.emacs.rational.d/exwm/.start-exwm.sh.~undo-tree~ +++ /dev/null @@ -1,6 +0,0 @@ -(undo-tree-save-format-version . 1) -"e976d2036366e62bb8915b7138e0b4a5fb4918fa" -[nil nil nil nil (25145 39387 666368 202000) 0 nil] -([nil nil ((445 . 454) (t 25145 11614 471859 40000)) nil (25145 39387 666364 698000) 0 nil]) -([nil current ((408 . 416) (#("vanilla" 0 7 (fontified t)) . 408) (undo-tree-id0 . -7) (undo-tree-id1 . -7) (undo-tree-id2 . -7) (undo-tree-id3 . -7) (undo-tree-id4 . -7) (undo-tree-id5 . -6) (undo-tree-id6 . -6) (undo-tree-id7 . -6) (undo-tree-id8 . -6) (undo-tree-id9 . -6) (undo-tree-id10 . -5) (undo-tree-id11 . -5) (undo-tree-id12 . -5) (undo-tree-id13 . -5) (undo-tree-id14 . -5) (undo-tree-id15 . -5) (undo-tree-id16 . -5) (undo-tree-id17 . -5) (undo-tree-id18 . -5) (undo-tree-id19 . -5) (undo-tree-id20 . -6) (undo-tree-id21 . -6) (undo-tree-id22 . -6) (undo-tree-id23 . -6) (undo-tree-id24 . -6) (undo-tree-id25 . -6) (undo-tree-id26 . -6) (undo-tree-id27 . -6) (undo-tree-id28 . -6) (undo-tree-id29 . -6) (undo-tree-id30 . -7) (undo-tree-id31 . -7) (undo-tree-id32 . -7) (undo-tree-id33 . -7) (undo-tree-id34 . -7) (undo-tree-id35 . -7) (undo-tree-id36 . -7) (undo-tree-id37 . -7) (undo-tree-id38 . -7) (undo-tree-id39 . -7) (undo-tree-id40 . -7) (undo-tree-id41 . -7) (undo-tree-id42 . -7) (undo-tree-id43 . -7) (undo-tree-id44 . -7) (undo-tree-id45 . -7) (undo-tree-id46 . -7) (undo-tree-id47 . -6) (undo-tree-id48 . -6) (undo-tree-id49 . -6) (undo-tree-id50 . -6) (undo-tree-id51 . -6) (undo-tree-id52 . -6) (undo-tree-id53 . -6) (undo-tree-id54 . -6) (undo-tree-id55 . -6) (undo-tree-id56 . -6) (undo-tree-id57 . -6) (undo-tree-id58 . -6) (undo-tree-id59 . -6) (undo-tree-id60 . -6) (undo-tree-id61 . -6) (undo-tree-id62 . -5) (undo-tree-id63 . -5) (undo-tree-id64 . -5) (undo-tree-id65 . -5) (undo-tree-id66 . -5) (undo-tree-id67 . -4) (undo-tree-id68 . -4) (undo-tree-id69 . -4) (undo-tree-id70 . -4) (undo-tree-id71 . -4) (undo-tree-id72 . -3) (undo-tree-id73 . -3) (undo-tree-id74 . -3) (undo-tree-id75 . -3) (undo-tree-id76 . -3) (undo-tree-id77 . -2) (undo-tree-id78 . -2) (undo-tree-id79 . -2) (undo-tree-id80 . -2) (undo-tree-id81 . -2) (undo-tree-id82 . -1) (undo-tree-id83 . -1) (undo-tree-id84 . -1) (undo-tree-id85 . -1) (undo-tree-id86 . -1) (undo-tree-id87 . -1) (undo-tree-id88 . -1) (undo-tree-id89 . -1) (undo-tree-id90 . -1) (undo-tree-id91 . -1) (t 25145 39387 681489 213000)) nil (25145 39399 354371 746000) 0 nil]) -nil diff --git a/.emacs.rational.d/exwm/EXWM.desktop b/.emacs.rational.d/exwm/EXWM.desktop deleted file mode 100644 index 7de02bf..0000000 --- a/.emacs.rational.d/exwm/EXWM.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Name=EXWM -Comment=Emacs Window Manager -Exec=sh /home/jaeus/.emacs.rational.d/exwm/start-exwm.sh -TryExec=sh -Type=Application -X-LightDM-DesktopName=exwm -DesktopNames=exwm diff --git a/.emacs.rational.d/exwm/start-exwm.sh b/.emacs.rational.d/exwm/start-exwm.sh deleted file mode 100755 index 5ec6375..0000000 --- a/.emacs.rational.d/exwm/start-exwm.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# Set the screen DPI (uncomment this if needed!) -# xrdb ~/.emacs.d/exwm/Xresources - -# Run the screen compositor -#picom & -#picom -b --config /home/jaeus/.config/i3/picom.conf & -# Enable screen locking on suspend -#xss-lock -- slock & - -picom -b --config $HOME/.xmonad/scripts/picom.conf & -~/scripts/random_wallpaper.sh -exec dbus-launch --exit-with-session emacs --with-profile rational -mm --debug-init -l ~/.emacs.rational.d/desktop.el diff --git a/.emacs.rational.d/logos/emacs-e.png b/.emacs.rational.d/logos/emacs-e.png deleted file mode 100644 index 0c5cd63..0000000 Binary files a/.emacs.rational.d/logos/emacs-e.png and /dev/null differ diff --git a/.emacs.vanilla/desktop.el b/.emacs.vanilla/desktop.el deleted file mode 100644 index 4d2a58a..0000000 --- a/.emacs.vanilla/desktop.el +++ /dev/null @@ -1,164 +0,0 @@ -(straight-use-package - '(app-launcher :type git :host github :repo "SebastienWae/app-launcher")) - -(defun efs/run-in-background (command) - (let ((command-parts (split-string command "[ ]+"))) - (apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts))))) -(defun vifon/exwm-terminal () - (interactive) - (let ((default-directory (if (derived-mode-p 'dired-mode) - (dired-current-directory) - default-directory))) - (start-process "alacritty" nil "alacritty"))) -(defun efs/exwm-init-hook () - ;; Make workspace 1 be the one where we land at startup - (exwm-workspace-switch-create 1) - (efs/start-panel) - ;; if not wsl - ;;(efs/run-in-background "xsetroot -cursor_name left_ptr") - ;;(efs/run-in-background "nm-applet") - ;;(efs/run-in-background "pamac-tray") - ;;(efs/run-in-background "volumeicon") - ;;(efs/run-in-background "numlockx on") - ;;(efs/run-in-background "blueberry-tray") - ;;(efs/run-in-background "enpass -minimize") - - ;; Launch apps that will run in the background - ;;(efs/run-in-background "fcitx")) -) - -(defun efs/exwm-update-class () - (exwm-workspace-rename-buffer exwm-class-name)) - -(defun efs/exwm-update-title () - (pcase exwm-class-name - ("Firefox" (exwm-workspace-rename-buffer (format "Firefox: %s" exwm-title))))) - -;; This function isn't currently used, only serves as an example how to -;; position a window -(defun efs/position-window () - (let* ((pos (frame-position)) - (pos-x (car pos)) - (pos-y (cdr pos))) - - (exwm-floating-move (- pos-x) (- pos-y)))) - -(use-package exwm - :config - ;; Set the default number of workspaces - (setq exwm-workspace-number 10) - - ;; When window "class" updates, use it to set the buffer name - (add-hook 'exwm-update-class-hook #'efs/exwm-update-class) - - ;; When window title updates, use it to set the buffer name - (add-hook 'exwm-update-title-hook #'efs/exwm-update-title) - - ;; Configure windows as they're created - ;;(add-hook 'exwm-manage-finish-hook #'efs/configure-window-by-class) - - ;; When EXWM starts up, do some extra confifuration - (add-hook 'exwm-init-hook #'efs/exwm-init-hook) - - ;; Automatically send the mouse cursor to the selected workspace's display - (setq exwm-workspace-warp-cursor t) - - ;; Window focus should follow the mouse pointer - (setq mouse-autoselect-window t - focus-follows-mouse t) - - (add-hook 'exwm-floating-setup-hook - (lambda () - (exwm-layout-hide-mode-line))) - - ;; These keys should always pass through to Emacs - (setq exwm-input-prefix-keys - '(?\C-x - ?\C-u - ?\C-h - ?\M-x - ?\M-` - ?\M-& - ?\M-: - ?\C-\M-j ;; Buffer list - ?\C-\ )) ;; Ctrl+Space - - ;; Ctrl+Q will enable the next key to be sent directly - (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) - - ;; Set up global key bindings. These always work, no matter the input state! - ;; Keep in mind that changing this list after EXWM initializes has no effect. - (setq exwm-input-global-keys - `( - ;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard) - ([?\s-r] . exwm-reset) - - ;; Move between windows - ([?\s-h] . windmove-left) - ([?\s-l] . windmove-right) - ([?\s-k] . windmove-up) - ([?\s-j] . windmove-down) - - ;;([s-space] . toggle-frame-fullscreen) - ([?\s-f] . exwm-floating-toggle-floating) - - ;; Launch applications via shell command - ([?\s-&] . (lambda (command) - (interactive (list (read-shell-command "$ "))) - (start-process-shell-command command nil command))) - - ([?\s-C] . (lambda () (interactive) (kill-buffer))) - - ;; App - (,(kbd "") . vifon/exwm-terminal) - (,(kbd "") . app-launcher-run-app) - ;; Switch workspace - ([?\s-w] . exwm-workspace-switch) - ([?\s-`] . (lambda () (interactive) (exwm-workspace-switch-create 0))) - - ;; 's-N': Switch to certain workspace with Super (Win) plus a number key (0 - 9) - ,@(mapcar (lambda (i) - `(,(kbd (format "s-%d" i)) . - (lambda () - (interactive) - (exwm-workspace-switch-create ,i)))) - (number-sequence 0 9)))) - - (exwm-enable)) - -;; if not wsl -;;(use-package desktop-environment -;; :after exwm -;; :config (desktop-environment-mode) -;; :custom -;; (desktop-environment-brightness-small-increment "2%+") -;; (desktop-environment-brightness-small-decrement "2%-") -;; (desktop-environment-brightness-normal-increment "5%+") -;; (desktop-environment-brightness-normal-decrement "5%-")) - -;; Make sure the server is started (better to do this in your main Emacs config!) -(server-start) - -(defvar efs/polybar-process nil - "Holds the process of the running Polybar instance, if any") - -(defun efs/kill-panel () - (interactive) - (when efs/polybar-process - (ignore-errors - (kill-process efs/polybar-process))) - (setq efs/polybar-process nil)) - -(defun efs/start-panel () - (interactive) - (efs/kill-panel) - (setq efs/polybar-process (start-process-shell-command "polybar" nil "polybar panel"))) - -(defun efs/send-polybar-hook (module-name hook-index) - (start-process-shell-command "polybar-msg" nil (format "polybar-msg hook %s %s" module-name hook-index))) - -(defun efs/send-polybar-exwm-workspace () - (efs/send-polybar-hook "exwm-workspace" 1)) - -;; Update panel indicator when workspace changes -(add-hook 'exwm-workspace-switch-hook #'efs/send-polybar-exwm-workspace) diff --git a/.emacs.vanilla/desktop.org b/.emacs.vanilla/desktop.org deleted file mode 100644 index 4c0205e..0000000 --- a/.emacs.vanilla/desktop.org +++ /dev/null @@ -1,202 +0,0 @@ -#+TITLE: Desktop - -* Exwm Desktop -#+begin_src config -[Desktop Entry] -Name=EXWM -Comment=Emacs Window Manager -Exec=sh /home/jaeus/.emacs.d/exwm/start-exwm.sh -TryExec=sh -Type=Application -X-LightDM-DesktopName=exwm -DesktopNames=exwm -#+end_src - -#+begin_src shell - #!/bin/sh - # Fire it up for WSL - VETHER_IP=$(/bin/grep nameserver /etc/resolv.conf 2> /dev/null | /bin/tr -s ' ' | /bin/cut -d' ' -f2) - export DISPLAY=$VETHER_IP:10.0 - picom -b --config $HOME/.xmonad/scripts/picom.conf & - exec dbus-launch --exit-with-session emacs -mm --debug-init -l ~/.emacs.d/desktop.el - -#+end_src - - -* Configuration - -** App Launcher -#+begin_src emacs-lisp :tangle ~/.emacs.d/desktop.el - (straight-use-package - '(app-launcher :type git :host github :repo "SebastienWae/app-launcher")) -#+end_src -** EXWM -#+begin_src emacs-lisp :tangle ~/.emacs.d/desktop.el - - (defun efs/run-in-background (command) - (let ((command-parts (split-string command "[ ]+"))) - (apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts))))) - (defun vifon/exwm-terminal () - (interactive) - (let ((default-directory (if (derived-mode-p 'dired-mode) - (dired-current-directory) - default-directory))) - (start-process "alacritty" nil "alacritty"))) - (defun efs/exwm-init-hook () - ;; Make workspace 1 be the one where we land at startup - (exwm-workspace-switch-create 1) - (efs/start-panel) - ;; if not wsl - ;;(efs/run-in-background "xsetroot -cursor_name left_ptr") - ;;(efs/run-in-background "nm-applet") - ;;(efs/run-in-background "pamac-tray") - ;;(efs/run-in-background "volumeicon") - ;;(efs/run-in-background "numlockx on") - ;;(efs/run-in-background "blueberry-tray") - ;;(efs/run-in-background "enpass -minimize") - - ;; Launch apps that will run in the background - ;;(efs/run-in-background "fcitx")) - ) - - (defun efs/exwm-update-class () - (exwm-workspace-rename-buffer exwm-class-name)) - - (defun efs/exwm-update-title () - (pcase exwm-class-name - ("Firefox" (exwm-workspace-rename-buffer (format "Firefox: %s" exwm-title))))) - - ;; This function isn't currently used, only serves as an example how to - ;; position a window - (defun efs/position-window () - (let* ((pos (frame-position)) - (pos-x (car pos)) - (pos-y (cdr pos))) - - (exwm-floating-move (- pos-x) (- pos-y)))) - - (use-package exwm - :config - ;; Set the default number of workspaces - (setq exwm-workspace-number 10) - - ;; When window "class" updates, use it to set the buffer name - (add-hook 'exwm-update-class-hook #'efs/exwm-update-class) - - ;; When window title updates, use it to set the buffer name - (add-hook 'exwm-update-title-hook #'efs/exwm-update-title) - - ;; Configure windows as they're created - ;;(add-hook 'exwm-manage-finish-hook #'efs/configure-window-by-class) - - ;; When EXWM starts up, do some extra confifuration - (add-hook 'exwm-init-hook #'efs/exwm-init-hook) - - ;; Automatically send the mouse cursor to the selected workspace's display - (setq exwm-workspace-warp-cursor t) - - ;; Window focus should follow the mouse pointer - (setq mouse-autoselect-window t - focus-follows-mouse t) - - (add-hook 'exwm-floating-setup-hook - (lambda () - (exwm-layout-hide-mode-line))) - - ;; These keys should always pass through to Emacs - (setq exwm-input-prefix-keys - '(?\C-x - ?\C-u - ?\C-h - ?\M-x - ?\M-` - ?\M-& - ?\M-: - ?\C-\M-j ;; Buffer list - ?\C-\ )) ;; Ctrl+Space - - ;; Ctrl+Q will enable the next key to be sent directly - (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) - - ;; Set up global key bindings. These always work, no matter the input state! - ;; Keep in mind that changing this list after EXWM initializes has no effect. - (setq exwm-input-global-keys - `( - ;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard) - ([?\s-r] . exwm-reset) - - ;; Move between windows - ([?\s-h] . windmove-left) - ([?\s-l] . windmove-right) - ([?\s-k] . windmove-up) - ([?\s-j] . windmove-down) - - ;;([s-space] . toggle-frame-fullscreen) - ([?\s-f] . exwm-floating-toggle-floating) - - ;; Launch applications via shell command - ([?\s-&] . (lambda (command) - (interactive (list (read-shell-command "$ "))) - (start-process-shell-command command nil command))) - - ([?\s-C] . (lambda () (interactive) (kill-buffer))) - - ;; App - (,(kbd "") . vifon/exwm-terminal) - (,(kbd "") . app-launcher-run-app) - ;; Switch workspace - ([?\s-w] . exwm-workspace-switch) - ([?\s-`] . (lambda () (interactive) (exwm-workspace-switch-create 0))) - - ;; 's-N': Switch to certain workspace with Super (Win) plus a number key (0 - 9) - ,@(mapcar (lambda (i) - `(,(kbd (format "s-%d" i)) . - (lambda () - (interactive) - (exwm-workspace-switch-create ,i)))) - (number-sequence 0 9)))) - - (exwm-enable)) - - ;; if not wsl - ;;(use-package desktop-environment - ;; :after exwm - ;; :config (desktop-environment-mode) - ;; :custom - ;; (desktop-environment-brightness-small-increment "2%+") - ;; (desktop-environment-brightness-small-decrement "2%-") - ;; (desktop-environment-brightness-normal-increment "5%+") - ;; (desktop-environment-brightness-normal-decrement "5%-")) - - ;; Make sure the server is started (better to do this in your main Emacs config!) - (server-start) - -#+end_src -** Polybar -#+begin_src emacs-lisp :tangle ~/.emacs.d/desktop.el - -(defvar efs/polybar-process nil - "Holds the process of the running Polybar instance, if any") - -(defun efs/kill-panel () - (interactive) - (when efs/polybar-process - (ignore-errors - (kill-process efs/polybar-process))) - (setq efs/polybar-process nil)) - -(defun efs/start-panel () - (interactive) - (efs/kill-panel) - (setq efs/polybar-process (start-process-shell-command "polybar" nil "polybar panel"))) - -(defun efs/send-polybar-hook (module-name hook-index) - (start-process-shell-command "polybar-msg" nil (format "polybar-msg hook %s %s" module-name hook-index))) - -(defun efs/send-polybar-exwm-workspace () - (efs/send-polybar-hook "exwm-workspace" 1)) - -;; Update panel indicator when workspace changes -(add-hook 'exwm-workspace-switch-hook #'efs/send-polybar-exwm-workspace) -#+end_src - diff --git a/.emacs.vanilla/emacs.el b/.emacs.vanilla/emacs.el deleted file mode 100644 index f88ba07..0000000 --- a/.emacs.vanilla/emacs.el +++ /dev/null @@ -1,1454 +0,0 @@ -;; -*- lexical-binding: t; -*- -;;User -(setq user-full-name "JaeYoo,Im" - user-mail-address "cpu3792@gmail.com") -;; os -(setq custom-file (make-temp-file "emacs-custom")) -(setq windows? (eq system-type 'windows-nt)) -(setq mac? (eq system-type 'darwin)) -(setq large-file-warning-threshold nil) - -(setq system-time-locale "C") -(setenv "LANG" "en_US.UTF-8") -(setenv "LC_ALL" "en_US.UTF-8") -;; theme var -(defvar gvar/default-font-size 110) -(defvar gvar/default-variable-font-size 110) -(defvar gvar/frame-transparency '(75 . 75)) -;;dir -(setq user-emacs-directory "~/.cache/emacs") -;; encoding -(set-language-environment "Korean") -(set-default-coding-systems 'utf-8) -(prefer-coding-system 'utf-8) -;; font -(defun available-font? (font) (member font (font-family-list))) - -(defun toggle-transparency () - (interactive) - (let ((alpha (frame-parameter nil 'alpha))) - (set-frame-parameter - nil 'alpha - (if (eql (cond ((numberp alpha) alpha) - ((numberp (cdr alpha)) (cdr alpha)) - ;; Also handle undocumented ( ) form. - ((numberp (cadr alpha)) (cadr alpha))) - 100) - gvar/frame-transparency '(100 . 100))))) -(global-set-key (kbd "C-c t") 'toggle-transparency) - -(require 'package) -(setq package-archives '(("melpa" . "https://melpa.org/packages/") - ("org" . "https://orgmode.org/elpa/") - ("elpa" . "https://elpa.gnu.org/packages/") - ("nongnu" . "https://elpa.nongnu.org/nongnu/"))) -;;(unless package-archive-contents -;; (package-refresh-contents)) -(package-initialize) - -;; Initialize use-package on non-Linux platforms -(unless (package-installed-p 'use-package) - (package-install 'use-package)) - -(when (not (package-installed-p 'use-package)) - (package-refresh-contents) - (package-install 'use-package)) -(require 'use-package) -(setq use-package-always-ensure t) - -;;(use-package auto-package-update -;; :custom -;; (auto-package-update-interval 7) -;; (auto-package-update-prompt-before-update t) -;; (auto-package-update-hide-results t) -;; :config -;; (auto-package-update-maybe) -;; (auto-package-update-at-time "09:00")) - -(defvar bootstrap-version) -(let ((bootstrap-file - (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) - (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 'nomessage)) - -(setq straight-use-package-by-default t) -;; Use package install from git -(straight-use-package 'use-package) - -(use-package paradox - :init - (setq paradox-github-token t) - (setq paradox-execute-asynchronously t) - (setq paradox-automatically-star t)) - -;; tab -(setq-default indent-tabs-mode t) -(setq-default tab-width 4) -(setq-default evil-shift-width tab-width) -;; verilog -(custom-set-variables - '(verilog-indent-level 4) - '(verilog-indent-level-module 0) - '(verilog-indent-level-declaration 0) - '(verilog-indent-level-behavioral 0) - '(verilog-indent-level-directive 0) - '(verilog-cexp-indent 0) - '(verilog-case-indent 4) - - '(verilog-auto-newline nil)) - -(use-package no-littering) ; make ~/.emacs.d clean -;; no-littering doesn't set this by default so we must place -;; auto save files in the same path as it uses for sessions -(setq auto-save-file-name-transforms - `((".*" ,(no-littering-expand-var-file-name "auto-save/") t))) - -(setq inhibit-startup-message t) - -;; (setq gc-cons-threshold most-positive-fixnum) -;; (defconst 1mb 1048576) -;; (defconst 20mb 20971520) -;; (defconst 30mb 31457280) -;; (defconst 50mb 52428800) -;; -;; (defun fk/defer-garbage-collection () -;; (setq gc-cons-threshold most-positive-fixnum)) -;; -;; (defun fk/restore-garbage-collection () -;; (run-at-time 1 nil (lambda () (setq gc-cons-threshold 30mb)))) -;; -;; (add-hook 'emacs-startup-hook 'fk/restore-garbage-collection 100) -;; (add-hook 'minibuffer-setup-hook 'fk/defer-garbage-collection) -;; (add-hook 'minibuffer-exit-hook 'fk/restore-garbage-collection) -;; -;; (setq read-process-output-max 1mb) ;; lsp-mode's performance suggest - -;; Using garbage magic hack. -(use-package gcmh - :config - (gcmh-mode 1)) -;; Setting garbage collection threshold -(setq gc-cons-threshold 402653184 - gc-cons-percentage 0.6) - -;; Profile emacs startup -(add-hook 'emacs-startup-hook - (lambda () - (message "*** Emacs loaded in %s with %d garbage collections." - (format "%.2f seconds" - (float-time - (time-subtract after-init-time before-init-time))) - gcs-done))) - -;; Silence compiler warnings as they can be pretty disruptive (setq comp-async-report-warnings-errors nil) - -(defun ju/evil-hook() - (dolist (mode '(custom-mode - erc-mode)) - (add-to-list 'evil-emacs-state-modes mode))) -(use-package undo-tree - :init - (global-undo-tree-mode 1)) -(use-package evil - :ensure t - :init - (setq evil-want-integration t) - (setq evil-want-keybinding nil) - (setq evil-want-C-u-scroll t) - (setq evil-want-C-i-jump nil) - (setq evil-undo-system 'undo-tree) - :config - (add-hook 'evil-mode-hook 'ju/evil-hook) - (evil-mode 1) - (define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join) - ;;(setq-default evil-symbol-word-search t) ;; evil can identify the word with underscore. - ;; Http://blog.binchen.org/posts/auto-complete-word-in-emacs-mini-buffer-when-using-evil.html - ;;(defun minibuffer-inactive-mode-hook-setup () - ;;;; make `try-expand-dabbrev' from `hippie-expand' work in mini-buffer - ;;;; @see `he-dabbrev-beg', so we need re-define syntax for '/' - ;;(set-syntax-table (let* ((table (make-syntax-table))) - ;;(modify-syntax-entry ?/ "." table) - ;;table))) - ;;(add-hook 'minibuffer-inactive-mode-hook 'minibuffer-inactive-mode-hook-setup) - - ;; Use visual line motions even outside of visual-line-mode buffers - (evil-global-set-key 'motion "j" 'evil-next-visual-line) - (evil-global-set-key 'motion "k" 'evil-previous-visual-line) - (evil-set-initial-state 'messages-buffer-mode 'normal) - (evil-set-initial-state 'dashboard-mode 'normal)) -(use-package evil-numbers - :after evil - :config - ;; unfortunately C-x is emacs common key binding. - (define-key evil-normal-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-normal-state-map (kbd "g -") 'evil-numbers/dec-at-pt) - (define-key evil-visual-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-visual-state-map (kbd "g -") 'evil-numbers/dec-at-pt)) -(use-package evil-nerd-commenter - :after evil - :config - (define-key evil-normal-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines) - (define-key evil-visual-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines)) - -(use-package evil-collection - :after evil - :ensure t - :config - (evil-collection-init)) - -(modify-syntax-entry ?_ "w") -;;(defalias 'forward-evil-word 'forward-evil-symbol) ;; include underscore to word - -(scroll-bar-mode -1) ; Disable visible scrollbar -(tool-bar-mode -1) ; Disable the toolbar -(tooltip-mode -1) ; Disable tooltips -(set-fringe-mode 10) ; Give some breathing room -(xterm-mouse-mode) - -(menu-bar-mode -1) ; Disable the menu bar -;;(setq visible-bell t) - -(column-number-mode) -(global-display-line-numbers-mode t) -;; Disable line numbers for some modes -(dolist (mode '(org-mode-hook - vterm-mode-hook - shell-mode-hook - treemacs-mode-hook - dired-mode-hook - eshell-mode-hook)) - (add-hook mode (lambda () (display-line-numbers-mode 0)))) - -(use-package doom-themes - :init - (setq doom_themes-enable-bold t - doom-themes-enablbe-italic t) - :config - ;;(load-theme 'doom-palenight t) - ;;(load-theme 'doom-gruvbox t) - ;;(load-theme 'doom-one t) - (load-theme 'doom-dracula t) - ;; Enable flashing mode-line on errors - (doom-themes-visual-bell-config) - ;; Corrects (and improves) org-mode's native fontification. - (doom-themes-org-config)) - -;; hilight line at the cursor. -(global-hl-line-mode t) -;;(use-package beacon -;; :straight t -;; :config -;; (beacon-mode)) - -(use-package doom-modeline - :init (doom-modeline-mode 1) - :custom ((doom-modeline-height 15))) - -;; Set frame transparency -(set-frame-parameter (selected-frame) 'alpha gvar/frame-transparency) -(add-to-list 'default-frame-alist `(alpha . ,gvar/frame-transparency)) -(set-frame-parameter (selected-frame) 'fullscreen 'maximized) -(add-to-list 'default-frame-alist '(fullscreen . maximized)) - -(use-package dashboard - :ensure t - :init - (setq dashboard-set-heading-icons t) - (setq dashboard-set-file-icons t) - ;;(setq dashboard-banner-logo-title "Emacs is more than a text editor!") - ;;(dashboard-startup-banner 'logo) - (setq dashboard-startup-banner "/home/jaeus/.emacs.d/logos/black-hole.png") - (setq dashboard-center-content t) - (setq dashboard-week-agenda t) - (setq dashboard-agenda-time-string-format "%d/%m/%Y %A %H:%M") - (setq dashboard-items '((recents . 10) - (agenda . 5) - (bookmarks . 5) - (projects . 5) - (registers . 5))) - (setq dashboard-set-navigator t) - ;; Format: "(icon title help action face prefix suffix)" - (setq dashboard-navigator-buttons - `((;; Github - (,(all-the-icons-octicon "mark-github" :height 1.1 :v-adjust 0.0) - "Github" - "Browse github" - (lambda (&rest _) (browse-url "https://github.com/JaeYoo-Im/"))) - (,(all-the-icons-octicon "history" :height 1.1 :v-adjust 0.0) - "Reload last session" - "Reload last session" - (lambda (&rest _) (persp-state-load persp-state-default-file)))))) - :config - (dashboard-setup-startup-hook) - (dashboard-modify-heading-icons '((recents . "file-text") - (bookmarks . "book")))) -(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) - -;; NanumGothicCoding -;;(add-to-list 'default-frame-alist `(font . "NanumGothicCoding")) -;;(set-face-attribute 'default nil :font "NanumGothicCoding" :height gvar/default-font-size) -;;(set-face-attribute 'fixed-pitch nil :font "NanumGothicCoding" :height gvar/default-font-size) -;;(set-face-attribute 'variable-pitch nil :font "NanumGothicCoding" :height gvar/default-variable-font-size :weight 'regular) -;;(set-fontset-font t 'hangul (font-spec :family "NanumGothicCoding" :height gvar/default-font-size)) - -;; D2Coding -;;(add-to-list 'default-frame-alist `(font . "D2Coding")) -;;(set-face-attribute 'default nil :font "D2Coding" :height gvar/default-font-size) -;;(set-face-attribute 'fixed-pitch nil :font "D2Coding" :height gvar/default-font-size) -;;(set-face-attribute 'variable-pitch nil :font "D2Coding" :height gvar/default-variable-font-size :weight 'regular) -;;(set-fontset-font t 'hangul (font-spec :family "D2Coding" :height gvar/default-font-size)) - -;; Fira Code Retina(English) / D2Coding(Hangul) - Fixed pitch only -(add-to-list 'default-frame-alist `(font . "Fira Code Retina")) -(set-face-attribute 'default nil :font "Fira Code Retina" :height gvar/default-font-size) -(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina" :height gvar/default-font-size) -(set-face-attribute 'variable-pitch nil :font "Fira Code Retina" :height gvar/default-variable-font-size :weight 'regular) -(set-fontset-font t 'hangul (font-spec :family "D2Coding" :height gvar/default-font-size)) -(setq face-font-rescale-alist - '(("D2Coding" . 1.25))) - -;; Dejavu Sans Mono(English) / D2Coding(Hangul) - Fixed pitch only -;;(add-to-list 'default-frame-alist `(font . "Dejavu Sans Mono")) -;;(set-face-attribute 'default nil :font "Dejavu Sans Mono" :height gvar/default-font-size) -;;(set-face-attribute 'fixed-pitch nil :font "Dejavu Sans Mono" :height gvar/default-font-size) -;;(set-face-attribute 'variable-pitch nil :font "Dejavu Sans Mono" :height gvar/default-variable-font-size :weight 'regular) -;;(set-fontset-font t 'hangul (font-spec :family "D2Coding" :height gvar/default-font-size)) -;;(setq face-font-rescale-alist -;; '(("D2Coding" . 1.25))) -;;(setq-default line-spacing 2) -;;(global-prettify-symbols-mode +1) - -;; somtimes need to check white space. this configuration will be helpful -;;(custom-set-faces -;; ;; custom-set-faces was added by Custom. -;; ;; If you edit it by hand, you could mess it up, so be careful. -;; ;; Your init file should contain only one such instance. -;; ;; If there is more than one, they won't work right. -;; '(whitespace-line ((nil (:bold t :background "yellow")))) -;; '(whitespace-tab ((nil (:bold t :background "linen")))) -;; '(whitespace-trailing ((nil (:bold t :background "red1"))))) -;;(global-whitespace-mode t) -;;(add-hook -;; 'after-change-major-mode-hook -;; '(lambda () -;; (setq whitespace-line-column nil -;; whitespace-style '(face trailing)))) -;;(add-hook 'before-save-hook 'delete-trailing-whitespace) - -(use-package emojify - :hook (after-init . global-emojify-mode)) - -(use-package which-key - :defer 0 - :diminish which-key-mode - :config - (which-key-mode) - (setq which-key-idle-delay 0.5)) - -(use-package general - :ensure t - :config - (general-evil-setup t) - (general-create-definer ju/leader-key-def - :keymaps '(normal insert visual emacs) - :prefix "SPC" - :global-prefix "C-SPC")) - -(ju/leader-key-def - "." 'find-file - ;; Buffer - "b" '(:ignore t :which-key "buffer handling") - "b b" '(ibuffer :which-key "IBuffer") - "b k" '(kill-current-buffer :which-key "Kill current buffer") - "b n" '(next-buffer :which-key "Next buffer") - "b p" '(previous-buffer :which-key "Previous buffer") - "b B" '(ibuffer-list-buffers :which-key "IBuffer List Buffers") - "b K" '(kill-buffer :which-key "IBuffer Kill Buffers") - ;; Eshell - "e" '(:ignore t :which-key "eshell") - "e h" '(counsel-esh-history :which "Kill history") - "e s" '(eshell :which "run eshell") - ;; Workspace - ;; Counsel - "f" '(:ignore t :which-key "file op.") - "f r" '(consult-recent-file :which-key "Recent files") - "f R" '(revert-buffer :which-key "Revert Buffer") - "t t" '(toggle-truncate-lines :which-key "Toggle truncate lines") - ;; Shortcut - "f d d" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.d/desktop.org")) :which-key "open exwm config") - "f d e" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.d/emacs.org")) :which-key "open emacs config")) - -;; Key binding -;; Make ESC quit prompts -(global-set-key (kbd "") 'keyboard-escape-quit) -;; this annoying binding. -(global-unset-key (kbd "C-j")) -(global-unset-key (kbd "C-k")) -(global-unset-key (kbd "S-SPC")) ;; use only S-\ - -(use-package diminish) -(use-package super-save - :defer 1 - :diminish super-save-mode - :config - (super-save-mode +1) - (setq super-save-auto-save-when-idle t)) -(setq global-auto-revert-non-file-buffers t) -(global-auto-revert-mode 1) - -;; tramp default is scp -(setq tramp-default-method "ssh") - -(use-package company - :init - (add-hook 'after-init-hook 'global-company-mode) - :bind - (:map company-active-map - ("" . company-complete-selection)) - (:map lsp-mode-map - ("" . company-indent-or-complete-common)) - :config - (setq company-idle-delay 0 - company-show-numbers "on" - company-dabbrev-downcase nil - ) - (add-to-list 'company-backends 'org-keyword-backend) - ) -;;(use-package company -;;:after lsp-mode -;;:hook (lsp-mode . company-mode) -;;:bind (:map company-active-map -;;("" . company-complete-selection)) -;;(:map lsp-mode-map -;;("" . company-indent-or-complete-common)) -;;:custom -;;(company-minimum-prefix-length 1) -;;(setq company-show-numbers "on") -;;(company-idle-delay 0.0)) - -;;(use-package company-box -;;:hook (company-mode . company-box-mode)) - -(defun org-keyword-backend (command &optional arg &rest ignored) - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'org-keyword-backend)) - (prefix (and (eq major-mode 'org-mode) - (cons (company-grab-line "^#\\+\\(\\w*\\)" 1) - t))) - (candidates (mapcar #'upcase - (cl-remove-if-not - (lambda (c) (string-prefix-p arg c)) - (pcomplete-completions)))) - (ignore-case t) - (duplicates t))) - -(use-package prescient - :hook (dashboard-after-initialize . prescient-persist-mode)) -;;(use-package company-prescient -;; :after company -;; :config (company-prescient-mode)) - -(use-package flycheck - :ensure t - :defer t - :init (global-flycheck-mode t)) - -(use-package yasnippet-snippets) -(use-package yasnippet - :init - (defvar yas-snippet-dirs nil) - :hook (prog-mode . yas-minor-mode) - :config - (add-to-list 'yas-snippet-dirs "~/.emacs.d/snippets") - (yas-global-mode 1)) -(ju/leader-key-def - "i" '(:ignore t :which-key "insert something.") - "is" '(yas-insert-snippet :which-key "snippet") - "ie" '(emojify-insert-emoji :which-key "emoji")) - -(setq display-time-world-list - '(("Etc/UTC" "UTC") - ("Asia/Seoul" "Seoul") - ("Asia/Shanghai" "Shanghai"))) -(setq display-time-world-time-format "%a, %d %b %I:%M %p %Z") - -;; (use-package ivy -;; :diminish -;; :bind (("C-s" . swiper) -;; :map ivy-minibuffer-map -;; ("TAB" . ivy-alt-done) -;; ("C-l" . ivy-alt-done) -;; ("C-j" . ivy-next-line) -;; ("C-k" . ivy-previous-line) -;; :map ivy-switch-buffer-map -;; ("C-k" . ivy-previous-line) -;; ("C-l" . ivy-done) -;; ("C-d" . ivy-switch-buffer-kill) -;; :map ivy-reverse-i-search-map -;; ("C-k" . ivy-previous-line) -;; ("C-d" . ivy-reverse-i-search-kill)) -;; :config -;; (ivy-mode 1)) -;; -;; (use-package ivy-rich -;; :after ivy -;; :init -;; (ivy-rich-mode 1) -;; (ivy-rich-project-root-cache-mode 1)) -;; -;; (use-package ivy-posframe -;; ;;:disabled -;; :after ivy -;; :diminish -;; :init -;; (setq ivy-posframe-display-functions-alist -;; '((swiper . ivy-posframe-display-at-point) -;; (emojify-insert-emoji . ivy-display-function-fallback) -;; (t . ivy-posframe-display))) -;; :custom-face -;; (ivy-posframe-border ((t (:background "#ffffff")))) -;; :config -;; (setq ivy-posframe-height-minibuffer nil) -;; (setq ivy-posframe-parameters '((internal-border-width . 1))) -;; (ivy-posframe-mode 1)) -;; -;; (use-package ivy-prescient -;; :after counsel -;; :custom -;; (ivy-prescient-enable-filtering nil) -;; :config -;; ;; Uncomment the following line to have sorting remembered across sessions! -;; ;(prescient-persist-mode 1) -;; (ivy-prescient-mode 1)) -;; (use-package all-the-icons-ivy -;; :init (add-hook 'after-init-hook 'all-the-icons-ivy-setup)) - -;; (use-package counsel -;; :bind (("M-x" . counsel-M-x) -;; ;;("C-M-j" . counsel-switch-buffer) -;; :map minibuffer-local-map -;; ("C-r" . 'counsel-minibuffer-history)) -;; :custom -;; (counsel-linux-app-format-function #'counsel-linux-app-format-function-name-only) -;; :config -;; ;; Don't use ^ as initial input. Set this here because `counsel' defines more -;; ;; of its own, on top of the defaults. -;; (setq ivy-initial-inputs-alist nil) -;; (counsel-mode 1)) - -(use-package vertico - :ensure t - :bind (:map vertico-map - ("C-j" . vertico-next) - ("C-k" . vertico-previous)) - :custom - (vertico-cycle t) - :init - (vertico-mode)) -(use-package savehist - :init - (savehist-mode)) - -(use-package marginalia - :after vertico - :ensure t - :custom - (marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)) - :init - (marginalia-mode)) -(use-package vertico-posframe - :disabled - :after vertico - :ensure t - :init - (setq vertico-posframe-parameters - `((left-fringe . 8) - (right-fringe . 8) (alpha . 100))) - (vertico-posframe-mode 1)) - -(use-package orderless - :init - (setq completion-styles '(orderless) - completion-category-defaults nil - completion-category-overrides '((file (styles . (partial-completion)))))) - -(use-package embark - :bind (("C-S-a" . embark-act) - :map minibuffer-local-map - ("C-d" . embark-act)) - :config - - ;; Show Embark actions via which-key - (setq embark-action-indicator - (lambda (map) - (which-key--show-keymap "Embark" map nil nil 'no-paging) - #'which-key--hide-popup-ignore-command) - embark-become-indicator embark-action-indicator)) - -(use-package embark-consult - :after embark) - -(defun dw/get-project-root () - (when (fboundp 'projectile-project-root) - (projectile-project-root))) - -(use-package consult - :demand t - :bind (("C-s" . consult-line) - ("C-M-l" . consult-imenu) - ("C-M-j" . persp-switch-to-buffer*) - :map minibuffer-local-map - ("C-r" . consult-history)) - :custom - (consult-project-root-function #'dw/get-project-root) - (completion-in-region-function #'consult-completion-in-region)) -(use-package consult-dir - :straight t - :bind (("C-x C-d" . consult-dir) - :map vertico-map - ("C-x C-d" . consult-dir) - ("C-x C-j" . consult-dir-jump-file)) - :custom - (consult-dir-project-list-function nil)) - -(use-package avy - :commands (avy-goto-char avy-goto-word-0 avy-goto-line)) -(ju/leader-key-def - "v" '(:ignore t :which-key "Avy") - "vc" '(avy-goto-char :which-key "Avy Goto Char") - "vw" '(avy-goto-word-0 :which-key "Avy Goto Word") - "vl" '(avy-goto-line :which-key "Avy Goto Line")) - -(defun dw/switch-project-action () - "Switch to a workspace with the project name and start `magit-status'." - (persp-switch (projectile-project-name)) - (magit-status)) -(use-package projectile - :diminish projectile-mode - :config - (projectile-mode) - (setq projectile-enable-caching t) - (setq projectile-indexing-method 'hybrid) - :custom ((projectile-completion-system 'ivy)) - :bind-keymap - ("C-c p" . projectile-command-map) - :init - ;; NOTE: Set this to the folder where you keep your Git repos! - (when (file-directory-p "~/Projects") - (setq projectile-project-search-path '("~/Projects"))) - (setq projectile-switch-project-action #'dw/switch-project-action)) - -(use-package counsel-projectile - :disabled - :after projectile - :config (counsel-projectile-mode)) -(ju/leader-key-def - "p" '(:ignore t :which-key "Projectile") - "p." 'projectile-find-file - "ps" 'projectile-switch-project - "pg" 'consult-ripgrep - "pc" 'projectile-compile-project - "pd" 'projectile-dired) -;;(defun dw/switch-project-action () -;; "Switch to a workspace with the project name and start `magit-status'." -;; ;; TODO: Switch to EXWM workspace 1? -;; (persp-switch (projectile-project-name)) -;; (magit-status)) - -(use-package perspective - :demand t - :bind (("C-M-j" . consult-buffer) - ("C-M-k" . persp-switch) - ("C-M-n" . persp-next) - ("C-x k" . persp-kill-buffer*)) - :custom - (persp-initial-frame-name "Main") - :config - ;; Running `persp-mode' multiple times resets the perspective list... - (unless (equal persp-mode t) - (persp-mode))) - -(use-package helpful - :commands (helpful-callable helpful-variable helpful-command helpful-key) - :custom - (counsel-describe-function-function #'helpful-callable) - (counsel-describe-variable-function #'helpful-variable) - :bind - ([remap describe-function] . describe-function) - ([remap describe-command] . helpful-command) - ([remap describe-variable] . describe-variable) - ([remap describe-key] . helpful-key)) - -;;(use-package hydra -;; :defer t) - -;;(defhydra hydra-text-scale (:timeout 4) -;; "scale text" -;; ("j" text-scale-increase "in") -;; ("k" text-scale-decrease "out") -;; ("f" nil "finished" :exit t)) - -;;(gvar/leader-keys -;; "ts" '(hydra-text-scale/body :which-key "scale text")) - -(use-package hl-todo - :hook (prog-mode . hl-todo-mode) - :hook (yaml-mode . hl-todo-mode) - :config - (setq hl-todo-highlight-punctuation ":" - hl-todo-keyword-faces - `(;; For things that need to be done, just not today. - ("TODO" warning bold) - ;; For problems that will become bigger problems later if not - ;; fixed ASAP. - ("FIXME" error bold) - ;; For tidbits that are unconventional and not intended uses of the - ;; constituent parts, and may break in a future update. - ("HACK" font-lock-constant-face bold) - ;; For things that were done hastily and/or hasn't been thoroughly - ;; tested. It may not even be necessary! - ("REVIEW" font-lock-keyword-face bold) - ;; For especially important gotchas with a given implementation, - ;; directed at another user other than the author. - ("NOTE" success bold) - ;; For things that just gotta go and will soon be gone. - ("DEPRECATED" font-lock-doc-face bold) - ;; For a known bug that needs a workaround - ("BUG" error bold) - ;; For warning about a problematic or misguiding code - ("XXX" font-lock-constant-face bold)))) - -(defun efs/org-mode-setup () - (org-indent-mode) - ;;(variable-pitch-mode 1) - (visual-line-mode 1)) - -(use-package org - :pin org - :commands (org-capture org-agenda) - :hook (org-mode . efs/org-mode-setup) - :config - - (setq org-todo-keywords - '((sequence "TODO(t)" "HOLD(h)" "|" "KILL(k)" "DONE(d)"))) - (setq org-ellipsis " ▾") - (setq org-hide-emphasis-markers t) - (setq org-src-fontify-natively t) - (setq org-fontify-quote-and-verse-blocks t) - - (setq org-agenda-start-with-log-mode t) - (setq org-log-done 'time) - (setq org-log-into-drawer t) - (setq org-format-latex-options (plist-put org-format-latex-options :scale 1.8))) -(use-package org-superstar :after org :hook (org-mode . org-superstar-mode)) -(use-package org-attach-screenshot) -(use-package org-download) - -(defun efs/org-mode-visual-fill () - (setq visual-fill-column-width 100 - visual-fill-column-center-text t) - (visual-fill-column-mode 1)) - -(use-package visual-fill-column - :hook (org-mode . efs/org-mode-visual-fill)) - -(with-eval-after-load 'org - (org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) - (python . t) - (latex . t))) - - (push '("conf-unix" . conf-unix) org-src-lang-modes)) - -(with-eval-after-load 'org - ;; This is needed as of Org 9.2 - (require 'org-tempo) - - (add-to-list 'org-structure-template-alist '("sh" . "src shell")) - (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) - (add-to-list 'org-structure-template-alist '("hs" . "src haskell")) - (add-to-list 'org-structure-template-alist '("cc" . "src c")) - (add-to-list 'org-structure-template-alist '("cp" . "src c++")) - (add-to-list 'org-structure-template-alist '("rs" . "src rust")) - (add-to-list 'org-structure-template-alist '("py" . "src python")) - (add-to-list 'org-structure-template-alist '("oc" . "src octave")) - (add-to-list 'org-structure-template-alist '("vl" . "src verilog")) - (add-to-list 'org-structure-template-alist '("vh" . "src vhdl")) - (org-reload)) - -;; ODT export to docx -(setq org-odt-preferred-output-format "docx") - -;; Do not ask when run code block -(setq org-confirm-babel-evaluate nil) - - -(ju/leader-key-def - "o" '(:ignore t :which-key "Org mode") - "oa" '(:ignore t :which-key "Org Agenda") - "oar" '(my/org-roam-refresh-agenda-list :which-key "Org agenda refresh list") - "oaa" '(org-agenda :which-key "open org agenda")) - -(use-package org-contrib) - -(use-package org-roam - :ensure t - :demand t ;; Ensure org-roam is loaded by default - :init - (setq org-roam-v2-ack t) - :custom - (org-roam-directory "~/Roam") - (org-roam-completion-everywhere t) - - :config - (org-roam-db-autosync-mode)) - ;;(org-roam-setup)) -(ju/leader-key-def - "r" '(:ignore t :which-key "Org Roam") - "ru" 'org-roam-ui-open - "rl" 'org-roam-buffer-toggle - "rf" 'org-roam-node-find - "ri" 'org-roam-node-insert - "rI" 'org-roam-node-insert-immediate - "rp" 'my/org-roam-find-project) - -(defun org-roam-node-insert-immediate (arg &rest args) - (interactive "P") - (let ((args (push arg args)) - (org-roam-capture-templates (list (append (car org-roam-capture-templates) - '(:immediate-finish t))))) - (apply #'org-roam-node-insert args))) - -(defun my/org-roam-filter-by-tag (tag-name) - (lambda (node) - (member tag-name (org-roam-node-tags node)))) - -(defun my/org-roam-list-notes-by-tag (tag-name) - (mapcar #'org-roam-node-file - (seq-filter - (my/org-roam-filter-by-tag tag-name) - (org-roam-node-list)))) - -(defun my/org-roam-refresh-agenda-list () - (interactive) - (setq org-agenda-files (my/org-roam-list-notes-by-tag "Project"))) - -;; Build the agenda list the first time for the session -(my/org-roam-refresh-agenda-list) - -(defun my/org-roam-project-finalize-hook () - "Adds the captured project file to `org-agenda-files' if the -capture was not aborted." - ;; Remove the hook since it was added temporarily - (remove-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook) - - ;; Add project file to the agenda list if the capture was confirmed - (unless org-note-abort - (with-current-buffer (org-capture-get :buffer) - (add-to-list 'org-agenda-files (buffer-file-name))))) - -(defun my/org-roam-find-project () - (interactive) - ;; Add the project file to the agenda after capture is finished - (add-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook) - - ;; Select a project file to open, creating it if necessary - (org-roam-node-find - nil - nil - (my/org-roam-filter-by-tag "Project") - :templates - '(("p" "project" plain "* Goals\n\n%?\n\n* Tasks\n\n** TODO Add initial tasks\n\n* History\n\n* Notes\n\n" - :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n#+category: ${title}\n#+filetags: Project") - :unnarrowed t)))) - -(add-to-list 'org-after-todo-state-change-hook - (lambda () - (when (equal org-state "DONE") - (my/org-roam-copy-todo-to-today)))) - -;;(use-package org-roam-server -;; :ensure t -;; :config -;; (setq org-roam-server-host "127.0.0.1" -;; org-roam-server-port 23799 -;; org-roam-server-authenticate nil -;; org-roam-server-export-inline-images t -;; org-roam-server-serve-files t -;; org-roam-server-served-file-extensions '("pdf" "mp4" "ogv") -;; org-roam-server-network-poll t -;; org-roam-server-network-arrows nil -;; org-roam-server-network-label-truncate t -;; org-roam-server-network-label-truncate-length 60 -;; org-roam-server-network-label-wrap-length 20)) - -(use-package websocket - :after org-roam) -(use-package org-roam-ui - :straight - (:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out")) - :after org-roam - ;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have - ;; a hookable mode anymore, you're advised to pick something yourself - ;; if you don't care about startup time, use - ;; :hook (after-init . org-roam-ui-mode) - :config - (setq org-roam-ui-sync-theme t - org-roam-ui-follow t - org-roam-ui-update-on-save t - org-roam-ui-open-on-start nil)) - -(defun dw/org-present-prepare-slide () - (org-overview) - (org-show-entry) - (org-show-children)) - -(defun dw/org-present-hook () - (setq-local face-remapping-alist '((default (:height 1.5) variable-pitch) - (header-line (:height 4.5) variable-pitch) - (org-code (:height 1.55) org-code) - (org-verbatim (:height 1.55) org-verbatim) - (org-bloc (:height 1.25) org-block) - (org-block-begin-line (:height 0.7) org-block))) - (setq header-line-format " ") - (org-display-inline-images) - (dw/org-present-prepare-slide)) - -(defun dw/org-present-quit-hook () - (setq-local face-remapping-alist '((default variable-pitch default))) - (setq header-line-format nil) - (org-present-small) - (org-remove-inline-images)) - -(defun dw/org-present-prev () - (interactive) - (org-present-prev) - (dw/org-present-prepare-slide)) - -(defun dw/org-present-next () - (interactive) - (org-present-next) - (dw/org-present-prepare-slide)) - -(use-package org-present - :bind (:map org-present-mode-keymap - ("C-c C-j" . dw/org-present-next) - ("C-c C-k" . dw/org-present-prev)) - :hook ((org-present-mode . dw/org-present-hook) - (org-present-mode-quit . dw/org-present-quit-hook))) - -(use-package ob-translate - :config - (setq ob-translate:default-dest "ko")) - -(use-package pdf-tools - :straight t - :config - (pdf-tools-install) - (setq-default pdf-view-display-size 'fit-width) - (define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward) - :custom - (pdf-annot-activate-created-annotations t "automatically annotate highlights")) -(use-package org-pdfview - :straight t) -(use-package org-noter) - -(setq org-publish-use-timestamps-flag nil) -(setq org-export-with-broken-lilnks t) -(setq org-publish-project-alist - '(("jaeus.net" - :base-directory "~/Roam/www/" - :base-extension "org" - :publishing-directory "~/Projects/html/" - :recursive t - :publishing-function org-html-publish-to-html - :headline-levels 4 - :auto-preamble t))) - -(use-package magit - :commands (magit-status magit-get-current-branch) - :custom - (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) - -;; NOTE: Make sure to configure a GitHub token before using this package! -;; - https://magit.vc/manual/forge/Token-Creation.html#Token-Creation -;; - https://magit.vc/manual/ghub/Getting-Started.html#Getting-Started -(use-package forge - :after magit) -(use-package magit-todos - :defer t) -(use-package git-link) -(ju/leader-key-def - "g" 'magit) -(use-package git-gutter - :straight git-gutter-fringe - ;;:diminish - :hook ((text-mode . git-gutter-mode) - (prog-mode . git-gutter-mode)) - :config - (setq git-gutter:update-interval 2) - (require 'git-gutter-fringe) - (set-face-foreground 'git-gutter-fr:added "LightGreen") - (fringe-helper-define 'git-gutter-fr:added nil - ".XXXXXX." - "XX....XX" - "X......X" - "X......X" - "XXXXXXXX" - "XXXXXXXX" - "X......X" - "X......X") - - (set-face-foreground 'git-gutter-fr:modified "LightGoldenrod") - (fringe-helper-define 'git-gutter-fr:modified nil - "XXXXXXXX" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X") - - (set-face-foreground 'git-gutter-fr:deleted "LightCoral") - (fringe-helper-define 'git-gutter-fr:deleted nil - "XXXXXX.." - "XX....X." - "XX.....X" - "XX.....X" - "XX.....X" - "XX.....X" - "XX....X." - "XXXXXX..") - - ;; These characters are used in terminal mode - (setq git-gutter:modified-sign "≡") - (setq git-gutter:added-sign "≡") - (setq git-gutter:deleted-sign "≡") - (set-face-foreground 'git-gutter:added "LightGreen") - (set-face-foreground 'git-gutter:modified "LightGoldenrod") - (set-face-foreground 'git-gutter:deleted "LightCoral")) - -(with-eval-after-load 'ox-latex - (add-to-list 'org-latex-classes - '("org-plain-latex" - "\\documentclass[a4paper,11pt,titlepage]{memoir} - \\usepackage{kotex} - [NO-DEFAULT-PACKAGES] - [PACKAGES] - [EXTRA] -\\linespread{1.1} -\\hypersetup{pdfborder=0 0 0}" - ("\\chapter{%s}" . "\\chapter*{%s}") - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) - - (add-to-list 'org-latex-classes - '("ethz" - "\\documentclass[a4paper,11pt,titlepage]{memoir} - \\usepackage{kotex} -\\usepackage[utf8]{inputenc} -\\usepackage[T1]{fontenc} -\\usepackage{fixltx2e} -\\usepackage{graphicx} -\\usepackage{longtable} -\\usepackage{float} -\\usepackage{wrapfig} -\\usepackage{rotating} -\\usepackage[normalem]{ulem} -\\usepackage{amsmath} -\\usepackage{textcomp} -\\usepackage{marvosym} -\\usepackage{wasysym} -\\usepackage{amssymb} -\\usepackage{hyperref} -\\usepackage{mathpazo} -\\usepackage{color} -\\usepackage{enumerate} -\\definecolor{bg}{rgb}{0.95,0.95,0.95} -\\tolerance=1000 - [NO-DEFAULT-PACKAGES] - [PACKAGES] - [EXTRA] -\\linespread{1.1} -\\hypersetup{pdfborder=0 0 0}" - ("\\chapter{%s}" . "\\chapter*{%s}") - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) - - - (add-to-list 'org-latex-classes - '("article" - "\\documentclass[11pt,a4paper]{article} -\\usepackage{kotex} -\\usepackage[utf8]{inputenc} -\\usepackage[T1]{fontenc} -\\usepackage{fixltx2e} -\\usepackage{graphicx} -\\usepackage{longtable} -\\usepackage{float} -\\usepackage{wrapfig} -\\usepackage{rotating} -\\usepackage[normalem]{ulem} -\\usepackage{amsmath} -\\usepackage{textcomp} -\\usepackage{marvosym} -\\usepackage{wasysym} -\\usepackage{amssymb} -\\usepackage{hyperref} -\\usepackage{mathpazo} -\\usepackage{color} -\\usepackage{enumerate} -\\definecolor{bg}{rgb}{0.95,0.95,0.95} -\\tolerance=1000 - [NO-DEFAULT-PACKAGES] - [PACKAGES] - [EXTRA] -\\linespread{1.1} -\\hypersetup{pdfborder=0 0 0}" - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}"))) - - - (add-to-list 'org-latex-classes '("ebook" - "\\documentclass[11pt, oneside]{memoir} -\\setstocksize{9in}{6in} -\\settrimmedsize{\\stockheight}{\\stockwidth}{*} -\\setlrmarginsandblock{2cm}{2cm}{*} % Left and right margin -\\setulmarginsandblock{2cm}{2cm}{*} % Upper and lower margin -\\checkandfixthelayout -% Much more laTeX code omitted -" - ("\\chapter{%s}" . "\\chapter*{%s}") - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}")))) - -(add-to-list 'org-latex-packages-alist '("" "minted")) -(setq org-latex-listings 'minted) ;; Use minted to highlight source code -(setq org-latex-minted-options - '(("breaklines" "true") - ("tabsize" "4") - ("autogobble") - ("bgcolor" "monokaibg"))) -(setq org-latex-pdf-process - '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" - "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" - "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")) - -(setq package-check-signature nil) -(use-package org-gcal - :ensure t - :config - (setq org-gcal-client-id "928945571655-4h4kclj8etm6qfm27jk4jhgil6jsotbc.apps.googleusercontent.com" - org-gcal-client-secret "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" - org-gcal-file-alist '(("cpu3792@gmail.com" . "~/Roam/gcal.org")))) -;;(add-hook 'org-agenda-mode-hook (lambda () (org-gcal-sync) )) -(add-hook 'org-capture-after-finalize-hook (lambda () (org-gcal-sync) )) - - -(add-to-list 'org-agenda-files "~/Roam/Agenda/gcal.org") -;;(add-to-list 'org-agenda-files "~/Roam/Agenda/links.org") -;;(add-to-list 'org-agenda-files "~/Roam/Agenda/i.org") - - -(setq org-capture-templates - '(("a" "Appointment" entry (file "~/Roam/Agenda/gcal.org" ) - "* %?\n\n%^T\n\n:PROPERTIES:\n\n:END:\n\n") - ("l" "Link" entry (file+headline "~/Roam/Agenda/links.org" "Links") - "* %? %^L %^g \n%T" :prepend t) - ("b" "Blog idea" entry (file+headline "~/Roam/Agenda/i.org" "Blog Topics:") - "* %?\n%T" :prepend t) - ("t" "To Do Item" entry (file+headline "~/Roam/Agenda/i.org" "To Do") - "* TODO %?\n%u" :prepend t) - ("n" "Note" entry (file+headline "~/Roam/Agenda/i.org" "Note space") - "* %?\n%u" :prepend t) - ("j" "Journal" entry (file+datetree "~/Roam/Agenda/journal.org") - "* %?\nEntered on %U\n %i\n %a") - ("s" "Screencast" entry (file "~/Roam/Agenda/screencastnotes.org") - "* %?\n%i\n"))) - -;; Don't let ediff break EXWM, keep it in one frame -(setq ediff-diff-options "-w" - ediff-split-window-function 'split-window-horizontally - ediff-window-setup-function 'ediff-setup-windows-plain) - -(use-package rainbow-delimiters - :hook (prog-mode . rainbow-delimiters-mode)) - -(use-package vterm - :commands vterm - :config - (setq term-prompt-regexp "^[^#$%>\n]*[#$%>] *") ;; Set this to match your custom shell prompt - ;;(setq vterm-shell "zsh") ;; Set this to customize the shell to launch - (setq vterm-max-scrollback 10000)) - -(use-package exec-path-from-shell) -(exec-path-from-shell-initialize) - -(when (eq system-type 'windows-nt) - (setq explicit-shell-file-name "powershell.exe") - (setq explicit-powershell.exe-args '())) -(defun dw/get-prompt-path () - (let* ((current-path (eshell/pwd)) - (git-output (shell-command-to-string "git rev-parse --show-toplevel")) - (has-path (not (string-match "^fatal" git-output)))) - (if (not has-path) - (abbreviate-file-name current-path) - (string-remove-prefix (file-name-directory git-output) current-path)))) - -(defun dw/eshell-prompt () - (let ((current-branch (magit-get-current-branch))) - (concat - "\n" - (propertize (system-name) 'face `(:foreground "#62aeed")) - (propertize " ॐ " 'face `(:foreground "white")) - (propertize (dw/get-prompt-path) 'face `(:foreground "#82cfd3")) - (when current-branch - (concat - (propertize " • " 'face `(:foreground "white")) - (propertize (concat " " current-branch) 'face `(:foreground "#c475f0")))) - (propertize " • " 'face `(:foreground "white")) - (propertize (format-time-string "%I:%M:%S %p") 'face `(:foreground "#5a5b7f")) - (if (= (user-uid) 0) - (propertize "\n#" 'face `(:foreground "red2")) - (propertize "\nλ" 'face `(:foreground "#aece4a"))) - (propertize " " 'face `(:foreground "white"))))) - -(defun efs/configure-eshell () - ;; Save command history when commands are entered - (add-hook 'eshell-pre-command-hook 'eshell-save-some-history) - - ;; Truncate buffer for performance - (add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer) - - ;; Bind some useful keys for evil-mode - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "C-r") 'counsel-esh-history) - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "") 'eshell-bol) - (evil-normalize-keymaps) - - (setq eshell-prompt-function 'dw/eshell-prompt - eshell-prompt-regexp "^λ " - eshell-history-size 10000 - eshell-buffer-maximum-lines 10000 - eshell-hist-ignoredups t - eshell-scroll-to-bottom-on-input t)) - -(use-package eshell-git-prompt - :after eshell) - -(use-package eshell - :hook (eshell-first-time-mode . efs/configure-eshell) - :config - - (with-eval-after-load 'esh-opt - (setq eshell-destroy-buffer-when-process-dies t) - (setq eshell-visual-commands '("htop" "zsh" "vim")))) - -(use-package dired - :ensure nil - :straight nil - :commands (dired dired-jump) - :bind (("C-x C-j" . dired-jump)) - :custom ((dired-listing-switches "-agho --group-directories-first")) - :config - (evil-collection-define-key 'normal 'dired-mode-map - "h" 'dired-single-up-directory - "l" 'dired-single-buffer)) -(autoload 'dired-omit-mode "dired-x") -(add-hook 'dired-load-hook - (lambda () - (interactive) - (dired-collapse))) -;; to use h,l key -(use-package dired-single - :commands (dired dired-jump)) -(use-package diredfl - :hook (dired-mode . diredfl-mode)) - -;; from doom emacs -(defun +dired-enable-git-info-h () - "Enable `dired-git-info-mode' in git repos." - (and (not (file-remote-p default-directory)) - (locate-dominating-file "." ".git") - (dired-git-info-mode 1))) -(use-package dired-git-info) -(use-package diff-hl - :hook (dired-mode . diff-hl-dired-mode-unless-remote) - :hook (magit-post-refresh . diff-hl-magit-post-refresh) - :config - ;; use margin instead of fringe - (diff-hl-margin-mode)) -(use-package dired-rsync - :config - (bind-key "C-c C-r" 'dired-rsync dired-mode-map)) -(use-package all-the-icons-dired - :hook (dired-mode . all-the-icons-dired-mode) - :config - ;; HACK Fixes #1929: icons break file renaming in Emacs 27+, because the icon - ;; is considered part of the filename, so we disable icons while we're in - ;; wdired-mode. - ;;(when EMACS27+ - (defvar +wdired-icons-enabled -1)) - -;;(defadvice! +dired-disable-icons-in-wdired-mode-a (&rest _) -;; :before #'wdired-change-to-wdired-mode -;; (setq-local +wdired-icons-enabled (if all-the-icons-dired-mode 1 -1)) -;; (when all-the-icons-dired-mode -;; (all-the-icons-dired-mode -1))) - -;;(defadvice! +dired-restore-icons-after-wdired-mode-a (&rest _) -;; :after #'wdired-change-to-dired-mode -;; (all-the-icons-dired-mode +wdired-icons-enabled)))) -;;(use-package fd-dired) - -(use-package dired-hide-dotfiles - :hook (dired-mode . dired-hide-dotfiles-mode) - :config - (evil-collection-define-key 'normal 'dired-mode-map - "H" 'dired-hide-dotfiles-mode)) -;;(use-package ranger -;; :config -;; (setq ranger-preview-file t) -;; (setq ranger-show-preview t) -;; (setq ranger-show-literal nil) -;; (ranger-override-dired-mode t)) - -(use-package openwith - :after dired - :config - (setq larget-file-warning-threshold nil) - (openwith-mode t) - (setq openwith-associations - (list (list (openwith-make-extension-regexp - '("mpg" "mpeg" "mp3" "mp4" "m4v" - "avi" "wmv" "wav" "mov" "flv" - "ogm" "ogg" "mkv")) - "mpv" - '(file))))) - ;;(list (openwith-make-extension-regexp - ;; '("pdf")) - ;; "evince" - ;; '(file))))) - -(use-package vlf - :config (progn - (require 'vlf-setup))) - -(use-package nov) -(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) - -(use-package lsp-mode - :init - ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") - (setq lsp-keymap-prefix "C-c l") - :hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode) - (c++-mode . lsp) - (verilog-mode . lsp) - ;; if you want which-key integration - (lsp-mode . lsp-enable-which-key-integration)) - :commands lsp) - -;; optionally -(use-package lsp-ui :commands lsp-ui-mode) -;; if you are ivy user -(use-package lsp-ivy :commands lsp-ivy-workspace-symbol) -(use-package lsp-treemacs :commands lsp-treemacs-errors-list) -;; optionally if you want to use debugger -(use-package dap-mode) -;; (use-package dap-LANGUAGE) to load the dap adapter for your language - -(use-package elfeed - :config - (setq elfeed-search-feed-face ":foreground #fff :weight bold" - elfeed-feeds (quote - (("https://www.reddit.com/r/linux.rss" reddit linux) - ("https://www.reddit.com/r/emacs.rss" reddit emacs) - ("https://www.gamingonlinux.com/article_rss.php" gaming linux) - ("https://hackaday.com/blog/feed/" hackaday linux) - ("https://opensource.com/feed" opensource linux) - ("https://linux.softpedia.com/backend.xml" softpedia linux) - ("https://itsfoss.com/feed/" itsfoss linux) - ("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux) - ("https://www.phoronix.com/rss.php" phoronix linux) - ("http://feeds.feedburner.com/d0od" omgubuntu linux) - ("https://www.computerworld.com/index.rss" computerworld linux) - ("https://www.networkworld.com/category/linux/index.rss" networkworld linux) - ("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux) - ("https://betanews.com/feed" betanews linux) - ("http://lxer.com/module/newswire/headlines.rss" lxer linux) - ("https://coolenjoy.net/rss?bo_table=38" coolenjoy IT) - ("https://gigglehd.com/gg/ggnews/rss" giggle IT))))) - -(use-package elfeed-goodies - :init - (elfeed-goodies/setup) - :config - (setq elfeed-goodies/entry-pane-size 0.5)) - -(add-hook 'elfeed-show-mode-hook 'visual-line-mode) -(evil-define-key 'normal elfeed-show-mode-map - (kbd "J") 'elfeed-goodies/split-show-next - (kbd "K") 'elfeed-goodies/split-show-prev) -(evil-define-key 'normal elfeed-search-mode-map - (kbd "J") 'elfeed-goodies/split-show-next - (kbd "K") 'elfeed-goodies/split-show-prev) - -(use-package haskell-mode) - -(use-package rust-mode) - -(use-package markdown-mode - :disabled - :commands (markdown-mode gfm-mode) - :mode (("README\\.md\\'" . gfm-mode) - ("\\.md\\'" . markdown-mode) - ("\\.markdown\\'" . markdown-mode)) - :init (setq markdown-command "multimarkdown")) - -(use-package cmake-mode) - -(use-package yaml-mode) - -(use-package ytel - :straight t - :config - (setq ytel-invidious-api-url "https://invidious.snopyta.org") - ) -(defun ytel-watch () - "Stream video at point in mpv." - (interactive) - (let* ((video (ytel-get-current-video)) - (id (ytel-video-id video))) - (start-process "ytel mpv" nil - "mpv" - (concat "https://www.youtube.com/watch?v=" id)) - "--ytdl-format=bestvideo[height<=?720]+bestaudio/best") - (message "Starting streaming...")) - -(use-package jupyter - :straight t) -(org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) ;; Other languages - (shell . t) - ;; Python & Jupyter - (python . t) - (jupyter . t))) -(org-babel-jupyter-override-src-block "python") diff --git a/.emacs.vanilla/emacs.org b/.emacs.vanilla/emacs.org deleted file mode 100644 index ca1270b..0000000 --- a/.emacs.vanilla/emacs.org +++ /dev/null @@ -1,1694 +0,0 @@ -#+TITLE: Emacs Configuration -#+AUTHOR: JaeYoo-Im, (cpu3792@gmail.com) - - -* Global Settings -| 12345678 | | -|----------+---| -| 일이삼사 | | -#+begin_src emacs-lisp - ;; -*- lexical-binding: t; -*- - ;;User - (setq user-full-name "JaeYoo,Im" - user-mail-address "cpu3792@gmail.com") - ;; os - (setq custom-file (make-temp-file "emacs-custom")) - (setq windows? (eq system-type 'windows-nt)) - (setq mac? (eq system-type 'darwin)) - (setq large-file-warning-threshold nil) - - (setq system-time-locale "C") - (setenv "LANG" "en_US.UTF-8") - (setenv "LC_ALL" "en_US.UTF-8") - ;; theme var - (defvar gvar/default-font-size 110) - (defvar gvar/default-variable-font-size 110) - (defvar gvar/frame-transparency '(75 . 75)) - ;;dir - ;;(setq user-emacs-directory "~/.cache/emacs") - ;; encoding - (set-language-environment "Korean") - (set-default-coding-systems 'utf-8) - (prefer-coding-system 'utf-8) - ;; font - (defun available-font? (font) (member font (font-family-list))) -#+end_src -* Toggle Transparency -#+begin_src emacs-lisp - (defun toggle-transparency () - (interactive) - (let ((alpha (frame-parameter nil 'alpha))) - (set-frame-parameter - nil 'alpha - (if (eql (cond ((numberp alpha) alpha) - ((numberp (cdr alpha)) (cdr alpha)) - ;; Also handle undocumented ( ) form. - ((numberp (cadr alpha)) (cadr alpha))) - 100) - gvar/frame-transparency '(100 . 100))))) - (global-set-key (kbd "C-c t") 'toggle-transparency) -#+end_src -* Package Related -** Package Repo -#+begin_src emacs-lisp - (require 'package) - (setq package-archives '(("melpa" . "https://melpa.org/packages/") - ("org" . "https://orgmode.org/elpa/") - ("elpa" . "https://elpa.gnu.org/packages/") - ("nongnu" . "https://elpa.nongnu.org/nongnu/"))) - ;;(unless package-archive-contents - ;; (package-refresh-contents)) - (package-initialize) -#+end_src -** use-package -#+begin_src emacs-lisp - ;; Initialize use-package on non-Linux platforms - (unless (package-installed-p 'use-package) - (package-install 'use-package)) - - (when (not (package-installed-p 'use-package)) - (package-refresh-contents) - (package-install 'use-package)) - (require 'use-package) - (setq use-package-always-ensure t) - - ;;(use-package auto-package-update - ;; :custom - ;; (auto-package-update-interval 7) - ;; (auto-package-update-prompt-before-update t) - ;; (auto-package-update-hide-results t) - ;; :config - ;; (auto-package-update-maybe) - ;; (auto-package-update-at-time "09:00")) -#+end_src - - -** Straight -https://github.com/raxod502/straight.el -#+begin_src emacs-lisp - (defvar bootstrap-version) - (let ((bootstrap-file - (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) - (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 'nomessage)) - - (setq straight-use-package-by-default t) - ;; Use package install from git - (straight-use-package 'use-package) -#+end_src - -** Paradox -#+begin_src emacs-lisp -(use-package paradox - :init - (setq paradox-github-token t) - (setq paradox-execute-asynchronously t) - (setq paradox-automatically-star t)) -#+end_src -* Indentation -#+begin_src emacs-lisp - ;; tab - (setq-default indent-tabs-mode t) - (setq-default tab-width 4) - (setq-default evil-shift-width tab-width) - ;; verilog - (custom-set-variables - '(verilog-indent-level 4) - '(verilog-indent-level-module 0) - '(verilog-indent-level-declaration 0) - '(verilog-indent-level-behavioral 0) - '(verilog-indent-level-directive 0) - '(verilog-cexp-indent 0) - '(verilog-case-indent 4) - - '(verilog-auto-newline nil)) -#+end_src - -* No-Littering -#+begin_src emacs-lisp - (use-package no-littering) ; make ~/.emacs.d clean - ;; no-littering doesn't set this by default so we must place - ;; auto save files in the same path as it uses for sessions - (setq auto-save-file-name-transforms - `((".*" ,(no-littering-expand-var-file-name "auto-save/") t))) - - (setq inhibit-startup-message t) -#+end_src - -* Performance Optimization -** Garbage Collection -+ Doom Emacs -#+begin_src emacs-lisp - ;; (setq gc-cons-threshold most-positive-fixnum) - ;; (defconst 1mb 1048576) - ;; (defconst 20mb 20971520) - ;; (defconst 30mb 31457280) - ;; (defconst 50mb 52428800) - ;; - ;; (defun fk/defer-garbage-collection () - ;; (setq gc-cons-threshold most-positive-fixnum)) - ;; - ;; (defun fk/restore-garbage-collection () - ;; (run-at-time 1 nil (lambda () (setq gc-cons-threshold 30mb)))) - ;; - ;; (add-hook 'emacs-startup-hook 'fk/restore-garbage-collection 100) - ;; (add-hook 'minibuffer-setup-hook 'fk/defer-garbage-collection) - ;; (add-hook 'minibuffer-exit-hook 'fk/restore-garbage-collection) - ;; - ;; (setq read-process-output-max 1mb) ;; lsp-mode's performance suggest -#+end_src -+ Derek's - #+begin_src emacs-lisp - ;; Using garbage magic hack. - (use-package gcmh - :config - (gcmh-mode 1)) - ;; Setting garbage collection threshold - (setq gc-cons-threshold 402653184 - gc-cons-percentage 0.6) - - ;; Profile emacs startup - (add-hook 'emacs-startup-hook - (lambda () - (message "*** Emacs loaded in %s with %d garbage collections." - (format "%.2f seconds" - (float-time - (time-subtract after-init-time before-init-time))) - gcs-done))) - - ;; Silence compiler warnings as they can be pretty disruptive (setq comp-async-report-warnings-errors nil) - - - #+end_src - - -* EVIL Mode -#+begin_src emacs-lisp - (defun ju/evil-hook() - (dolist (mode '(custom-mode - erc-mode)) - (add-to-list 'evil-emacs-state-modes mode))) - (use-package undo-tree - :init - (global-undo-tree-mode 1)) - (use-package evil - :ensure t - :init - (setq evil-want-integration t) - (setq evil-want-keybinding nil) - (setq evil-want-C-u-scroll t) - (setq evil-want-C-i-jump nil) - (setq evil-undo-system 'undo-tree) - :config - (add-hook 'evil-mode-hook 'ju/evil-hook) - (evil-mode 1) - (define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join) - ;;(setq-default evil-symbol-word-search t) ;; evil can identify the word with underscore. - ;; Http://blog.binchen.org/posts/auto-complete-word-in-emacs-mini-buffer-when-using-evil.html - ;;(defun minibuffer-inactive-mode-hook-setup () - ;;;; make `try-expand-dabbrev' from `hippie-expand' work in mini-buffer - ;;;; @see `he-dabbrev-beg', so we need re-define syntax for '/' - ;;(set-syntax-table (let* ((table (make-syntax-table))) - ;;(modify-syntax-entry ?/ "." table) - ;;table))) - ;;(add-hook 'minibuffer-inactive-mode-hook 'minibuffer-inactive-mode-hook-setup) - - ;; Use visual line motions even outside of visual-line-mode buffers - (evil-global-set-key 'motion "j" 'evil-next-visual-line) - (evil-global-set-key 'motion "k" 'evil-previous-visual-line) - (evil-set-initial-state 'messages-buffer-mode 'normal) - (evil-set-initial-state 'dashboard-mode 'normal)) - (use-package evil-numbers - :after evil - :config - ;; unfortunately C-x is emacs common key binding. - (define-key evil-normal-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-normal-state-map (kbd "g -") 'evil-numbers/dec-at-pt) - (define-key evil-visual-state-map (kbd "g =") 'evil-numbers/inc-at-pt) - (define-key evil-visual-state-map (kbd "g -") 'evil-numbers/dec-at-pt)) - (use-package evil-nerd-commenter - :after evil - :config - (define-key evil-normal-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines) - (define-key evil-visual-state-map (kbd "g c") 'evilnc-comment-or-uncomment-lines)) - - (use-package evil-collection - :after evil - :ensure t - :config - (evil-collection-init)) - - (modify-syntax-entry ?_ "w") - ;;(defalias 'forward-evil-word 'forward-evil-symbol) ;; include underscore to word -#+end_src - -** TODO Check Tips -https://github.com/noctuid/evil-guide -https://nathantypanski.com/blog/2014-08-03-a-vim-like-emacs-config.html - -* GUI -** Initial Configuration -#+begin_src emacs-lisp - (scroll-bar-mode -1) ; Disable visible scrollbar - (tool-bar-mode -1) ; Disable the toolbar - (tooltip-mode -1) ; Disable tooltips - (set-fringe-mode 10) ; Give some breathing room - (xterm-mouse-mode) - - (menu-bar-mode -1) ; Disable the menu bar - ;;(setq visible-bell t) -#+end_src - -** Line number -#+begin_src emacs-lisp - (column-number-mode) - (global-display-line-numbers-mode t) - ;; Disable line numbers for some modes - (dolist (mode '(org-mode-hook - vterm-mode-hook - shell-mode-hook - treemacs-mode-hook - dired-mode-hook - eshell-mode-hook)) - (add-hook mode (lambda () (display-line-numbers-mode 0)))) -#+end_src -* Theme -#+begin_src emacs-lisp - (use-package doom-themes - :init - (setq doom_themes-enable-bold t - doom-themes-enablbe-italic t) - :config - ;;(load-theme 'doom-palenight t) - ;;(load-theme 'doom-gruvbox t) - ;;(load-theme 'doom-one t) - (load-theme 'doom-dracula t) - ;; Enable flashing mode-line on errors - (doom-themes-visual-bell-config) - ;; Corrects (and improves) org-mode's native fontification. - (doom-themes-org-config)) - - ;; hilight line at the cursor. - (global-hl-line-mode t) - ;;(use-package beacon - ;; :straight t - ;; :config - ;; (beacon-mode)) - - (use-package doom-modeline - :init (doom-modeline-mode 1) - :custom ((doom-modeline-height 15))) - - ;; Set frame transparency - (set-frame-parameter (selected-frame) 'alpha gvar/frame-transparency) - (add-to-list 'default-frame-alist `(alpha . ,gvar/frame-transparency)) - (set-frame-parameter (selected-frame) 'fullscreen 'maximized) - (add-to-list 'default-frame-alist '(fullscreen . maximized)) -#+end_src -* Dashboard -#+begin_src emacs-lisp - (use-package dashboard - :ensure t - :init - (setq dashboard-set-heading-icons t) - (setq dashboard-set-file-icons t) - ;;(setq dashboard-banner-logo-title "Emacs is more than a text editor!") - ;;(dashboard-startup-banner 'logo) - (setq dashboard-startup-banner "/home/jaeus/.emacs.vanilla/logos/black-hole.png") - (setq dashboard-center-content t) - (setq dashboard-week-agenda t) - (setq dashboard-agenda-time-string-format "%d/%m/%Y %A %H:%M") - (setq dashboard-items '((recents . 10) - (agenda . 5) - (bookmarks . 5) - (projects . 5) - (registers . 5))) - (setq dashboard-set-navigator t) - ;; Format: "(icon title help action face prefix suffix)" - (setq dashboard-navigator-buttons - `((;; Github - (,(all-the-icons-octicon "mark-github" :height 1.1 :v-adjust 0.0) - "Github" - "Browse github" - (lambda (&rest _) (browse-url "https://github.com/JaeYoo-Im/"))) - (,(all-the-icons-octicon "history" :height 1.1 :v-adjust 0.0) - "Reload last session" - "Reload last session" - (lambda (&rest _) (persp-state-load persp-state-default-file)))))) - :config - (dashboard-setup-startup-hook) - (dashboard-modify-heading-icons '((recents . "file-text") - (bookmarks . "book")))) - (setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) -#+end_src -* Fonts -| 12345678 | | -|----------+---| -| 일이삼사 | | -#+begin_src emacs-lisp - ;; NanumGothicCoding - ;;(add-to-list 'default-frame-alist `(font . "NanumGothicCoding")) - ;;(set-face-attribute 'default nil :font "NanumGothicCoding" :height gvar/default-font-size) - ;;(set-face-attribute 'fixed-pitch nil :font "NanumGothicCoding" :height gvar/default-font-size) - ;;(set-face-attribute 'variable-pitch nil :font "NanumGothicCoding" :height gvar/default-variable-font-size :weight 'regular) - ;;(set-fontset-font t 'hangul (font-spec :family "NanumGothicCoding" :height gvar/default-font-size)) - - ;; D2Coding - ;;(add-to-list 'default-frame-alist `(font . "D2Coding")) - ;;(set-face-attribute 'default nil :font "D2Coding" :height gvar/default-font-size) - ;;(set-face-attribute 'fixed-pitch nil :font "D2Coding" :height gvar/default-font-size) - ;;(set-face-attribute 'variable-pitch nil :font "D2Coding" :height gvar/default-variable-font-size :weight 'regular) - ;;(set-fontset-font t 'hangul (font-spec :family "D2Coding" :height gvar/default-font-size)) - - ;; Fira Code Retina(English) / D2Coding(Hangul) - Fixed pitch only - (add-to-list 'default-frame-alist `(font . "Fira Code Retina")) - (set-face-attribute 'default nil :font "Fira Code Retina" :height gvar/default-font-size) - (set-face-attribute 'fixed-pitch nil :font "Fira Code Retina" :height gvar/default-font-size) - (set-face-attribute 'variable-pitch nil :font "Fira Code Retina" :height gvar/default-variable-font-size :weight 'regular) - (set-fontset-font t 'hangul (font-spec :family "D2Coding" :height gvar/default-font-size)) - (setq face-font-rescale-alist - '(("D2Coding" . 1.25))) - - ;; Dejavu Sans Mono(English) / D2Coding(Hangul) - Fixed pitch only - ;;(add-to-list 'default-frame-alist `(font . "Dejavu Sans Mono")) - ;;(set-face-attribute 'default nil :font "Dejavu Sans Mono" :height gvar/default-font-size) - ;;(set-face-attribute 'fixed-pitch nil :font "Dejavu Sans Mono" :height gvar/default-font-size) - ;;(set-face-attribute 'variable-pitch nil :font "Dejavu Sans Mono" :height gvar/default-variable-font-size :weight 'regular) - ;;(set-fontset-font t 'hangul (font-spec :family "D2Coding" :height gvar/default-font-size)) - ;;(setq face-font-rescale-alist - ;; '(("D2Coding" . 1.25))) - ;;(setq-default line-spacing 2) - ;;(global-prettify-symbols-mode +1) -#+end_src -* Whitespace -This makes nov to ugly -#+begin_src emacs-lisp - ;; somtimes need to check white space. this configuration will be helpful - ;;(custom-set-faces - ;; ;; custom-set-faces was added by Custom. - ;; ;; If you edit it by hand, you could mess it up, so be careful. - ;; ;; Your init file should contain only one such instance. - ;; ;; If there is more than one, they won't work right. - ;; '(whitespace-line ((nil (:bold t :background "yellow")))) - ;; '(whitespace-tab ((nil (:bold t :background "linen")))) - ;; '(whitespace-trailing ((nil (:bold t :background "red1"))))) - ;;(global-whitespace-mode t) - ;;(add-hook - ;; 'after-change-major-mode-hook - ;; '(lambda () - ;; (setq whitespace-line-column nil - ;; whitespace-style '(face trailing)))) - ;;(add-hook 'before-save-hook 'delete-trailing-whitespace) -#+end_src - -* Emojify -#+begin_src emacs-lisp - (use-package emojify - :hook (after-init . global-emojify-mode)) -#+end_src -* Which Key -#+begin_src emacs-lisp - (use-package which-key - :defer 0 - :diminish which-key-mode - :config - (which-key-mode) - (setq which-key-idle-delay 0.5)) -#+end_src - -* General Key Binding -#+begin_src emacs-lisp - (use-package general - :ensure t - :config - (general-evil-setup t) - (general-create-definer ju/leader-key-def - :keymaps '(normal insert visual emacs) - :prefix "SPC" - :global-prefix "C-SPC")) - - (ju/leader-key-def - "." 'find-file - ;; Buffer - "b" '(:ignore t :which-key "buffer handling") - "b b" '(ibuffer :which-key "IBuffer") - "b k" '(kill-current-buffer :which-key "Kill current buffer") - "b n" '(next-buffer :which-key "Next buffer") - "b p" '(previous-buffer :which-key "Previous buffer") - "b B" '(ibuffer-list-buffers :which-key "IBuffer List Buffers") - "b K" '(kill-buffer :which-key "IBuffer Kill Buffers") - ;; Eshell - "e" '(:ignore t :which-key "eshell") - "e h" '(counsel-esh-history :which "Kill history") - "e s" '(eshell :which "run eshell") - ;; Workspace - ;; Counsel - "f" '(:ignore t :which-key "file op.") - "f r" '(consult-recent-file :which-key "Recent files") - "f R" '(revert-buffer :which-key "Revert Buffer") - "t t" '(toggle-truncate-lines :which-key "Toggle truncate lines") - ;; Shortcut - "f d d" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.vanilla/desktop.org")) :which-key "open exwm config") - "f d e" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.vanilla/emacs.org")) :which-key "open emacs config")) -#+end_src - -#+begin_src emacs-lisp - ;; Key binding - ;; Make ESC quit prompts - (global-set-key (kbd "") 'keyboard-escape-quit) - ;; this annoying binding. - (global-unset-key (kbd "C-j")) - (global-unset-key (kbd "C-k")) - (global-unset-key (kbd "S-SPC")) ;; use only S-\ -#+end_src -* Auto Save & reverting -#+begin_src emacs-lisp - (use-package diminish) - (use-package super-save - :defer 1 - :diminish super-save-mode - :config - (super-save-mode +1) - (setq super-save-auto-save-when-idle t)) - (setq global-auto-revert-non-file-buffers t) - (global-auto-revert-mode 1) -#+end_src -* Tramp -#+begin_src emacs-lisp - ;; tramp default is scp - (setq tramp-default-method "ssh") -#+end_src -* Company -#+begin_src emacs-lisp - (use-package company - :init - (add-hook 'after-init-hook 'global-company-mode) - :bind - (:map company-active-map - ("" . company-complete-selection)) - (:map lsp-mode-map - ("" . company-indent-or-complete-common)) - :config - (setq company-idle-delay 0 - company-show-numbers "on" - company-dabbrev-downcase nil - ) - (add-to-list 'company-backends 'org-keyword-backend) - ) - ;;(use-package company - ;;:after lsp-mode - ;;:hook (lsp-mode . company-mode) - ;;:bind (:map company-active-map - ;;("" . company-complete-selection)) - ;;(:map lsp-mode-map - ;;("" . company-indent-or-complete-common)) - ;;:custom - ;;(company-minimum-prefix-length 1) - ;;(setq company-show-numbers "on") - ;;(company-idle-delay 0.0)) - - ;;(use-package company-box - ;;:hook (company-mode . company-box-mode)) -#+end_src - - -+ ORG mode =#+= Candidates -https://emacs.stackexchange.com/a/30691 -#+begin_src emacs-lisp - (defun org-keyword-backend (command &optional arg &rest ignored) - (interactive (list 'interactive)) - (cl-case command - (interactive (company-begin-backend 'org-keyword-backend)) - (prefix (and (eq major-mode 'org-mode) - (cons (company-grab-line "^#\\+\\(\\w*\\)" 1) - t))) - (candidates (mapcar #'upcase - (cl-remove-if-not - (lambda (c) (string-prefix-p arg c)) - (pcomplete-completions)))) - (ignore-case t) - (duplicates t))) -#+end_src - -** Prescient -#+begin_src emacs-lisp - (use-package prescient - :hook (dashboard-after-initialize . prescient-persist-mode)) - ;;(use-package company-prescient - ;; :after company - ;; :config (company-prescient-mode)) -#+end_src - -* FlyCheck -#+begin_src emacs-lisp - (use-package flycheck - :ensure t - :defer t - :init (global-flycheck-mode t)) -#+end_src -* Yasnippet -#+begin_src emacs-lisp - (use-package yasnippet-snippets) - (use-package yasnippet - :init - (defvar yas-snippet-dirs nil) - :hook (prog-mode . yas-minor-mode) - :config - (add-to-list 'yas-snippet-dirs "~/.emacs.d/snippets") - (yas-global-mode 1)) - (ju/leader-key-def - "i" '(:ignore t :which-key "insert something.") - "is" '(yas-insert-snippet :which-key "snippet") - "ie" '(emojify-insert-emoji :which-key "emoji")) -#+end_src - - -* World Time -#+begin_src emacs-lisp - (setq display-time-world-list - '(("Etc/UTC" "UTC") - ("Asia/Seoul" "Seoul") - ("Asia/Shanghai" "Shanghai"))) - (setq display-time-world-time-format "%a, %d %b %I:%M %p %Z") -#+end_src - -* IVY Related -** IVY -#+begin_src emacs-lisp -;; (use-package ivy -;; :diminish -;; :bind (("C-s" . swiper) -;; :map ivy-minibuffer-map -;; ("TAB" . ivy-alt-done) -;; ("C-l" . ivy-alt-done) -;; ("C-j" . ivy-next-line) -;; ("C-k" . ivy-previous-line) -;; :map ivy-switch-buffer-map -;; ("C-k" . ivy-previous-line) -;; ("C-l" . ivy-done) -;; ("C-d" . ivy-switch-buffer-kill) -;; :map ivy-reverse-i-search-map -;; ("C-k" . ivy-previous-line) -;; ("C-d" . ivy-reverse-i-search-kill)) -;; :config -;; (ivy-mode 1)) -;; -;; (use-package ivy-rich -;; :after ivy -;; :init -;; (ivy-rich-mode 1) -;; (ivy-rich-project-root-cache-mode 1)) -;; -;; (use-package ivy-posframe -;; ;;:disabled -;; :after ivy -;; :diminish -;; :init -;; (setq ivy-posframe-display-functions-alist -;; '((swiper . ivy-posframe-display-at-point) -;; (emojify-insert-emoji . ivy-display-function-fallback) -;; (t . ivy-posframe-display))) -;; :custom-face -;; (ivy-posframe-border ((t (:background "#ffffff")))) -;; :config -;; (setq ivy-posframe-height-minibuffer nil) -;; (setq ivy-posframe-parameters '((internal-border-width . 1))) -;; (ivy-posframe-mode 1)) -;; -;; (use-package ivy-prescient -;; :after counsel -;; :custom -;; (ivy-prescient-enable-filtering nil) -;; :config -;; ;; Uncomment the following line to have sorting remembered across sessions! -;; ;(prescient-persist-mode 1) -;; (ivy-prescient-mode 1)) -;; (use-package all-the-icons-ivy -;; :init (add-hook 'after-init-hook 'all-the-icons-ivy-setup)) - -#+end_src - -** Counsel -#+begin_src emacs-lisp -;; (use-package counsel -;; :bind (("M-x" . counsel-M-x) -;; ;;("C-M-j" . counsel-switch-buffer) -;; :map minibuffer-local-map -;; ("C-r" . 'counsel-minibuffer-history)) -;; :custom -;; (counsel-linux-app-format-function #'counsel-linux-app-format-function-name-only) -;; :config -;; ;; Don't use ^ as initial input. Set this here because `counsel' defines more -;; ;; of its own, on top of the defaults. -;; (setq ivy-initial-inputs-alist nil) -;; (counsel-mode 1)) -#+end_src - -* Vertico Related -** Vertico -#+begin_src emacs-lisp - (use-package vertico - :ensure t - :bind (:map vertico-map - ("C-j" . vertico-next) - ("C-k" . vertico-previous)) - :custom - (vertico-cycle t) - :init - (vertico-mode)) - (use-package savehist - :init - (savehist-mode)) - - (use-package marginalia - :after vertico - :ensure t - :custom - (marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)) - :init - (marginalia-mode)) - (use-package vertico-posframe - :disabled - :after vertico - :ensure t - :init - (setq vertico-posframe-parameters - `((left-fringe . 8) - (right-fringe . 8) (alpha . 100))) - (vertico-posframe-mode 1)) -#+end_src -** Orderless -#+begin_src emacs-lisp -(use-package orderless - :init - (setq completion-styles '(orderless) - completion-category-defaults nil - completion-category-overrides '((file (styles . (partial-completion)))))) -#+end_src -** Embark -#+begin_src emacs-lisp -(use-package embark - :bind (("C-S-a" . embark-act) - :map minibuffer-local-map - ("C-d" . embark-act)) - :config - - ;; Show Embark actions via which-key - (setq embark-action-indicator - (lambda (map) - (which-key--show-keymap "Embark" map nil nil 'no-paging) - #'which-key--hide-popup-ignore-command) - embark-become-indicator embark-action-indicator)) - -(use-package embark-consult - :after embark) -#+end_src -** Consult -#+begin_src emacs-lisp - (defun dw/get-project-root () - (when (fboundp 'projectile-project-root) - (projectile-project-root))) - - (use-package consult - :demand t - :bind (("C-s" . consult-line) - ("C-M-l" . consult-imenu) - ("C-M-j" . persp-switch-to-buffer*) - :map minibuffer-local-map - ("C-r" . consult-history)) - :custom - (consult-project-root-function #'dw/get-project-root) - (completion-in-region-function #'consult-completion-in-region)) - (use-package consult-dir - :straight t - :bind (("C-x C-d" . consult-dir) - :map vertico-map - ("C-x C-d" . consult-dir) - ("C-x C-j" . consult-dir-jump-file)) - :custom - (consult-dir-project-list-function nil)) -#+end_src - - -* Avy (like easymotion) -#+begin_src emacs-lisp - (use-package avy - :commands (avy-goto-char avy-goto-word-0 avy-goto-line)) - (ju/leader-key-def - "v" '(:ignore t :which-key "Avy") - "vc" '(avy-goto-char :which-key "Avy Goto Char") - "vw" '(avy-goto-word-0 :which-key "Avy Goto Word") - "vl" '(avy-goto-line :which-key "Avy Goto Line")) -#+end_src -* Projectile -#+begin_src emacs-lisp - (defun dw/switch-project-action () - "Switch to a workspace with the project name and start `magit-status'." - (persp-switch (projectile-project-name)) - (magit-status)) - (use-package projectile - :diminish projectile-mode - :config - (projectile-mode) - (setq projectile-enable-caching t) - (setq projectile-indexing-method 'hybrid) - :custom ((projectile-completion-system 'ivy)) - :bind-keymap - ("C-c p" . projectile-command-map) - :init - ;; NOTE: Set this to the folder where you keep your Git repos! - (when (file-directory-p "~/Projects") - (setq projectile-project-search-path '("~/Projects"))) - (setq projectile-switch-project-action #'dw/switch-project-action)) - - (use-package counsel-projectile - :disabled - :after projectile - :config (counsel-projectile-mode)) - (ju/leader-key-def - "p" '(:ignore t :which-key "Projectile") - "p." 'projectile-find-file - "ps" 'projectile-switch-project - "pg" 'consult-ripgrep - "pc" 'projectile-compile-project - "pd" 'projectile-dired) - ;;(defun dw/switch-project-action () - ;; "Switch to a workspace with the project name and start `magit-status'." - ;; ;; TODO: Switch to EXWM workspace 1? - ;; (persp-switch (projectile-project-name)) - ;; (magit-status)) - -#+end_src - -* Perspective -#+begin_src emacs-lisp - (use-package perspective - :demand t - :bind (("C-M-j" . consult-buffer) - ("C-M-k" . persp-switch) - ("C-M-n" . persp-next) - ("C-x k" . persp-kill-buffer*)) - :custom - (persp-initial-frame-name "Main") - :config - ;; Running `persp-mode' multiple times resets the perspective list... - (unless (equal persp-mode t) - (persp-mode))) -#+end_src - -* Helpful -#+begin_src emacs-lisp - (use-package helpful - :commands (helpful-callable helpful-variable helpful-command helpful-key) - :custom - (counsel-describe-function-function #'helpful-callable) - (counsel-describe-variable-function #'helpful-variable) - :bind - ([remap describe-function] . describe-function) - ([remap describe-command] . helpful-command) - ([remap describe-variable] . describe-variable) - ([remap describe-key] . helpful-key)) -#+end_src -* Hydra -#+begin_src emacs-lisp - ;;(use-package hydra - ;; :defer t) - - ;;(defhydra hydra-text-scale (:timeout 4) - ;; "scale text" - ;; ("j" text-scale-increase "in") - ;; ("k" text-scale-decrease "out") - ;; ("f" nil "finished" :exit t)) - - ;;(gvar/leader-keys - ;; "ts" '(hydra-text-scale/body :which-key "scale text")) -#+end_src -* HI-TOOD -#+begin_src emacs-lisp - (use-package hl-todo - :hook (prog-mode . hl-todo-mode) - :hook (yaml-mode . hl-todo-mode) - :config - (setq hl-todo-highlight-punctuation ":" - hl-todo-keyword-faces - `(;; For things that need to be done, just not today. - ("TODO" warning bold) - ;; For problems that will become bigger problems later if not - ;; fixed ASAP. - ("FIXME" error bold) - ;; For tidbits that are unconventional and not intended uses of the - ;; constituent parts, and may break in a future update. - ("HACK" font-lock-constant-face bold) - ;; For things that were done hastily and/or hasn't been thoroughly - ;; tested. It may not even be necessary! - ("REVIEW" font-lock-keyword-face bold) - ;; For especially important gotchas with a given implementation, - ;; directed at another user other than the author. - ("NOTE" success bold) - ;; For things that just gotta go and will soon be gone. - ("DEPRECATED" font-lock-doc-face bold) - ;; For a known bug that needs a workaround - ("BUG" error bold) - ;; For warning about a problematic or misguiding code - ("XXX" font-lock-constant-face bold)))) -#+end_src -* Org mode -+ Initial Setup -#+begin_src emacs-lisp - (defun efs/org-mode-setup () - (org-indent-mode) - ;;(variable-pitch-mode 1) - (visual-line-mode 1)) - - (use-package org - ;;:pin org - :demand t - :commands (org-capture org-agenda) - :hook (org-mode . efs/org-mode-setup) - :config - - (setq org-todo-keywords - '((sequence "TODO(t)" "HOLD(h)" "|" "KILL(k)" "DONE(d)"))) - (setq org-ellipsis " ▾") - (setq org-hide-emphasis-markers t) - (setq org-src-fontify-natively t) - (setq org-fontify-quote-and-verse-blocks t) - - (setq org-agenda-start-with-log-mode t) - (setq org-log-done 'time) - (setq org-log-into-drawer t) - (setq org-format-latex-options (plist-put org-format-latex-options :scale 1.8))) - (use-package org-superstar :after org :hook (org-mode . org-superstar-mode)) - (use-package org-attach-screenshot) - (use-package org-download) - - (defun efs/org-mode-visual-fill () - (setq visual-fill-column-width 100 - visual-fill-column-center-text t) - (visual-fill-column-mode 1)) - - (use-package visual-fill-column - :hook (org-mode . efs/org-mode-visual-fill)) - - (with-eval-after-load 'org - (org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) - (python . t) - (latex . t))) - - (push '("conf-unix" . conf-unix) org-src-lang-modes)) - - (with-eval-after-load 'org - ;; This is needed as of Org 9.2 - (require 'org-tempo) - - (add-to-list 'org-structure-template-alist '("sh" . "src shell")) - (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) - (add-to-list 'org-structure-template-alist '("hs" . "src haskell")) - (add-to-list 'org-structure-template-alist '("cc" . "src c")) - (add-to-list 'org-structure-template-alist '("cp" . "src c++")) - (add-to-list 'org-structure-template-alist '("rs" . "src rust")) - (add-to-list 'org-structure-template-alist '("py" . "src python")) - (add-to-list 'org-structure-template-alist '("oc" . "src octave")) - (add-to-list 'org-structure-template-alist '("vl" . "src verilog")) - (add-to-list 'org-structure-template-alist '("vh" . "src vhdl"))) - ;;(org-reload)) - - ;; ODT export to docx - (setq org-odt-preferred-output-format "docx") - - ;; Do not ask when run code block - (setq org-confirm-babel-evaluate nil) - - - (ju/leader-key-def - "o" '(:ignore t :which-key "Org mode") - "oa" '(:ignore t :which-key "Org Agenda") - "oar" '(my/org-roam-refresh-agenda-list :which-key "Org agenda refresh list") - "oaa" '(org-agenda :which-key "open org agenda")) -#+end_src - -** Org mode Addons -#+begin_src emacs-lisp - (use-package org-contrib) -#+end_src - -** Org Roam -#+begin_src emacs-lisp - (use-package org-roam - :ensure t - :demand t ;; Ensure org-roam is loaded by default - :init - (setq org-roam-v2-ack t) - :custom - (org-roam-directory "~/Roam") - (org-roam-completion-everywhere t) - - :config - (org-roam-db-autosync-mode)) - ;;(org-roam-setup)) - (ju/leader-key-def - "r" '(:ignore t :which-key "Org Roam") - "ru" 'org-roam-ui-open - "rl" 'org-roam-buffer-toggle - "rf" 'org-roam-node-find - "ri" 'org-roam-node-insert - "rI" 'org-roam-node-insert-immediate - "rp" 'my/org-roam-find-project) - - (defun org-roam-node-insert-immediate (arg &rest args) - (interactive "P") - (let ((args (push arg args)) - (org-roam-capture-templates (list (append (car org-roam-capture-templates) - '(:immediate-finish t))))) - (apply #'org-roam-node-insert args))) - - (defun my/org-roam-filter-by-tag (tag-name) - (lambda (node) - (member tag-name (org-roam-node-tags node)))) - - (defun my/org-roam-list-notes-by-tag (tag-name) - (mapcar #'org-roam-node-file - (seq-filter - (my/org-roam-filter-by-tag tag-name) - (org-roam-node-list)))) - - (defun my/org-roam-refresh-agenda-list () - (interactive) - (setq org-agenda-files (my/org-roam-list-notes-by-tag "Project"))) - - ;; Build the agenda list the first time for the session - (my/org-roam-refresh-agenda-list) - - (defun my/org-roam-project-finalize-hook () - "Adds the captured project file to `org-agenda-files' if the - capture was not aborted." - ;; Remove the hook since it was added temporarily - (remove-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook) - - ;; Add project file to the agenda list if the capture was confirmed - (unless org-note-abort - (with-current-buffer (org-capture-get :buffer) - (add-to-list 'org-agenda-files (buffer-file-name))))) - - (defun my/org-roam-find-project () - (interactive) - ;; Add the project file to the agenda after capture is finished - (add-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook) - - ;; Select a project file to open, creating it if necessary - (org-roam-node-find - nil - nil - (my/org-roam-filter-by-tag "Project") - :templates - '(("p" "project" plain "* Goals\n\n%?\n\n* Tasks\n\n** TODO Add initial tasks\n\n* History\n\n* Notes\n\n" - :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n#+category: ${title}\n#+filetags: Project") - :unnarrowed t)))) - - (add-to-list 'org-after-todo-state-change-hook - (lambda () - (when (equal org-state "DONE") - (my/org-roam-copy-todo-to-today)))) -#+end_src -** Org Roam Server -+ DEPRECATED ( ORG-ROAM V2 ) -#+begin_src emacs-lisp - ;;(use-package org-roam-server - ;; :ensure t - ;; :config - ;; (setq org-roam-server-host "127.0.0.1" - ;; org-roam-server-port 23799 - ;; org-roam-server-authenticate nil - ;; org-roam-server-export-inline-images t - ;; org-roam-server-serve-files t - ;; org-roam-server-served-file-extensions '("pdf" "mp4" "ogv") - ;; org-roam-server-network-poll t - ;; org-roam-server-network-arrows nil - ;; org-roam-server-network-label-truncate t - ;; org-roam-server-network-label-truncate-length 60 - ;; org-roam-server-network-label-wrap-length 20)) -#+end_src -** Org Roam UI -#+begin_src emacs-lisp - (use-package websocket - :after org-roam) - (use-package org-roam-ui - :straight - (:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out")) - :after org-roam - ;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have - ;; a hookable mode anymore, you're advised to pick something yourself - ;; if you don't care about startup time, use - ;; :hook (after-init . org-roam-ui-mode) - :config - (setq org-roam-ui-sync-theme t - org-roam-ui-follow t - org-roam-ui-update-on-save t - org-roam-ui-open-on-start nil)) -#+end_src -** Org present -#+begin_src emacs-lisp -;; (defun dw/org-present-prepare-slide () -;; (org-overview) -;; (org-show-entry) -;; (org-show-children)) -;; -;; (defun dw/org-present-hook () -;; (setq-local face-remapping-alist '((default (:height 1.5) variable-pitch) -;; (header-line (:height 4.5) variable-pitch) -;; (org-code (:height 1.55) org-code) -;; (org-verbatim (:height 1.55) org-verbatim) -;; (org-bloc (:height 1.25) org-block) -;; (org-block-begin-line (:height 0.7) org-block))) -;; (setq header-line-format " ") -;; (org-display-inline-images) -;; (dw/org-present-prepare-slide)) -;; -;; (defun dw/org-present-quit-hook () -;; (setq-local face-remapping-alist '((default variable-pitch default))) -;; (setq header-line-format nil) -;; (org-present-small) -;; (org-remove-inline-images)) -;; -;; (defun dw/org-present-prev () -;; (interactive) -;; (org-present-prev) -;; (dw/org-present-prepare-slide)) -;; -;; (defun dw/org-present-next () -;; (interactive) -;; (org-present-next) -;; (dw/org-present-prepare-slide)) -;; -;; (use-package org-present -;; :disable -;; :bind (:map org-present-mode-keymap -;; ("C-c C-j" . dw/org-present-next) -;; ("C-c C-k" . dw/org-present-prev)) -;; :hook ((org-present-mode . dw/org-present-hook) -;; (org-present-mode-quit . dw/org-present-quit-hook))) -#+end_src -** Translate in org -#+begin_src emacs-lisp - (use-package ob-translate - :config - (setq ob-translate:default-dest "ko")) -#+end_src - -** Org Noter -#+begin_src emacs-lisp - (use-package pdf-tools - :straight t - :config - (pdf-tools-install) - (setq-default pdf-view-display-size 'fit-width) - (define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward) - :custom - (pdf-annot-activate-created-annotations t "automatically annotate highlights")) - (use-package org-pdfview - :straight t) - (use-package org-noter) -#+end_src - -** Org Publish -#+begin_src emacs-lisp - (setq org-publish-use-timestamps-flag nil) - (setq org-export-with-broken-lilnks t) - (setq org-publish-project-alist - '(("jaeus.net" - :base-directory "~/Roam/www/" - :base-extension "org" - :publishing-directory "~/Projects/html/" - :recursive t - :publishing-function org-html-publish-to-html - :headline-levels 4 - :auto-preamble t))) -#+end_src -* Magit -#+begin_src emacs-lisp - (use-package magit - :commands (magit-status magit-get-current-branch) - :custom - (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) - - ;; NOTE: Make sure to configure a GitHub token before using this package! - ;; - https://magit.vc/manual/forge/Token-Creation.html#Token-Creation - ;; - https://magit.vc/manual/ghub/Getting-Started.html#Getting-Started - (use-package forge - :after magit) - (use-package magit-todos - :defer t) - (use-package git-link) - (ju/leader-key-def - "g" 'magit) - (use-package git-gutter - :straight git-gutter-fringe - ;;:diminish - :hook ((text-mode . git-gutter-mode) - (prog-mode . git-gutter-mode)) - :config - (setq git-gutter:update-interval 2) - (require 'git-gutter-fringe) - (set-face-foreground 'git-gutter-fr:added "LightGreen") - (fringe-helper-define 'git-gutter-fr:added nil - ".XXXXXX." - "XX....XX" - "X......X" - "X......X" - "XXXXXXXX" - "XXXXXXXX" - "X......X" - "X......X") - - (set-face-foreground 'git-gutter-fr:modified "LightGoldenrod") - (fringe-helper-define 'git-gutter-fr:modified nil - "XXXXXXXX" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X" - "X..XX..X") - - (set-face-foreground 'git-gutter-fr:deleted "LightCoral") - (fringe-helper-define 'git-gutter-fr:deleted nil - "XXXXXX.." - "XX....X." - "XX.....X" - "XX.....X" - "XX.....X" - "XX.....X" - "XX....X." - "XXXXXX..") - - ;; These characters are used in terminal mode - (setq git-gutter:modified-sign "≡") - (setq git-gutter:added-sign "≡") - (setq git-gutter:deleted-sign "≡") - (set-face-foreground 'git-gutter:added "LightGreen") - (set-face-foreground 'git-gutter:modified "LightGoldenrod") - (set-face-foreground 'git-gutter:deleted "LightCoral")) -#+end_src -** Org mode latex -[[https://github.com/GeneKao/orgmode-latex-templates][reference]] -#+begin_src emacs-lisp - (with-eval-after-load 'ox-latex - (add-to-list 'org-latex-classes - '("org-plain-latex" - "\\documentclass[a4paper,11pt,titlepage]{memoir} - \\usepackage{kotex} - [NO-DEFAULT-PACKAGES] - [PACKAGES] - [EXTRA] - \\linespread{1.1} - \\hypersetup{pdfborder=0 0 0}" - ("\\chapter{%s}" . "\\chapter*{%s}") - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) - - (add-to-list 'org-latex-classes - '("ethz" - "\\documentclass[a4paper,11pt,titlepage]{memoir} - \\usepackage{kotex} - \\usepackage[utf8]{inputenc} - \\usepackage[T1]{fontenc} - \\usepackage{fixltx2e} - \\usepackage{graphicx} - \\usepackage{longtable} - \\usepackage{float} - \\usepackage{wrapfig} - \\usepackage{rotating} - \\usepackage[normalem]{ulem} - \\usepackage{amsmath} - \\usepackage{textcomp} - \\usepackage{marvosym} - \\usepackage{wasysym} - \\usepackage{amssymb} - \\usepackage{hyperref} - \\usepackage{mathpazo} - \\usepackage{color} - \\usepackage{enumerate} - \\definecolor{bg}{rgb}{0.95,0.95,0.95} - \\tolerance=1000 - [NO-DEFAULT-PACKAGES] - [PACKAGES] - [EXTRA] - \\linespread{1.1} - \\hypersetup{pdfborder=0 0 0}" - ("\\chapter{%s}" . "\\chapter*{%s}") - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) - - - (add-to-list 'org-latex-classes - '("article" - "\\documentclass[11pt,a4paper]{article} - \\usepackage{kotex} - \\usepackage[utf8]{inputenc} - \\usepackage[T1]{fontenc} - \\usepackage{fixltx2e} - \\usepackage{graphicx} - \\usepackage{longtable} - \\usepackage{float} - \\usepackage{wrapfig} - \\usepackage{rotating} - \\usepackage[normalem]{ulem} - \\usepackage{amsmath} - \\usepackage{textcomp} - \\usepackage{marvosym} - \\usepackage{wasysym} - \\usepackage{amssymb} - \\usepackage{hyperref} - \\usepackage{mathpazo} - \\usepackage{color} - \\usepackage{enumerate} - \\definecolor{bg}{rgb}{0.95,0.95,0.95} - \\tolerance=1000 - [NO-DEFAULT-PACKAGES] - [PACKAGES] - [EXTRA] - \\linespread{1.1} - \\hypersetup{pdfborder=0 0 0}" - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}"))) - - - (add-to-list 'org-latex-classes '("ebook" - "\\documentclass[11pt, oneside]{memoir} - \\setstocksize{9in}{6in} - \\settrimmedsize{\\stockheight}{\\stockwidth}{*} - \\setlrmarginsandblock{2cm}{2cm}{*} % Left and right margin - \\setulmarginsandblock{2cm}{2cm}{*} % Upper and lower margin - \\checkandfixthelayout - % Much more laTeX code omitted - " - ("\\chapter{%s}" . "\\chapter*{%s}") - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}")))) - - (add-to-list 'org-latex-packages-alist '("" "minted")) - (setq org-latex-listings 'minted) ;; Use minted to highlight source code - (setq org-latex-minted-options - '(("breaklines" "true") - ("tabsize" "4") - ("autogobble") - ("bgcolor" "monokaibg"))) - (setq org-latex-pdf-process - '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" - "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" - "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")) -#+end_src - -* Org-Gcal -#+begin_src emacs-lisp - (setq package-check-signature nil) - (use-package org-gcal - :ensure t - :config - (setq org-gcal-client-id "928945571655-4h4kclj8etm6qfm27jk4jhgil6jsotbc.apps.googleusercontent.com" - org-gcal-client-secret "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" - org-gcal-file-alist '(("cpu3792@gmail.com" . "~/Roam/gcal.org")))) - ;;(add-hook 'org-agenda-mode-hook (lambda () (org-gcal-sync) )) - (add-hook 'org-capture-after-finalize-hook (lambda () (org-gcal-sync) )) - - - (add-to-list 'org-agenda-files "~/Roam/Agenda/gcal.org") - ;;(add-to-list 'org-agenda-files "~/Roam/Agenda/links.org") - ;;(add-to-list 'org-agenda-files "~/Roam/Agenda/i.org") - - - (setq org-capture-templates - '(("a" "Appointment" entry (file "~/Roam/Agenda/gcal.org" ) - "* %?\n\n%^T\n\n:PROPERTIES:\n\n:END:\n\n") - ("l" "Link" entry (file+headline "~/Roam/Agenda/links.org" "Links") - "* %? %^L %^g \n%T" :prepend t) - ("b" "Blog idea" entry (file+headline "~/Roam/Agenda/i.org" "Blog Topics:") - "* %?\n%T" :prepend t) - ("t" "To Do Item" entry (file+headline "~/Roam/Agenda/i.org" "To Do") - "* TODO %?\n%u" :prepend t) - ("n" "Note" entry (file+headline "~/Roam/Agenda/i.org" "Note space") - "* %?\n%u" :prepend t) - ("j" "Journal" entry (file+datetree "~/Roam/Agenda/journal.org") - "* %?\nEntered on %U\n %i\n %a") - ("s" "Screencast" entry (file "~/Roam/Agenda/screencastnotes.org") - "* %?\n%i\n"))) -#+end_src - -* EDiff -#+begin_src emacs-lisp -;; Don't let ediff break EXWM, keep it in one frame -(setq ediff-diff-options "-w" - ediff-split-window-function 'split-window-horizontally - ediff-window-setup-function 'ediff-setup-windows-plain) -#+end_src -* Rainbow Delimiters -#+begin_src emacs-lisp - (use-package rainbow-delimiters - :hook (prog-mode . rainbow-delimiters-mode)) -#+end_src - - -* Vterm -#+begin_src emacs-lisp - (use-package vterm - :commands vterm - :config - (setq term-prompt-regexp "^[^#$%>\n]*[#$%>] *") ;; Set this to match your custom shell prompt - ;;(setq vterm-shell "zsh") ;; Set this to customize the shell to launch - (setq vterm-max-scrollback 10000)) -#+end_src - - -* Eshell -** EXEC-PATH-FROM-SHELL -#+begin_src emacs-lisp - (use-package exec-path-from-shell) - (exec-path-from-shell-initialize) -#+end_src -** Config -#+begin_src emacs-lisp - (when (eq system-type 'windows-nt) - (setq explicit-shell-file-name "powershell.exe") - (setq explicit-powershell.exe-args '())) - (defun dw/get-prompt-path () - (let* ((current-path (eshell/pwd)) - (git-output (shell-command-to-string "git rev-parse --show-toplevel")) - (has-path (not (string-match "^fatal" git-output)))) - (if (not has-path) - (abbreviate-file-name current-path) - (string-remove-prefix (file-name-directory git-output) current-path)))) - - (defun dw/eshell-prompt () - (let ((current-branch (magit-get-current-branch))) - (concat - "\n" - (propertize (system-name) 'face `(:foreground "#62aeed")) - (propertize " ॐ " 'face `(:foreground "white")) - (propertize (dw/get-prompt-path) 'face `(:foreground "#82cfd3")) - (when current-branch - (concat - (propertize " • " 'face `(:foreground "white")) - (propertize (concat " " current-branch) 'face `(:foreground "#c475f0")))) - (propertize " • " 'face `(:foreground "white")) - (propertize (format-time-string "%I:%M:%S %p") 'face `(:foreground "#5a5b7f")) - (if (= (user-uid) 0) - (propertize "\n#" 'face `(:foreground "red2")) - (propertize "\nλ" 'face `(:foreground "#aece4a"))) - (propertize " " 'face `(:foreground "white"))))) - - (defun efs/configure-eshell () - ;; Save command history when commands are entered - (add-hook 'eshell-pre-command-hook 'eshell-save-some-history) - - ;; Truncate buffer for performance - (add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer) - - ;; Bind some useful keys for evil-mode - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "C-r") 'counsel-esh-history) - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "") 'eshell-bol) - (evil-normalize-keymaps) - - (setq eshell-prompt-function 'dw/eshell-prompt - eshell-prompt-regexp "^λ " - eshell-history-size 10000 - eshell-buffer-maximum-lines 10000 - eshell-hist-ignoredups t - eshell-scroll-to-bottom-on-input t)) - - (use-package eshell-git-prompt - :after eshell) - - (use-package eshell - :hook (eshell-first-time-mode . efs/configure-eshell) - :config - - (with-eval-after-load 'esh-opt - (setq eshell-destroy-buffer-when-process-dies t) - (setq eshell-visual-commands '("htop" "zsh" "vim")))) -#+end_src - - -* Dired (from Doom Emacs) -#+begin_src emacs-lisp - (use-package dired - :ensure nil - :straight nil - :commands (dired dired-jump) - :bind (("C-x C-j" . dired-jump)) - :custom ((dired-listing-switches "-agho --group-directories-first")) - :config - (evil-collection-define-key 'normal 'dired-mode-map - "h" 'dired-single-up-directory - "l" 'dired-single-buffer)) - (autoload 'dired-omit-mode "dired-x") - (add-hook 'dired-load-hook - (lambda () - (interactive) - (dired-collapse))) - ;; to use h,l key - (use-package dired-single - :commands (dired dired-jump)) - (use-package diredfl - :hook (dired-mode . diredfl-mode)) - - ;; from doom emacs - (defun +dired-enable-git-info-h () - "Enable `dired-git-info-mode' in git repos." - (and (not (file-remote-p default-directory)) - (locate-dominating-file "." ".git") - (dired-git-info-mode 1))) - (use-package dired-git-info) - (use-package diff-hl - :hook (dired-mode . diff-hl-dired-mode-unless-remote) - :hook (magit-post-refresh . diff-hl-magit-post-refresh) - :config - ;; use margin instead of fringe - (diff-hl-margin-mode)) - (use-package dired-rsync - :config - (bind-key "C-c C-r" 'dired-rsync dired-mode-map)) - (use-package all-the-icons-dired - :hook (dired-mode . all-the-icons-dired-mode) - :config - ;; HACK Fixes #1929: icons break file renaming in Emacs 27+, because the icon - ;; is considered part of the filename, so we disable icons while we're in - ;; wdired-mode. - ;;(when EMACS27+ - (defvar +wdired-icons-enabled -1)) - - ;;(defadvice! +dired-disable-icons-in-wdired-mode-a (&rest _) - ;; :before #'wdired-change-to-wdired-mode - ;; (setq-local +wdired-icons-enabled (if all-the-icons-dired-mode 1 -1)) - ;; (when all-the-icons-dired-mode - ;; (all-the-icons-dired-mode -1))) - - ;;(defadvice! +dired-restore-icons-after-wdired-mode-a (&rest _) - ;; :after #'wdired-change-to-dired-mode - ;; (all-the-icons-dired-mode +wdired-icons-enabled)))) - ;;(use-package fd-dired) - - (use-package dired-hide-dotfiles - :hook (dired-mode . dired-hide-dotfiles-mode) - :config - (evil-collection-define-key 'normal 'dired-mode-map - "H" 'dired-hide-dotfiles-mode)) - ;;(use-package ranger - ;; :config - ;; (setq ranger-preview-file t) - ;; (setq ranger-show-preview t) - ;; (setq ranger-show-literal nil) - ;; (ranger-override-dired-mode t)) -#+end_src - - -* Openwith -#+begin_src emacs-lisp - (use-package openwith - :after dired - :config - (setq larget-file-warning-threshold nil) - (openwith-mode t) - (setq openwith-associations - (list (list (openwith-make-extension-regexp - '("mpg" "mpeg" "mp3" "mp4" "m4v" - "avi" "wmv" "wav" "mov" "flv" - "ogm" "ogg" "mkv")) - "mpv" - '(file))))) - ;;(list (openwith-make-extension-regexp - ;; '("pdf")) - ;; "evince" - ;; '(file))))) -#+end_src -* VLF (very large file) -#+begin_src emacs-lisp - (use-package vlf - :config (progn - (require 'vlf-setup))) -#+end_src - -* Nov (EPUB file association) -#+begin_src emacs-lisp - (use-package nov) - (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) -#+end_src - - - -* LSP-MODE -#+begin_src emacs-lisp - (use-package lsp-mode - :init - ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") - (setq lsp-keymap-prefix "C-c l") - :hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode) - (c++-mode . lsp) - (verilog-mode . lsp) - ;; if you want which-key integration - (lsp-mode . lsp-enable-which-key-integration)) - :commands lsp) - - ;; optionally - (use-package lsp-ui :commands lsp-ui-mode) - ;; if you are ivy user - (use-package lsp-ivy :commands lsp-ivy-workspace-symbol) - (use-package lsp-treemacs :commands lsp-treemacs-errors-list) - ;; optionally if you want to use debugger - (use-package dap-mode) - ;; (use-package dap-LANGUAGE) to load the dap adapter for your language - -#+end_src - -* ELFEED -#+begin_src emacs-lisp - (use-package elfeed - :config - (setq elfeed-search-feed-face ":foreground #fff :weight bold" - elfeed-feeds (quote - (("https://www.reddit.com/r/linux.rss" reddit linux) - ("https://www.reddit.com/r/emacs.rss" reddit emacs) - ("https://www.gamingonlinux.com/article_rss.php" gaming linux) - ("https://hackaday.com/blog/feed/" hackaday linux) - ("https://opensource.com/feed" opensource linux) - ("https://linux.softpedia.com/backend.xml" softpedia linux) - ("https://itsfoss.com/feed/" itsfoss linux) - ("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux) - ("https://www.phoronix.com/rss.php" phoronix linux) - ("http://feeds.feedburner.com/d0od" omgubuntu linux) - ("https://www.computerworld.com/index.rss" computerworld linux) - ("https://www.networkworld.com/category/linux/index.rss" networkworld linux) - ("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux) - ("https://betanews.com/feed" betanews linux) - ("http://lxer.com/module/newswire/headlines.rss" lxer linux) - ("https://coolenjoy.net/rss?bo_table=38" coolenjoy IT) - ("https://gigglehd.com/gg/ggnews/rss" giggle IT))))) - - (use-package elfeed-goodies - :init - (elfeed-goodies/setup) - :config - (setq elfeed-goodies/entry-pane-size 0.5)) - - (add-hook 'elfeed-show-mode-hook 'visual-line-mode) - (evil-define-key 'normal elfeed-show-mode-map - (kbd "J") 'elfeed-goodies/split-show-next - (kbd "K") 'elfeed-goodies/split-show-prev) - (evil-define-key 'normal elfeed-search-mode-map - (kbd "J") 'elfeed-goodies/split-show-next - (kbd "K") 'elfeed-goodies/split-show-prev) - -#+end_src -* Language Support -** Haskell -#+begin_src emacs-lisp - (use-package haskell-mode) -#+end_src -** Verilog/System verilog -using =svlangserver= -#+begin_src shell - sudo npm install -g @imc-trading/svlangserver - paru -S verilator -#+end_src - -** Rust -#+begin_src emacs-lisp - (use-package rust-mode) -#+end_src -** Markdown -#+begin_src emacs-lisp - (use-package markdown-mode - :disabled - :commands (markdown-mode gfm-mode) - :mode (("README\\.md\\'" . gfm-mode) - ("\\.md\\'" . markdown-mode) - ("\\.markdown\\'" . markdown-mode)) - :init (setq markdown-command "multimarkdown")) -#+end_src - -** CMAKE -#+begin_src emacs-lisp -(use-package cmake-mode) -#+end_src -** YAML -#+begin_src emacs-lisp -(use-package yaml-mode) -#+end_src - -* ETC -** Youtube -#+begin_src emacs-lisp - (use-package ytel - :straight t - :config - (setq ytel-invidious-api-url "https://invidious.snopyta.org") - ) - (defun ytel-watch () - "Stream video at point in mpv." - (interactive) - (let* ((video (ytel-get-current-video)) - (id (ytel-video-id video))) - (start-process "ytel mpv" nil - "mpv" - (concat "https://www.youtube.com/watch?v=" id)) - "--ytdl-format=bestvideo[height<=?720]+bestaudio/best") - (message "Starting streaming...")) -#+end_src -** Python - -- prequisite -#+begin_src shell - paru -S jupyter python-pip - pip install matplotlib numpy pandas tabulate -#+end_src - -- configuration for emacs table -#+begin_src emacs-lisp - (use-package jupyter - :straight t) - (org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) ;; Other languages - (shell . t) - ;; Python & Jupyter - (python . t) - (jupyter . t))) - (org-babel-jupyter-override-src-block "python") -#+end_src diff --git a/.emacs.vanilla/exwm/EXWM.desktop b/.emacs.vanilla/exwm/EXWM.desktop deleted file mode 100644 index 7a5d2c2..0000000 --- a/.emacs.vanilla/exwm/EXWM.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Name=EXWM -Comment=Emacs Window Manager -Exec=sh /home/jaeus/.emacs.d/exwm/start-exwm.sh -TryExec=sh -Type=Application -X-LightDM-DesktopName=exwm -DesktopNames=exwm diff --git a/.emacs.vanilla/exwm/start-exwm.sh b/.emacs.vanilla/exwm/start-exwm.sh deleted file mode 100755 index 60279be..0000000 --- a/.emacs.vanilla/exwm/start-exwm.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# Set the screen DPI (uncomment this if needed!) -# xrdb ~/.emacs.d/exwm/Xresources - -# Run the screen compositor -#picom & -#picom -b --config /home/jaeus/.config/i3/picom.conf & -# Enable screen locking on suspend -#xss-lock -- slock & - -rm ~/.emacs.d/emacs.el -picom -b --config $HOME/.xmonad/scripts/picom.conf & -~/scripts/random_wallpaper.sh -exec dbus-launch --exit-with-session emacs --with-profile vanilla -mm --debug-init -l ~/.emacs.d/desktop.el diff --git a/.emacs.vanilla/init.el b/.emacs.vanilla/init.el deleted file mode 100644 index 55cfbe9..0000000 --- a/.emacs.vanilla/init.el +++ /dev/null @@ -1,9 +0,0 @@ -(setq vc-follow-symlinks t) -(org-babel-load-file - (expand-file-name - "emacs.org" - user-emacs-directory)) -(setq-default indent-tabs-mode t) -(setq tab-width 4) ; or any other preferred value -(defvaralias 'c-basic-offset 'tab-width) -(defvaralias 'cperl-indent-level 'tab-width) diff --git a/.emacs.vanilla/logos/black-hole.png b/.emacs.vanilla/logos/black-hole.png deleted file mode 100755 index 457bc55..0000000 Binary files a/.emacs.vanilla/logos/black-hole.png and /dev/null differ diff --git a/.emacs.vanilla/logos/emacs-e.png b/.emacs.vanilla/logos/emacs-e.png deleted file mode 100644 index 0c5cd63..0000000 Binary files a/.emacs.vanilla/logos/emacs-e.png and /dev/null differ diff --git a/.emacs.vanilla/snippets/text-mode/__license b/.emacs.vanilla/snippets/text-mode/__license deleted file mode 100644 index b22a289..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license +++ /dev/null @@ -1,5 +0,0 @@ -# -*- mode: snippet -*- -# name: Insert a license -# type: command -# -- -(+file-templates/insert-license) \ No newline at end of file diff --git a/.emacs.vanilla/snippets/text-mode/__license-apache b/.emacs.vanilla/snippets/text-mode/__license-apache deleted file mode 100644 index a50a612..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-apache +++ /dev/null @@ -1,207 +0,0 @@ -# -*- mode: snippet -*- -# name: Apache License 2.0 -# uuid: __license-apache -# group: Licenses -# contributor: https://choosealicense.com/licenses/apache-2.0/ -# -- - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright `(format-time-string "%Y")` ${1:`user-full-name`} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/.emacs.vanilla/snippets/text-mode/__license-apache-bp b/.emacs.vanilla/snippets/text-mode/__license-apache-bp deleted file mode 100644 index 95d9d8b..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-apache-bp +++ /dev/null @@ -1,19 +0,0 @@ -# -*- mode: snippet -*- -# name: Apache License 2.0 (boilerplate) -# uuid: __license-apache-bp -# group: Licenses -# contributor: https://choosealicense.com/licenses/apache-2.0/ -# -- -Copyright ${1:`(format-time-string "%Y")` `user-full-name`} - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. \ No newline at end of file diff --git a/.emacs.vanilla/snippets/text-mode/__license-bsd2 b/.emacs.vanilla/snippets/text-mode/__license-bsd2 deleted file mode 100644 index bbff2e3..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-bsd2 +++ /dev/null @@ -1,28 +0,0 @@ -# -*- mode: snippet -*- -# name: 2-clause BSD License -# uuid: __license-bsd2 -# group: Licenses -# -- -Copyright (c) ${1:`(format-time-string "%Y")`} ${2:`user-full-name`} -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.emacs.vanilla/snippets/text-mode/__license-bsd3 b/.emacs.vanilla/snippets/text-mode/__license-bsd3 deleted file mode 100644 index dc3d0e8..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-bsd3 +++ /dev/null @@ -1,31 +0,0 @@ -# -*- mode: snippet -*- -# name: 3-clause BSD License -# uuid: __license-bsd3 -# -- -Copyright (c) ${1:`(format-time-string "%Y")`} ${2:`user-full-name`} -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors -may be used to endorse or promote products derived from this software without -specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.emacs.vanilla/snippets/text-mode/__license-gpl3 b/.emacs.vanilla/snippets/text-mode/__license-gpl3 deleted file mode 100644 index 9395833..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-gpl3 +++ /dev/null @@ -1,680 +0,0 @@ -# -*- mode: snippet -*- -# name: GNU GPL 3.0 License -# uuid: __license-gpl3 -# group: Licenses -# contributor: https://choosealicense.com/licenses/gpl-3.0/ -# -- - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - ${4:} - Copyright (C) ${1:`(format-time-string "%Y")`} ${2:`user-full-name`} - - 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 . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - ${3:} Copyright (C) ${1:`(format-time-string "%Y")`} ${2:`user-full-name`} - This program comes with ABSOLUTELY NO WARRANTY; for details type \`show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type \`show c' for details. - -The hypothetical commands \`show w' and \`show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/.emacs.vanilla/snippets/text-mode/__license-gpl3-bp b/.emacs.vanilla/snippets/text-mode/__license-gpl3-bp deleted file mode 100644 index 4e8ff3c..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-gpl3-bp +++ /dev/null @@ -1,21 +0,0 @@ -# -*- mode: snippet -*- -# name: GNU GPL 3.0 License (boilerplate) -# uuid: __license-gpl3-bp -# group: Licenses -# contributor: https://choosealicense.com/licenses/lgpl-3.0 -# -- -${1:} -Copyright (C) ${2:`(format-time-string "%Y")`} ${3:`user-full-name`} - -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 . \ No newline at end of file diff --git a/.emacs.vanilla/snippets/text-mode/__license-lgpl3 b/.emacs.vanilla/snippets/text-mode/__license-lgpl3 deleted file mode 100644 index 8aefb50..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-lgpl3 +++ /dev/null @@ -1,171 +0,0 @@ -# -*- mode: snippet -*- -# name: GNU LGPL v3 License -# uuid: __license-lgpl3 -# group: Licenses -# contribuer: https://choosealicense.com/licenses/lgpl-3.0/ -# -- - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/.emacs.vanilla/snippets/text-mode/__license-mit b/.emacs.vanilla/snippets/text-mode/__license-mit deleted file mode 100644 index dd041f8..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-mit +++ /dev/null @@ -1,28 +0,0 @@ -# -*- mode: snippet -*- -# name: MIT License -# uuid: __license-mit -# group: Licenses -# contributor: https://choosealicense.com/licenses/mit/ -# -- -The MIT License (MIT) - -Copyright (c) ${1:`(format-time-string "%Y")`} ${2:`user-full-name`} - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/.emacs.vanilla/snippets/text-mode/__license-mozilla b/.emacs.vanilla/snippets/text-mode/__license-mozilla deleted file mode 100644 index bba13b7..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-mozilla +++ /dev/null @@ -1,380 +0,0 @@ -# -*- mode: snippet -*- -# name: Mozilla Public License 2.0 -# uuid: __license-mozilla -# group: Licenses -# contributor: https://choosealicense.com/licenses/mpl-2.0 -# -- -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. - diff --git a/.emacs.vanilla/snippets/text-mode/__license-mozilla-bp b/.emacs.vanilla/snippets/text-mode/__license-mozilla-bp deleted file mode 100644 index 7a7fc42..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-mozilla-bp +++ /dev/null @@ -1,9 +0,0 @@ -# -*- mode: snippet -*- -# name: Mozilla Public License 2.0 (boilerplate) -# uuid: __license-mozilla-bp -# group: Licenses -# contributor: https://choosealicense.com/licenses/mpl-2.0 -# -- -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this -file, You can obtain one at http://mozilla.org/MPL/2.0/. \ No newline at end of file diff --git a/.emacs.vanilla/snippets/text-mode/__license-unlicense b/.emacs.vanilla/snippets/text-mode/__license-unlicense deleted file mode 100644 index 6eb9927..0000000 --- a/.emacs.vanilla/snippets/text-mode/__license-unlicense +++ /dev/null @@ -1,30 +0,0 @@ -# -*- mode: snippet -*- -# name: The Unlicense -# uuid: __license-unlicense -# group: Licenses -# contributor: https://choosealicense.com/licenses/unlicense -# -- -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to diff --git a/.julia/startup.jl b/.julia/startup.jl deleted file mode 100644 index 534fd70..0000000 --- a/.julia/startup.jl +++ /dev/null @@ -1,3 +0,0 @@ -#using Plots -#using PlotThemes -#theme(:juno)