;;; init.el -*- lexical-binding: t; -*-;; DO NOT EDIT THIS FILE DIRECTLY;; This is a file generated from a literate programing source file.;; 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).
;; -*- no-byte-compile: t; -*-;;; $DOOMDIR/packages.el;; DO NOT EDIT THIS FILE DIRECTLY;; This is a file generated from a literate programing source file.;;;; You should make any changes there and regenerate it from Emacs org-mode;; using org-babel-tangle (C-c C-v t);; 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)
;;; config.el -*- lexical-binding: t; -*-;; DO NOT EDIT THIS FILE DIRECTLY;; This is a file generated from a literate programing source file.;; You should make any changes there and regenerate it from Emacs org-mode;; using org-babel-tangle (C-c C-v 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.;; (setq user-full-name "";; user-mail-address "");; 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));; 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-one);; 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/");; 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);; 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.
Note: do not use M-x customize or the customize API in general. Doom is designed to be configured programmatically from your config.el, which can conflict with Customize’s way of modifying variables.
If you’re concerned about defcustom setters, Doom has a setq! macro that will trigger them.
(doom!:input;;chinese;;japanese;;layout ; auie,ctsrnm is the superior home row:completioncompany; the ultimate code completion backend;;helm ; the *other* search engine for love and life;;ido ; the other *other* search engine...ivy; a search engine for love and life:uideft; notational velocity for Emacsdoom; what makes DOOM look the way it doesdoom-dashboard; a nifty splash screen for Emacsdoom-quit; DOOM quit-message prompts when you quit Emacs;;(emoji +unicode) ; 🙂;;fill-column ; a `fill-column' indicatorhl-todo; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW;;hydra;;indent-guides ; highlighted indent columnsligatures; ligatures and symbols to make your code pretty again;;minimap ; show a map of the code on the sidemodeline; snazzy, Atom-inspired modeline, plus API;;nav-flash ; blink cursor line after big motions;;neotree ; a project drawer, like NERDTree for vimophints; highlight the region an operation acts on(popup+defaults); tame sudden yet inevitable temporary windows;;tabs ; a tab bar for Emacstreemacs; a project drawer, like neotree but cooler;;unicode ; extended unicode support for various languagesvc-gutter; vcs diff in the fringevi-tilde-fringe; fringe tildes to mark beyond EOB;;window-select ; visually switch windowsworkspaces; tab emulation, persistence & separate workspaceszen; distraction-free coding or writing:editor(evil+everywhere); come to the dark side, we have cookiesfile-templates; auto-snippets for empty filesfold; (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 candidatessnippets; my elves. They type so I don't have toword-wrap; soft wrapping with language-aware indent:emacsdired; making dired pretty [functional]electric; smarter, keyword-based electric-indent;;ibuffer ; interactive buffer managementundo; persistent, smarter undo for your inevitable mistakesvc; 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 Emacsvterm; the best terminal emulation in Emacs:checkerssyntax; tasing you for every semicolon you forget;;spell ; 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;;dockereditorconfig; 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 gistslookup; navigate your code and its documentation;;lspmagit; a git porcelain for Emacs;;make ; run make tasks from Emacs;;pass ; password manager for nerdspdf; 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(:ifIS-MACmacos); improve compatibility with macOS;;tty ; improve the terminal Emacs experience:lang;;agda ; types of types of types of types...;;cc ; C/C++/Obj-C madness;;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;;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;;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 onjson; At least it ain't XML;;(java +meghanada) ; the poster child for carpal tunnel syndromejavascript; 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;;lean;;factor;;ledger ; an accounting system in Emacs;;lua ; one-based indices? one-based indicesmarkdown; 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+pretty+dragndrop; drag & drop files/images into org buffers;;+journal ; maintain a simple personal diary / journal using in Emacs.+roam2;; org-roam v2+noter+hugo; Enables integration with hugo to export from Emacs well-formed (blackfriday) markdown.+present; using org-mode for presentations);;php ; perl's insecure younger brotherplantuml; 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; Fe2O3.unwrap().unwrap().unwrap().unwrap();;scala ; java, but good;;scheme ; a fully conniving family of lispssh; 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 tubesyaml; JSON, but readable:email;;(mu4e +gmail);;notmuch;;(wanderlust +gmail):appcalendar;;irc ; how neckbeards socialize;;(rss +org) ; emacs as an RSS reader;;twitter ; twitter client https://twitter.com/vnought:configliterate(default+bindings))
(use-packageorg-ref:afterorg:init:config(setq; Let ivy makes completion.org-ref-completion-library'org-ref-ivy-cite; Use Helm to get pdf filename.org-ref-get-pdf-filename-function'org-ref-get-pdf-filename-helm-bibtex; Use the bibtext file exported from Zotero.org-ref-default-bibliography(list(expand-file-name"library.bib"zotero-directory))org-ref-bibliography-notes(expand-file-name"bibnotes.org"org-roam-directory); Use org-roam files as my reading notes.org-ref-notes-directoryorg-roam-directoryorg-ref-notes-function'orb-edit-notes; Add templates for my reading notes.org-ref-note-title-format(concat"* TODO %y - %t\n"":PROPERTIES:\n"":Custom_ID: %k\n"":NOTER_DOCUMENT: %F\n"":ROAM_KEY: cite:%k\n"":AUTHOR: %9a\n"":JOURNAL: %j\n"":YEAR: %y\n"":VOLUME: %v\n"":PAGES: %p\n"":DOI: %D\n"":URL: %U\n"":END:\n\n")))
(package!org-roam-bibtex:recipe(:hostgithub:repo"org-roam/org-roam-bibtex"));; When using org-roam via the `+roam` flag(unpin!org-roam);; When using bibtex-completion via the `biblio` module(unpin!bibtex-completionhelm-bibtexivy-bibtex)
(use-package!org-agenda:defer:init;; Org Agenda Files(setqorg-agenda-files(listorg-todo-fileorg-project-fileorg-post-fileorg-habit-fileorg-roam-directory));; Shorter todo list(setqorg-agenda-skip-scheduled-if-donetorg-agenda-skip-deadline-if-donetorg-agenda-todo-ignore-scheduled'futureorg-agenda-todo-ignore-deadlines'futureorg-agenda-todo-ignore-timestamp'futureorg-agenda-dim-blocked-taskstorg-agenda-todo-list-sublevelst);; Prettify time grid(setqorg-agenda-time-grid(quote((dailytodayremove-match)(70080090010001100120013001400150016001700180019002000210022002300)"......""----------------"))))
;; org-super-agenda;; https://www.reddit.com/r/orgmode/comments/erdb40/doomemacs_can_not_make_orgsuperagenda_work/(use-package!org-super-agenda:afterorg-agenda:init;; for some reason org-agenda evil bindings were being weird with j and k(map!:maporg-agenda-keymap"j"#'org-agenda-next-line)(map!:maporg-agenda-mode-map"j"#'org-agenda-next-line)(map!:maporg-super-agenda-header-map"j"#'org-agenda-next-line)(map!:maporg-agenda-keymap"k"#'org-agenda-previous-line)(map!:maporg-agenda-mode-map"k"#'org-agenda-previous-line)(map!:maporg-super-agenda-header-map"k"#'org-agenda-previous-line)(setqorg-agenda-custom-commands'(("r""Main View"((agenda""((org-agenda-span'day)(org-agenda-start-day"+0d")(org-agenda-overriding-header"")(org-super-agenda-groups'((:discard(:todo("PROJ""WAIT""STRT")))(:name"Schedule":time-gridt:datetoday:order1:scheduledtoday:todo"TODAY")(:name"Reminder":order2:anything)))))(alltodo""((org-agenda-overriding-header"")(org-super-agenda-groups'((:logt)(:discard(:category"習慣"))(:discard(:todo"SOMEDAY"))(:discard(:todo"IDEA"))(:discard(:todo"PROJ"))(:name"Next to do":and(:todo"TODO":priority>="A"):order3)(:name"Due Today":deadlinetoday:order4)(:name"Due Soon":deadlinefuture:order8)(:name"Started":todo"STRT")(:name"Overdue":deadlinepast:order20)(:name"Waitting":todo"WAIT":order98)(:discard(:todo"TODO")))))))))):config(org-super-agenda-mode))
行事曆
calfw
行事曆上私人行程以及台灣國定假日。預設不使用 Emacs 提供的國定假日。
1
2
3
4
5
(use-package!calfw:defer:init(setqcfw:display-calendar-holidaysnil); don't show holidays.)
(use-package!calfw-org:aftercalfw:init;; To speed up the loading, restricts items containing a scheduled TODOs that the date range matching the selected date.(setqcfw:org-agenda-schedule-args'(:scheduled:deadline));)
;; Populates only the EXPORT_FILE_NAME property in the inserted headline.(after!org-capture(defunorg-hugo-new-subtree-post-capture-template()"Returns `org-capture' template string for new Hugo post.
See `org-capture-templates' for more information."(let*((title(read-from-minibuffer"Post Title: "));Prompt to enter the post title(fname(org-hugo-slugtitle)))(mapconcat#'identity`(,(concat"* TODO "title)":PROPERTIES:",(concat":EXPORT_FILE_NAME: "fname)":END:""%?\n");Place the cursor here finally"\n")))(add-to-list'org-capture-templates'("h";`org-capture' binding + h"Hugo post"entry;; It is assumed that below file is present in `org-directory';; and that it has a "Blog Ideas" heading. It can even be a;; symlink pointing to the actual location of all-posts.org!(fileorg-post-file)(functionorg-hugo-new-subtree-post-capture-template))))
easy-hugo
1
(package!easy-hugo)
1
2
3
4
5
6
7
(use-package!easy-hugo:init(setqeasy-hugo-basediruser-blog-basedireasy-hugo-urluser-blog-url):config;; make easy-hugo mode keybinds work(evil-make-overriding-mapeasy-hugo-mode-map'normal))
Plantuml
在 Emacs 執行下列命令下載安裝 plantuml。
plantuml-download-jar
Latex
1
2
3
4
5
6
7
8
9
10
11
12
(after!org(setqorg-preview-latex-default-process'imagemagick;; latex pdf process.org-latex-pdf-process'("latexmk -pdflatex='xelatex -interaction nonstopmode' -pdf -bibtex -f %f");; use user-defined labels.org-latex-prefer-user-labelst;; display tables in formal booktabs style.org-latex-tables-booktabst;; 上下標必須加 { }.org-use-sub-superscripts"{}"))
快捷鍵配置
按鍵組
功用
來源
SPC :
打開命令列
doom
SPC X
執行 org-catpure
doom
SPC Tab Tab
顯示 tabbar
doom
SPC Tab n
建立 workspace
doom
SPC Tab d
刪除 workspace
doom
SPC Tab $n
切換到第 $n 個 workspace
doom
SPC w s
水平切割視窗
doom
SPC w v
垂直切割視窗
doom
SPC w m
最大化當前視窗
doom
SPC o a r
打開 org-agenda Main Repor
custom
SPC o p
打開專案 Sidebar
doom
SPC o P
在專案 Sidebar 找檔案
doom
SPC o v
開啟 Terminal
doom
SPC o h
開啟 Easy Hugo
custom
SPC p a
新增專案
doom
SPC p d
移除專案
doom
SPC p p
切換專案
doom
SPC n r f
開起 Roam 筆記
doom
SPC n r i
插入 Roam 筆記
doom
SPC n r I
插入 Roam 筆記 (w/ org-capture)
doom
SPC m e H H
輸出文件或單個 Subtree 到 hugo
doom
SPC m e H A
輸出文件或全部的 Subtree 到 hugo
doom
SPC t e
Toogle hidding/showing of org emphasise markers
custom
SPC h r r
重新讀取 doom emacs 設定檔
1
2
3
4
5
6
(map!:leader:desc"Easy Hugo""o h"#'easy-hugo)(map!:leader:desc"Toogle hidding/showing of org emphasize markers.""t e"#'org-toggle-emphasis)