├── .gitignore ├── Emacs.lnk ├── home └── .spacemacs ├── new-note-clip.bat ├── new-note-snip-handler.bat ├── new-note.bat ├── note.ico ├── org-context.reg ├── org-display-inbox.bat ├── org-display-org-dir.bat ├── org-mode-tray.ahk ├── org-protocol-handler.bat ├── org-protocol.reg ├── org-setup.png └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | home/* 2 | org/* 3 | 4 | !home/.spacemacs 5 | -------------------------------------------------------------------------------- /Emacs.lnk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/math0ne/windows-emacs-org/5c8864cbf796d265877c6b57986f770f1d1b1339/Emacs.lnk -------------------------------------------------------------------------------- /home/.spacemacs: -------------------------------------------------------------------------------- 1 | ;; -*- mode: emacs-lisp -*- 2 | ;; This file is loaded by Spacemacs at startup. 3 | ;; It must be stored in your home directory. 4 | 5 | (defun dotspacemacs/layers () 6 | "Configuration Layers declaration. 7 | You should not put any user code in this function besides modifying the variable 8 | values." 9 | (setq-default 10 | ;; Base distribution to use. This is a layer contained in the directory 11 | ;; `+distribution'. For now available distributions are `spacemacs-base' 12 | ;; or `spacemacs'. (default 'spacemacs) 13 | dotspacemacs-distribution 'spacemacs 14 | ;; Lazy installation of layers (i.e. layers are installed only when a file 15 | ;; with a supported type is opened). Possible values are `all', `unused' 16 | ;; and `nil'. `unused' will lazy install only unused layers (i.e. layers 17 | ;; not listed in variable `dotspacemacs-configuration-layers'), `all' will 18 | ;; lazy install any layer that support lazy installation even the layers 19 | ;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy 20 | ;; installation feature and you have to explicitly list a layer in the 21 | ;; variable `dotspacemacs-configuration-layers' to install it. 22 | ;; (default 'unused) 23 | dotspacemacs-enable-lazy-installation 'unused 24 | ;; If non-nil then Spacemacs will ask for confirmation before installing 25 | ;; a layer lazily. (default t) 26 | dotspacemacs-ask-for-lazy-installation t 27 | ;; If non-nil layers with lazy install support are lazy installed. 28 | ;; List of additional paths where to look for configuration layers. 29 | ;; Paths must have a trailing slash (i.e. `~/.mycontribs/') 30 | dotspacemacs-configuration-layer-path '() 31 | ;; List of configuration layers to load. 32 | dotspacemacs-configuration-layers 33 | '( 34 | ;; ---------------------------------------------------------------- 35 | ;; Example of useful layers you may want to use right away. 36 | ;; Uncomment some layer names and press (Vim style) or 37 | ;; (Emacs style) to install them. 38 | ;; ---------------------------------------------------------------- 39 | auto-completion 40 | helm 41 | ;; better-defaults 42 | emacs-lisp 43 | ;; git 44 | markdown 45 | windows-defaults 46 | org 47 | ;; (shell :variables 48 | ;; shell-default-height 30 49 | ;; shell-default-position 'bottom) 50 | ;; spell-checking 51 | ;; syntax-checking 52 | ;; version-control 53 | ) 54 | ;; List of additional packages that will be installed without being 55 | ;; wrapped in a layer. If you need some configuration for these 56 | ;; packages, then consider creating a layer. You can also put the 57 | ;; configuration in `dotspacemacs/user-config'. 58 | dotspacemacs-additional-packages '(base16-theme) 59 | ;; A list of packages that cannot be updated. 60 | dotspacemacs-frozen-packages '() 61 | ;; A list of packages that will not be installed and loaded. 62 | dotspacemacs-excluded-packages '(vi-tilde-fringe org-projectile) 63 | ;; Defines the behaviour of Spacemacs when installing packages. 64 | ;; Possible values are `used-only', `used-but-keep-unused' and `all'. 65 | ;; `used-only' installs only explicitly used packages and uninstall any 66 | ;; unused packages as well as their unused dependencies. 67 | ;; `used-but-keep-unused' installs only the used packages but won't uninstall 68 | ;; them if they become unused. `all' installs *all* packages supported by 69 | ;; Spacemacs and never uninstall them. (default is `used-only') 70 | dotspacemacs-install-packages 'used-only)) 71 | 72 | (defun dotspacemacs/init () 73 | "Initialization function. 74 | This function is called at the very startup of Spacemacs initialization 75 | before layers configuration. 76 | You should not put any user code in there besides modifying the variable 77 | values." 78 | ;; This setq-default sexp is an exhaustive list of all the supported 79 | ;; spacemacs settings. 80 | (setq-default 81 | ;; If non nil ELPA repositories are contacted via HTTPS whenever it's 82 | ;; possible. Set it to nil if you have no way to use HTTPS in your 83 | ;; environment, otherwise it is strongly recommended to let it set to t. 84 | ;; This variable has no effect if Emacs is launched with the parameter 85 | ;; `--insecure' which forces the value of this variable to nil. 86 | ;; (default t) 87 | dotspacemacs-elpa-https t 88 | ;; Maximum allowed time in seconds to contact an ELPA repository. 89 | dotspacemacs-elpa-timeout 5 90 | ;; If non nil then spacemacs will check for updates at startup 91 | ;; when the current branch is not `develop'. Note that checking for 92 | ;; new versions works via git commands, thus it calls GitHub services 93 | ;; whenever you start Emacs. (default nil) 94 | dotspacemacs-check-for-update nil 95 | ;; If non-nil, a form that evaluates to a package directory. For example, to 96 | ;; use different package directories for different Emacs versions, set this 97 | ;; to `emacs-version'. 98 | dotspacemacs-elpa-subdirectory nil 99 | ;; One of `vim', `emacs' or `hybrid'. 100 | ;; `hybrid' is like `vim' except that `insert state' is replaced by the 101 | ;; `hybrid state' with `emacs' key bindings. The value can also be a list 102 | ;; with `:variables' keyword (similar to layers). Check the editing styles 103 | ;; section of the documentation for details on available variables. 104 | ;; (default 'vim) 105 | dotspacemacs-editing-style 'hybrid 106 | ;; If non nil output loading progress in `*Messages*' buffer. (default nil) 107 | dotspacemacs-verbose-loading nil 108 | ;; Specify the startup banner. Default value is `official', it displays 109 | ;; the official spacemacs logo. An integer value is the index of text 110 | ;; banner, `random' chooses a random text banner in `core/banners' 111 | ;; directory. A string value must be a path to an image format supported 112 | ;; by your Emacs build. 113 | ;; If the value is nil then no banner is displayed. (default 'official) 114 | dotspacemacs-startup-banner nil 115 | ;; List of items to show in startup buffer or an association list of 116 | ;; the form `(list-type . list-size)`. If nil then it is disabled. 117 | ;; Possible values for list-type are: 118 | ;; `recents' `bookmarks' `projects' `agenda' `todos'." 119 | ;; List sizes may be nil, in which case 120 | ;; `spacemacs-buffer-startup-lists-length' takes effect. 121 | dotspacemacs-startup-lists '((recents . 5) 122 | (projects . 7) 123 | (todos . 5) 124 | (bookmarks . 5)) 125 | ;; True if the home buffer should respond to resize events. 126 | dotspacemacs-startup-buffer-responsive t 127 | ;; Default major mode of the scratch buffer (default `text-mode') 128 | dotspacemacs-scratch-mode 'text-mode 129 | ;; List of themes, the first of the list is loaded when spacemacs starts. 130 | ;; Press T n to cycle to the next theme in the list (works great 131 | ;; with 2 themes variants, one dark and one light) 132 | dotspacemacs-themes '(base16-ocean 133 | spacemacs-dark 134 | spacemacs-light) 135 | ;; If non nil the cursor color matches the state color in GUI Emacs. 136 | dotspacemacs-colorize-cursor-according-to-state t 137 | ;; Default font, or prioritized list of fonts. `powerline-scale' allows to 138 | ;; quickly tweak the mode-line size to make separators look not too crappy. 139 | dotspacemacs-default-font '("SauceCodePro Nerd Font" 140 | :size 13 141 | :weight semibold 142 | :width normal 143 | :powerline-scale 1.1) 144 | 145 | 146 | ;; The leader key 147 | dotspacemacs-leader-key "SPC" 148 | ;; The key used for Emacs commands (M-x) (after pressing on the leader key). 149 | ;; (default "SPC") 150 | dotspacemacs-emacs-command-key "SPC" 151 | ;; The key used for Vim Ex commands (default ":") 152 | dotspacemacs-ex-command-key ":" 153 | ;; The leader key accessible in `emacs state' and `insert state' 154 | ;; (default "M-m") 155 | dotspacemacs-emacs-leader-key "M-m" 156 | ;; Major mode leader key is a shortcut key which is the equivalent of 157 | ;; pressing ` m`. Set it to `nil` to disable it. (default ",") 158 | dotspacemacs-major-mode-leader-key "," 159 | ;; Major mode leader key accessible in `emacs state' and `insert state'. 160 | ;; (default "C-M-m") 161 | dotspacemacs-major-mode-emacs-leader-key "C-M-m" 162 | ;; These variables control whether separate commands are bound in the GUI to 163 | ;; the key pairs C-i, TAB and C-m, RET. 164 | ;; Setting it to a non-nil value, allows for separate commands under 165 | ;; and TAB or and RET. 166 | ;; In the terminal, these pairs are generally indistinguishable, so this only 167 | ;; works in the GUI. (default nil) 168 | dotspacemacs-distinguish-gui-tab nil 169 | ;; If non nil `Y' is remapped to `y$' in Evil states. (default nil) 170 | dotspacemacs-remap-Y-to-y$ nil 171 | ;; If non-nil, the shift mappings `<' and `>' retain visual state if used 172 | ;; there. (default t) 173 | dotspacemacs-retain-visual-state-on-shift t 174 | ;; If non-nil, J and K move lines up and down when in visual mode. 175 | ;; (default nil) 176 | dotspacemacs-visual-line-move-text nil 177 | ;; If non nil, inverse the meaning of `g' in `:substitute' Evil ex-command. 178 | ;; (default nil) 179 | dotspacemacs-ex-substitute-global nil 180 | ;; Name of the default layout (default "Default") 181 | dotspacemacs-default-layout-name "Default" 182 | ;; If non nil the default layout name is displayed in the mode-line. 183 | ;; (default nil) 184 | dotspacemacs-display-default-layout nil 185 | ;; If non nil then the last auto saved layouts are resume automatically upon 186 | ;; start. (default nil) 187 | dotspacemacs-auto-resume-layouts nil 188 | ;; Size (in MB) above which spacemacs will prompt to open the large file 189 | ;; literally to avoid performance issues. Opening a file literally means that 190 | ;; no major mode or minor modes are active. (default is 1) 191 | dotspacemacs-large-file-size 1 192 | ;; Location where to auto-save files. Possible values are `original' to 193 | ;; auto-save the file in-place, `cache' to auto-save the file to another 194 | ;; file stored in the cache directory and `nil' to disable auto-saving. 195 | ;; (default 'cache) 196 | dotspacemacs-auto-save-file-location 'cache 197 | ;; Maximum number of rollback slots to keep in the cache. (default 5) 198 | dotspacemacs-max-rollback-slots 5 199 | ;; If non nil, `helm' will try to minimize the space it uses. (default nil) 200 | dotspacemacs-helm-resize nil 201 | ;; if non nil, the helm header is hidden when there is only one source. 202 | ;; (default nil) 203 | dotspacemacs-helm-no-header nil 204 | ;; define the position to display `helm', options are `bottom', `top', 205 | ;; `left', or `right'. (default 'bottom) 206 | dotspacemacs-helm-position 'bottom 207 | ;; Controls fuzzy matching in helm. If set to `always', force fuzzy matching 208 | ;; in all non-asynchronous sources. If set to `source', preserve individual 209 | ;; source settings. Else, disable fuzzy matching in all sources. 210 | ;; (default 'always) 211 | dotspacemacs-helm-use-fuzzy 'always 212 | ;; If non nil the paste micro-state is enabled. When enabled pressing `p` 213 | ;; several times cycle between the kill ring content. (default nil) 214 | dotspacemacs-enable-paste-transient-state nil 215 | ;; Which-key delay in seconds. The which-key buffer is the popup listing 216 | ;; the commands bound to the current keystroke sequence. (default 0.4) 217 | dotspacemacs-which-key-delay 0.4 218 | ;; Which-key frame position. Possible values are `right', `bottom' and 219 | ;; `right-then-bottom'. right-then-bottom tries to display the frame to the 220 | ;; right; if there is insufficient space it displays it at the bottom. 221 | ;; (default 'bottom) 222 | dotspacemacs-which-key-position 'bottom 223 | ;; If non nil a progress bar is displayed when spacemacs is loading. This 224 | ;; may increase the boot time on some systems and emacs builds, set it to 225 | ;; nil to boost the loading time. (default t) 226 | dotspacemacs-loading-progress-bar t 227 | ;; If non nil the frame is fullscreen when Emacs starts up. (default nil) 228 | ;; (Emacs 24.4+ only) 229 | dotspacemacs-fullscreen-at-startup nil 230 | ;; If non nil `spacemacs/toggle-fullscreen' will not use native fullscreen. 231 | ;; Use to disable fullscreen animations in OSX. (default nil) 232 | dotspacemacs-fullscreen-use-non-native nil 233 | ;; If non nil the frame is maximized when Emacs starts up. 234 | ;; Takes effect only if `dotspacemacs-fullscreen-at-startup' is nil. 235 | ;; (default nil) (Emacs 24.4+ only) 236 | dotspacemacs-maximized-at-startup nil 237 | ;; A value from the range (0..100), in increasing opacity, which describes 238 | ;; the transparency level of a frame when it's active or selected. 239 | ;; Transparency can be toggled through `toggle-transparency'. (default 90) 240 | dotspacemacs-active-transparency 90 241 | ;; A value from the range (0..100), in increasing opacity, which describes 242 | ;; the transparency level of a frame when it's inactive or deselected. 243 | ;; Transparency can be toggled through `toggle-transparency'. (default 90) 244 | dotspacemacs-inactive-transparency 90 245 | ;; If non nil show the titles of transient states. (default t) 246 | dotspacemacs-show-transient-state-title t 247 | ;; If non nil show the color guide hint for transient state keys. (default t) 248 | dotspacemacs-show-transient-state-color-guide t 249 | ;; If non nil unicode symbols are displayed in the mode line. (default t) 250 | dotspacemacs-mode-line-unicode-symbols t 251 | ;; If non nil smooth scrolling (native-scrolling) is enabled. Smooth 252 | ;; scrolling overrides the default behavior of Emacs which recenters point 253 | ;; when it reaches the top or bottom of the screen. (default t) 254 | dotspacemacs-smooth-scrolling t 255 | ;; Control line numbers activation. 256 | ;; If set to `t' or `relative' line numbers are turned on in all `prog-mode' and 257 | ;; `text-mode' derivatives. If set to `relative', line numbers are relative. 258 | ;; This variable can also be set to a property list for finer control: 259 | ;; '(:relative nil 260 | ;; :disabled-for-modes dired-mode 261 | ;; doc-view-mode 262 | ;; markdown-mode 263 | ;; org-mode 264 | ;; pdf-view-mode 265 | ;; text-mode 266 | ;; :size-limit-kb 1000) 267 | ;; (default nil) 268 | dotspacemacs-line-numbers t 269 | ;; Code folding method. Possible values are `evil' and `origami'. 270 | ;; (default 'evil) 271 | dotspacemacs-folding-method 'evil 272 | ;; If non-nil smartparens-strict-mode will be enabled in programming modes. 273 | ;; (default nil) 274 | dotspacemacs-smartparens-strict-mode nil 275 | ;; If non-nil pressing the closing parenthesis `)' key in insert mode passes 276 | ;; over any automatically added closing parenthesis, bracket, quote, etc… 277 | ;; This can be temporary disabled by pressing `C-q' before `)'. (default nil) 278 | dotspacemacs-smart-closing-parenthesis nil 279 | ;; Select a scope to highlight delimiters. Possible values are `any', 280 | ;; `current', `all' or `nil'. Default is `all' (highlight any scope and 281 | ;; emphasis the current one). (default 'all) 282 | dotspacemacs-highlight-delimiters 'all 283 | ;; If non nil, advise quit functions to keep server open when quitting. 284 | ;; (default nil) 285 | dotspacemacs-persistent-server t 286 | ;; List of search tool executable names. Spacemacs uses the first installed 287 | ;; tool of the list. Supported tools are `ag', `pt', `ack' and `grep'. 288 | ;; (default '("ag" "pt" "ack" "grep")) 289 | dotspacemacs-search-tools '("ag" "pt" "ack" "grep") 290 | ;; The default package repository used if no explicit repository has been 291 | ;; specified with an installed package. 292 | ;; Not used for now. (default nil) 293 | dotspacemacs-default-package-repository nil 294 | ;; Delete whitespace while saving buffer. Possible values are `all' 295 | ;; to aggressively delete empty line and long sequences of whitespace, 296 | ;; `trailing' to delete only the whitespace at end of lines, `changed'to 297 | ;; delete only whitespace for changed lines or `nil' to disable cleanup. 298 | ;; (default nil) 299 | dotspacemacs-whitespace-cleanup nil 300 | )) 301 | 302 | (defun dotspacemacs/user-init () 303 | "Initialization function for user code. 304 | It is called immediately after `dotspacemacs/init', before layer configuration 305 | executes. 306 | This function is mostly useful for variables that need to be set 307 | before packages are loaded. If you are unsure, you should try in setting them in 308 | `dotspacemacs/user-config' first." 309 | 310 | 311 | (server-start) 312 | 313 | (if (string-equal system-name "MATH-SURFACE") 314 | (setq-default dotspacemacs-default-font '("SauceCodePro Nerd Font" 315 | :size 22 316 | :weight semibold 317 | :width normal 318 | :powerline-scale 1.4))) 319 | ) 320 | 321 | (defun dotspacemacs/user-config () 322 | "Configuration function for user code. 323 | This function is called at the very end of Spacemacs initialization after 324 | layers configuration. 325 | This is the place where most of your configurations should be done. Unless it is 326 | explicitly specified that a variable should be set before a package is loaded, 327 | you should place your code here." 328 | 329 | 330 | (require 'org-protocol) 331 | (with-eval-after-load 'org 332 | (add-to-list 'org-modules 'org-protocol) 333 | (setq org-capture-templates '( 334 | ("p" "Protocol" entry (file+headline "~/../org/notes.org" "Inbox") 335 | "* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?") 336 | ("n" "Note" entry (file+headline "~/../org/notes.org" "Inbox") 337 | "* %?\n%U" :empty-lines 1) 338 | ("N" "Note with Clipboard" entry (file+headline "~/../org/notes.org" "Inbox") 339 | "* %?\n%U\n %c" :empty-lines 1) 340 | ("S" "Snippit Handler" entry (file+headline "~/../org/notes.org" "Inbox") 341 | "* %? [[%:link]] \nCaptured On: %U") 342 | ("L" "Protocol Link" entry (file+headline "~/../org/notes.org" "Inbox") 343 | "* %? [[%:link][%:description]] \nCaptured On: %U")))) 344 | 345 | ;; -- new org file 346 | (defun org-new-file (pattern) 347 | "Creates a new org file" 348 | (interactive "sOrg Filename: ") 349 | (find-file-other-window (concatenate 'string "~/org/" pattern ".org"))) 350 | 351 | (add-hook 'org-mode-hook 352 | (lambda () 353 | (push '("TODO" . "☐") prettify-symbols-alist) 354 | (push '("DONE" . "✓" ) prettify-symbols-alist) 355 | (prettify-symbols-mode) 356 | )) 357 | (setq-default frame-title-format '("%f [%m]")) 358 | (add-hook 'org-mode-hook 359 | '(lambda () 360 | (define-key org-mode-map [(C-M-right)] 'org-todo) 361 | (define-key org-mode-map [(C-M-left)] 'org-todo) 362 | (define-key org-mode-map [(C-M-up)] 'org-priority-up) 363 | (define-key org-mode-map [(C-M-down)] 'org-priority-down) 364 | (define-key org-mode-map [(C-down)] 'org-move-subtree-down) 365 | (define-key org-mode-map [(C-up)] 'org-move-subtree-up) 366 | (define-key org-mode-map [(C-right)] 'org-demote-subtree) 367 | (define-key org-mode-map [(C-left)] 'org-promote-subtree))) 368 | 369 | ;;(org-defkey org-mode-map [(meta return)] 'org-meta-return) 370 | 371 | 372 | (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))) 373 | 374 | 375 | (when (fboundp 'adaptive-wrap-prefix-mode) 376 | (defun my-activate-adaptive-wrap-prefix-mode () 377 | "Toggle `visual-line-mode' and `adaptive-wrap-prefix-mode' simultaneously." 378 | (adaptive-wrap-prefix-mode (if visual-line-mode 1 -1))) 379 | (add-hook 'visual-line-mode-hook 'my-activate-adaptive-wrap-prefix-mode)) 380 | 381 | (add-hook 'text-mode-hook 'turn-on-visual-line-mode) 382 | 383 | ;;linum formats 384 | (setq-default 385 | linum-format "%4d \u2502" 386 | linum-relative-format "%4s \u2502") 387 | (setq org-cycle-separator-lines 1) 388 | (setq org-startup-truncated nil)) 389 | ;;'(spacemacs/toggle-vi-tilde-fringe-off)) 390 | 391 | ;; Do not write anything past this comment. This is where Emacs will 392 | ;; auto-generate custom variable definitions. 393 | (custom-set-variables 394 | ;; custom-set-variables was added by Custom. 395 | ;; If you edit it by hand, you could mess it up, so be careful. 396 | ;; Your init file should contain only one such instance. 397 | ;; If there is more than one, they won't work right. 398 | '(org-support-shift-select (quote always)) 399 | '(package-selected-packages 400 | (quote 401 | (recentf-ext jump-char iy-go-to-char buffer-move better-shell org-projectile org-category-capture org-present org-pomodoro alert log4e gntp org-mime org-download mmm-mode markdown-toc markdown-mode htmlize helm-company helm-c-yasnippet gnuplot gh-md fuzzy company-statistics company base16-theme auto-yasnippet yasnippet ac-ispell auto-complete ws-butler winum which-key volatile-highlights vi-tilde-fringe uuidgen use-package toc-org spaceline powerline restart-emacs request rainbow-delimiters popwin persp-mode pcre2el paradox spinner org-plus-contrib org-bullets open-junk-file neotree move-text macrostep lorem-ipsum linum-relative link-hint indent-guide hydra hungry-delete hl-todo highlight-parentheses highlight-numbers parent-mode highlight-indentation helm-themes helm-swoop helm-projectile helm-mode-manager helm-make projectile pkg-info epl helm-flx helm-descbinds helm-ag google-translate golden-ratio flx-ido flx fill-column-indicator fancy-battery eyebrowse expand-region exec-path-from-shell evil-visualstar evil-visual-mark-mode evil-unimpaired evil-tutor evil-surround evil-search-highlight-persist evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-lisp-state smartparens evil-indent-plus evil-iedit-state iedit evil-exchange evil-escape evil-ediff evil-args evil-anzu anzu evil goto-chg undo-tree eval-sexp-fu highlight elisp-slime-nav dumb-jump f dash s diminish define-word column-enforce-mode clean-aindent-mode bind-map bind-key auto-highlight-symbol auto-compile packed aggressive-indent adaptive-wrap ace-window ace-link ace-jump-helm-line helm avy helm-core popup async)))) 402 | (custom-set-faces 403 | ;; custom-set-faces was added by Custom. 404 | ;; If you edit it by hand, you could mess it up, so be careful. 405 | ;; Your init file should contain only one such instance. 406 | ;; If there is more than one, they won't work right. 407 | '(fringe ((t (:foreground "#4f5b66" :background nil :underline nil)))) 408 | '(git-gutter:added ((t (:foreground "cyan" :background "black")))) 409 | '(git-gutter:deleted ((t (:foreground "cyan" :background "black")))) 410 | '(git-gutter:modified ((t (:foreground "cyan" :background "black")))) 411 | '(linum ((t (:foreground "#4f5b66" :background nil :underline nil))))) 412 | -------------------------------------------------------------------------------- /new-note-clip.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | start "" "org-protocol://capture?template=n" 3 | -------------------------------------------------------------------------------- /new-note-snip-handler.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | MOVE /Y %~1 C:\Users\math0\Dropbox\emacs\org\shots 3 | start "" "org-protocol://capture?template=S&url=file:C:\Users\math0\Dropbox\emacs\org\shots\%~nx1" 4 | -------------------------------------------------------------------------------- /new-note.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | start "" "org-protocol://capture?template=n" 3 | -------------------------------------------------------------------------------- /note.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/math0ne/windows-emacs-org/5c8864cbf796d265877c6b57986f770f1d1b1339/note.ico -------------------------------------------------------------------------------- /org-context.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | ;; Be sure to set the correct path to Emacs on your system 3 | [HKEY_CURRENT_USER\Software\Classes\*\shell] 4 | 5 | ;; Open file in existing frame 6 | [HKEY_CURRENT_USER\Software\Classes\*\shell\emacsopen1sameframe] 7 | @="&Emacs: Edit in existing window" 8 | "icon"="c:\\msys64\\mingw64\\bin\\emacsclientw.exe" 9 | [HKEY_CURRENT_USER\Software\Classes\*\shell\emacsopen1sameframe\command] 10 | @="c:\\msys64\\mingw64\\bin\\emacsclientw.exe -n --alternate-editor=\"c:\\msys64\\mingw64\\bin\\runemacs.exe\" -n \"%1\"" 11 | 12 | ;; Open file in new frame 13 | [HKEY_CURRENT_USER\Software\Classes\*\shell\emacsopen2newframe] 14 | @="&Emacs: Edit in new window" 15 | "icon"="c:\\msys64\\mingw64\\bin\\emacsclientw.exe" 16 | [HKEY_CURRENT_USER\Software\Classes\*\shell\emacsopen2newframe\command] 17 | @="c:\\msys64\\mingw64\\bin\\emacsclientw.exe -n --alternate-editor=\"c:\\msys64\\mingw64\\bin\\runemacs.exe\" -c -n \"%1\"" 18 | 19 | ;; Dired for desktop background 20 | [HKEY_CURRENT_USER\Software\Classes\DesktopBackground\shell\emacsopensameframe] 21 | @="&Emacs: Open in dired" 22 | "icon"="c:\\msys64\\mingw64\\bin\\emacsclientw.exe" 23 | [HKEY_CURRENT_USER\Software\Classes\DesktopBackground\shell\emacsopensameframe\command] 24 | @="c:\\msys64\\mingw64\\bin\\emacsclientw.exe -n --alternate-editor=\"c:\\msys64\\mingw64\\bin\\runemacs.exe\" -n \"%v\"" 25 | 26 | ;; Dired for directory 27 | [HKEY_CURRENT_USER\Software\Classes\Directory\shell\emacsopensameframe] 28 | @="&Emacs: Open in dired" 29 | "icon"="c:\\msys64\\mingw64\\bin\\emacsclientw.exe" 30 | [HKEY_CURRENT_USER\Software\Classes\Directory\shell\emacsopensameframe\command] 31 | @="c:\\msys64\\mingw64\\bin\\emacsclientw.exe -n --alternate-editor=\"c:\\msys64\\mingw64\\bin\\runemacs.exe\" -n \"%V\"" 32 | 33 | ;; Dired for directory background 34 | [HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\emacsopensameframe] 35 | @="&Emacs: Open in dired" 36 | "icon"="c:\\msys64\\mingw64\\bin\\emacsclientw.exe" 37 | [HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\emacsopensameframe\command] 38 | @="c:\\msys64\\mingw64\\bin\\emacsclientw.exe -n --alternate-editor=\"c:\\msys64\\mingw64\\bin\\runemacs.exe\" -n \"%V\"" 39 | 40 | ;; Dired for drive background 41 | [HKEY_CURRENT_USER\Software\Classes\Drive\Background\shell\EmacsOpenDirSameFrame] 42 | @="&Emacs: Open in dired" 43 | "icon"="c:\\msys64\\mingw64\\bin\\emacsclientw.exe" 44 | [HKEY_CURRENT_USER\Software\Classes\Drive\Background\shell\EmacsOpenDirSameFrame\command] 45 | ;; as drives haven't space inside their name don't use quoting 46 | @="c:\\msys64\\mingw64\\bin\\emacsclientw.exe -n --alternate-editor=\"c:\\msys64\\mingw64\\bin\\runemacs.exe\" -n %L" 47 | 48 | ;; Dired for drive 49 | [HKEY_CURRENT_USER\Software\Classes\Drive\shell\EmacsOpenDirSameFrame] 50 | @="&Emacs: Open in dired" 51 | "icon"="c:\\msys64\\mingw64\\bin\\emacsclientw.exe" 52 | [HKEY_CURRENT_USER\Software\Classes\Drive\shell\EmacsOpenDirSameFrame\command] 53 | ;; as drives haven't space inside their name don't use quoting 54 | @="c:\\msys64\\mingw64\\bin\\emacsclientw.exe -n --alternate-editor=\"c:\\msys64\\mingw64\\bin\\runemacs.exe\" -n %L" 55 | -------------------------------------------------------------------------------- /org-display-inbox.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | "C:\msys64\mingw64\bin\emacsclientw.exe" -n C:\Users\math0\Dropbox\emacs\org\notes.org 3 | -------------------------------------------------------------------------------- /org-display-org-dir.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | "C:\msys64\mingw64\bin\emacsclientw.exe" -n C:\Users\math0\Dropbox\emacs\org\ 3 | -------------------------------------------------------------------------------- /org-mode-tray.ahk: -------------------------------------------------------------------------------- 1 | #Persistent 2 | Menu, Tray, Click, 1 3 | Menu, Tray, Icon , note.ico 4 | Menu, tray, NoStandard 5 | Menu, Tray, Add, Single Click, SingleClick 6 | Menu, Tray, Add, Double Click, DoubleClick 7 | Menu, Tray, Default, Double Click 8 | Menu, Tray, Add, Exit 9 | Return 10 | 11 | DoubleClick: 12 | MouseGetPos, , , WhichWindow, WhichControl 13 | WinGetClass, WhichClass, ahk_id %WhichWindow% 14 | If WhichClass = Shell_TrayWnd 15 | { 16 | IfInString, WhichControl, ToolbarWindow32 17 | { 18 | If Clicks = 19 | { 20 | SetTimer, SingleClick, 500 21 | Clicks = 1 22 | Return 23 | } 24 | } 25 | } 26 | SetTimer, SingleClick, Off 27 | Sleep, 500 28 | 29 | Clicks = 30 | Return 31 | 32 | SingleClick: 33 | SetTimer, SingleClick, Off 34 | Run, C:\Users\math0\Dropbox\emacs\new-note.bat 35 | Clicks = 36 | Return 37 | 38 | !F1::Run, C:\Users\math0\Dropbox\emacs\new-note.bat 39 | 40 | !F2::Run, C:\Users\math0\Dropbox\emacs\new-note-clip.bat 41 | 42 | !F3::Send !{PrintScreen} 43 | 44 | !F4::Run, C:\Users\math0\Dropbox\emacs\org-display-inbox.bat 45 | 46 | !F5::Run, C:\Users\math0\Dropbox\emacs\org-display-org-dir.bat 47 | 48 | Exit: 49 | ExitApp 50 | -------------------------------------------------------------------------------- /org-protocol-handler.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set URL=%1 3 | set URL=%URL:/?=?% 4 | set URL=%URL:://=:/% 5 | "C:\msys64\mingw64\bin\emacsclientw.exe" -na "C:\msys64\mingw64\bin\runemacs.exe" %URL% 6 | -------------------------------------------------------------------------------- /org-protocol.reg: -------------------------------------------------------------------------------- 1 | REGEDIT4 2 | 3 | [HKEY_CLASSES_ROOT\org-protocol] 4 | @="URL:Org Protocol" 5 | "URL Protocol"="" 6 | [HKEY_CLASSES_ROOT\org-protocol\shell] 7 | [HKEY_CLASSES_ROOT\org-protocol\shell\open] 8 | [HKEY_CLASSES_ROOT\org-protocol\shell\open\command] 9 | @="\"C:\\Users\\math0\\Dropbox\\emacs\\org-protocol-handler.bat\" \"%1\"" 10 | -------------------------------------------------------------------------------- /org-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/math0ne/windows-emacs-org/5c8864cbf796d265877c6b57986f770f1d1b1339/org-setup.png -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Org-mode Focused Emacs Setup 2 | 3 | This is in my opinion the best way to install and configure emacs for org-mode usage on Windows 10. There should be an installer that does most of this stuff for emacs by default but here we are with this complicated install process. 4 | 5 | ![screenshots](https://raw.githubusercontent.com/math0ne/windows-emacs-org/master/org-setup.png) 6 | 7 | ## Features 8 | 9 | * Global hotkeys, system tray, and windows shortcuts for quick access to major org-mode functions 10 | * Snipping tool workflow 11 | * Sane-ish keybaord shortcuts 12 | * Syncing with mobile through dropbox 13 | 14 | ## System Tray Usage 15 | 16 | * Single click: Open emacs or bring to focus 17 | * Double click: New orgmode note 18 | * Right click for: 19 | * Close emacs Server 20 | * (META-F1) New Note 21 | * (META-F2) New Note Clipboard 22 | * (META-F3) New Note Snipping Tool 23 | * (META-F4) Display Inbox 24 | * (META-F5) Show org file index 25 | * (META-F6) Show org agenda 26 | 27 | ## Keys 28 | 29 | ``` 30 | Global Hotkeys 31 | * META-F1 -- New Note 32 | * META-F2 -- New Note Clipboard 33 | * META-F3 -- New Note Snipping Tool 34 | * META-F4 -- Display Inbox 35 | * META-F5 -- Show org file index 36 | * META-F6 -- Show org agenda 37 | 38 | General Keys 39 | * C-s -- save 40 | * C-z -- undo 41 | * C-y -- redo 42 | * S-u/d/l/r -- select text 43 | * SPC-q-q -- quit and save 44 | * SPC-q-Q -- force quit 45 | 46 | Window control 47 | * SPC-w-c -- close window (split) 48 | * SPC-w-- -- split window 49 | * SPC-b-b -- list buffers 50 | * SPC-q-z -- kill the current frame 51 | * SPC-b-d -- close buffer 52 | 53 | Org-mode Keys 54 | * META-ret-ret -- new list below current 55 | * C-left/right -- demote / promote 56 | * C-up/down -- move tree up / down 57 | * C-M-l/r -- mark todo 58 | * C-M-u/d -- set priority 59 | * M-RET ! -- schedule item 60 | * M-RET A -- archive item 61 | * META-ret -- org commands 62 | * TAB -- cycle visibility 63 | * S-TAB -- cycle global visibility 64 | ``` 65 | 66 | ## Install Instructions 67 | 68 | ### Pre-requisits 69 | 70 | * https://addons.mozilla.org/en-US/firefox/addon/org-capture/ 71 | * https://chrome.google.com/webstore/detail/org-capture/kkkjlfejijcjgjllecmnejhogpbcigdc?hl=en 72 | * http://getgreenshot.org/ 73 | * https://www.msys2.org/ 74 | * https://www.dropbox.com/ 75 | 76 | ### Set windows %HOME% enviroment variable 77 | 78 | * Instructions: https://www.computerhope.com/issues/ch000549.htm 79 | * Add a new user variable HOME = `C:\Users\math0\Dropbox\emacs\home` 80 | 81 | ### Install Emacs, Spacemacs, git and this config 82 | 83 | * From the MSYS2 command line: 84 | 85 | ``` 86 | pacman -S mingw-w64-x86_64-emacs 87 | pacman -S git 88 | git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d 89 | git clone https://github.com/math0ne/windows-emacs-org.git C:\Users\%USERNAME%\Dropbox\emacs 90 | ``` 91 | 92 | ### Replace my username with your own 93 | 94 | * My username (math0) will have to be replaced with your own across all files in the repo. 95 | 96 | ### Register context and org protocol 97 | 98 | This allows you to use the windows context menu and to send to notes to emacs from other programs. 99 | 100 | * Run org-protocol.reg 101 | * Run org-context.reg 102 | 103 | ### _(Optional)_ Configure Greenshot 104 | 105 | This allows you to snip screenshots directly into your emacs org setup. 106 | 107 | * external command: org-mode: C:\Users\math0\Dropbox\emacs\new-note-snip-handler.bat "{0}" 108 | * set export dir: C:\Users\math0\Dropbox\emacs\org\shots 109 | * set: destination: org-mode 110 | * set capture region: alt-printscreen 111 | 112 | ### _(Optional)_ Set programs to start on boot 113 | 114 | * org-mode-tray.ahk 115 | * greenshot 116 | 117 | ### _(Optional)_ Setup Orgzly on Android 118 | 119 | * http://www.orgzly.com/ 120 | * Set it to sync with C:\Users\%USERNAME%\Dropbox\emacs\org 121 | --------------------------------------------------------------------------------