(setq custom-file "~/.emacs.d/custom.el")
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(package-initialize)
(eval-and-compile
(setq use-package-always-ensure t)
(setq use-package-expand-minimally t)
(setq use-package-compute-statistics t)
(setq use-package-enable-imenu-support t))
(eval-when-compile
(require 'use-package)
(require 'bind-key))
(defun buffer-cleanup ()
(interactive)
(whitespace-cleanup)
(untabify (point-min) (point-max)))
;; Copy to clipboard
(defun copy-to-clipboard ()
"Copies selection to x-clipboard."
(interactive)
(if (display-graphic-p)
(progn
(message "Yanked region to x-clipboard!")
(call-interactively 'clipboard-kill-ring-save)
)
(if (region-active-p)
(progn
(shell-command-on-region (region-beginning) (region-end) "xsel -i -b")
(message "Yanked region to clipboard!")
(deactivate-mark))
(message "No region active; can't yank to clipboard!")))
)
;; Paste from clipboard
(defun paste-from-clipboard ()
(interactive)
(if (display-graphic-p)
(progn
(clipboard-yank)
(message "graphics active")
)
(insert (shell-command-to-string "xsel -o -b"))
)
)
(global-set-key (kbd "C-x c") 'copy-to-clipboard)
(global-set-key (kbd "C-x v") 'paste-from-clipboard)
;; Indent commit messages
(fset 'indent-commit
(lambda (&optional arg) "Keyboard macro." (interactive "p")
(kmacro-exec-ring-item (quote ([67108896 134217829 1 24 114 116 32 32 32 32 45 32 13] 0 "%d")) arg)))
;; Highlight tabs
(defun highlight-tabs ()
(interactive)
(hi-lock-face-buffer "\t"))
(defun unhighlight-tabs ()
(interactive)
(hi-lock-unface-buffer "\t"))
(global-set-key (kbd "C-x p")
#'(lambda ()
(interactive)
(switch-to-buffer "*scratch*")))
;; Commit message for personal org file repository
(defalias 'fb/commit-massage-org
(kmacro "U p d a t e SPC C-u M-x f b / i n <tab> RET 4 RET"))
(defun fb/copy-buffer-name ()
(interactive)
(kill-new (buffer-name)))
(defun fb/copy-buffer-full-name ()
(interactive)
(kill-new (buffer-file-name)))
Use Xah Lee Insert Date Time function.
Get function from [1].
[1] - http://ergoemacs.org/emacs/elisp_insert-date-time.html
(defun fb/insert-date ()
"Insert current date time.
Insert date in this format: yyyy-mm-dd.
If `universal-argument' is called first, prompt for a format to use.
If there's text selection, delete it first.
URL `http://ergoemacs.org/emacs/elisp_insert-date-time.html'
version 2020-09-07"
(interactive)
(let (($style
(if current-prefix-arg
(string-to-number
(substring
(ido-completing-read
"Style:"
'(
"1 → 2018-04-12 Thursday"
"2 → 20180412224611"
"3 → 2018-04-12T22:46:11-07:00"
"4 → 2018-04-12 22:46:11-07:00"
"5 → Thursday, April 12, 2018"
"6 → Thu, Apr 12, 2018"
"7 → April 12, 2018"
"8 → Apr 12, 2018"
)) 0 1))
0
)))
(when (use-region-p) (delete-region (region-beginning) (region-end)))
(insert
(cond
((= $style 0)
;; "2016-10-10"
(format-time-string "%Y-%m-%d"))
((= $style 1)
;; "2018-04-12 Thursday"
(format-time-string "%Y-%m-%d %A"))
((= $style 2)
;; "20180412224015"
(replace-regexp-in-string ":" "" (format-time-string "%Y%m%d%T")))
((= $style 3)
(concat
(format-time-string "%Y-%m-%dT%T")
(funcall (lambda ($x) (format "%s:%s" (substring $x 0 3) (substring $x 3 5))) (format-time-string "%z")))
;; "2018-04-12T22:45:26-07:00"
)
((= $style 4)
(concat
(format-time-string "%Y-%m-%d %T")
(funcall (lambda ($x) (format "%s:%s" (substring $x 0 3) (substring $x 3 5))) (format-time-string "%z")))
;; "2018-04-12 22:46:11-07:00"
)
((= $style 5)
(format-time-string "%A, %B %d, %Y")
;; "Thursday, April 12, 2018"
)
((= $style 6)
(format-time-string "%a, %b %d, %Y")
;; "Thu, Apr 12, 2018"
)
((= $style 7)
(format-time-string "%B %d, %Y")
;; "April 12, 2018"
)
((= $style 8)
(format-time-string "%b %d, %Y")
;; "Apr 12, 2018"
)
(t
(format-time-string "%Y-%m-%d"))))))
(defun smarter-move-beginning-of-line (arg)
"Move point back to indentation of beginning of line.
Move point to the first non-whitespace character on this line.
If point is already there, move to the beginning of the line.
Effectively toggle between the first non-whitespace character and
the beginning of the line.
If ARG is not nil or 1, move forward ARG - 1 lines first. If
point reaches the beginning or end of the buffer, stop there."
(interactive "^p")
(setq arg (or arg 1))
;; Move lines first
(when (/= arg 1)
(let ((line-move-visual nil))
(forward-line (1- arg))))
(let ((orig-point (point)))
(back-to-indentation)
(when (= orig-point (point))
(move-beginning-of-line 1))))
;; remap C-a to `smarter-move-beginning-of-line'
(global-set-key [remap move-beginning-of-line]
'smarter-move-beginning-of-line)
(use-package diminish
:diminish abbrev-mode
:diminish auto-fill-function
:diminish eldoc-mode
:diminish visual-line-mode
)
(use-package zenburn-theme
:config
(setq zenburn-use-variable-pitch t)
(setq zenburn-scale-org-headlines t)
(setq zenburn-scale-outline-headlines t)
(load-theme 'zenburn t))
(set-frame-font "Source Code Pro-12" nil t)
(use-package emacs
:config
;;; Speed up
(add-hook 'focus-out-hook 'garbage-collect)
(run-with-idle-timer 5 t 'garbage-collect)
;;; UI tweaks
(blink-cursor-mode -1)
(setq-default cursor-type 'hbar)
(setq ring-bell-function 'ignore)
(setq scroll-conservatively 10)
(setq scroll-margin 7)
(setq column-number-mode t)
(show-paren-mode 1)
(pixel-scroll-precision-mode)
(fset 'yes-or-no-p 'y-or-n-p)
(setq confirm-kill-emacs 'yes-or-no-p)
(require 'saveplace)
(setq-default save-place t)
(setq save-place-file (concat user-emacs-directory "places"))
(setq backup-directory-alist `(("." . ,(concat user-emacs-directory
"backups"))))
(setq auto-save-default t)
(setq auto-save-visited-file-name t)
(setq browse-url-browser-function 'browse-url-generic
browse-url-generic-program "explorer.exe")
(windmove-default-keybindings)
(global-auto-revert-mode t)
(setq auto-revert-remote-files t)
(setq remote-file-name-inhibit-locks t)
(setq remote-file-name-inhibit-cache nil)
(setq vc-handled-backends '(Git))
(setq vc-follow-symlinks nil)
(setq load-prefer-newer t)
(setq create-lockfiles nil)
(set-default 'truncate-lines t)
(setq truncate-partial-width-windows nil)
(setq-default indent-tabs-mode nil
tab-width 4)
(setq require-final-newline t)
(setq tab-always-indent 'complete)
(setq completion-styles '(basic initials substring))
(setq large-file-warning-threshold nil)
(setq initial-major-mode 'fundamental-mode)
(setq python-indent-guess-indent-offset t)
(setq python-indent-guess-indent-offset-verbose nil)
(setq python-shell-completion-native-enable nil)
(setq backward-delete-char-untabify-method 'hungry)
(setq bookmark-save-flag 1)
(setq select-active-regions nil)
(setq native-comp-async-report-warnings-errors nil)
(global-set-key [remap dabbrev-expand] 'hippie-expand)
(global-set-key (kbd "RET") 'newline-and-indent)
(setq ispell-program-name "aspell")
(define-key global-map (kbd "M-g l") 'goto-line)
(setq major-mode-remap-alist
'((yaml-mode . yaml-ts-mode)
(bash-mode . bash-ts-mode)
(js2-mode . js-ts-mode)
(typescript-mode . typescript-ts-mode)
(json-mode . json-ts-mode)
(css-mode . css-ts-mode)
(python-mode . python-ts-mode)))
(keymap-set minibuffer-mode-map "TAB" 'minibuffer-complete)
(setq switch-to-buffer-obey-display-actions t)
;;; Live reload of the settings, from inside of the Emacs
(global-set-key (kbd "C-c i")
(lambda()(interactive)
(org-babel-load-file "~/.emacs.d/README.org"))))
(defun nm-around-helm-buffers-sort-transformer (candidates source)
candidates)
(use-package vertico
:init
(vertico-mode))
(use-package vertico-directory
:ensure nil
:after vertico
:bind (:map vertico-map
("M-DEL" . vertico-directory-delete-word)))
;; Marginalia: annotations for minibuffer
(use-package marginalia
:config
(marginalia-mode))
;; Popup completion-at-point
(use-package corfu
:init
(global-corfu-mode)
:bind
(:map corfu-map
("SPC" . corfu-insert-separator)
("C-n" . corfu-next)
("C-p" . corfu-previous)))
;; ;; Part of corfu
(use-package corfu-popupinfo
:ensure nil
:after corfu
:hook (corfu-mode . corfu-popupinfo-mode)
:custom
(corfu-popupinfo-delay '(0.25 . 0.1))
(corfu-popupinfo-hide nil)
:config
(corfu-popupinfo-mode))
;; Make corfu popup come up in terminal overlay
(use-package corfu-terminal
:if (not (display-graphic-p))
:config
(corfu-terminal-mode))
;; Orderless: powerful completion style
(use-package orderless
:config
(setq completion-styles '(orderless)))
(use-package dired
:ensure nil
:commands (dired)
:custom
;; Always delete and copy recursively
(dired-recursive-deletes 'always)
(dired-recursive-copies 'always)
;; Auto refresh Dired, but be quiet about it
(global-auto-revert-non-file-buffers t)
(auto-revert-verbose nil)
;; Quickly copy/move file in Dired
(dired-dwim-target t)
;; Move files to trash when deleting
(delete-by-moving-to-trash t)
:config
;; Reuse same dired buffer, to prevent numerous buffers while navigating in dired
(put 'dired-find-alternate-file 'disabled nil)
:hook
(dired-mode . (lambda ()
(local-set-key (kbd "<mouse-2>") #'dired-find-alternate-file)
(local-set-key (kbd "RET") #'dired-find-alternate-file)
(local-set-key (kbd "^")
(lambda () (interactive) (find-alternate-file ".."))))))
(use-package dired-x
:ensure nil
:after dired
:hook (dired-mode . dired-omit-mode)
:config
(setq dired-omit-files
(concat dired-omit-files "\\|^\\..+$")))
(use-package ibuffer-sidebar
:bind (("C-x C-b" . ibuffer))
:ensure nil
:commands (ibuffer)
:config
(setq ibuffer-expert t)
(setq ibuffer-show-empty-filter-groups nil)
(require 'ibuf-ext)
(add-to-list 'ibuffer-never-show-predicates "^\\*")
(setq ibuffer-saved-filter-groups
'(("default"
("Bitbake"
(or
(filename . "\\.bb$")
(filename . "\\.bbappend$")
(filename . "\\.bbclass$")
(filename . "\\.inc$")
(filename . "\\.wic$")
(filename . "\\.wks$")))
("Shell scripts"
(or
(mode . sh-mode)
(mode . shell-mode)
(mode . makefile-bsdmake-mode)
(mode . makefile-imake-mode)
(mode . makefile-automake-mode)
(mode . makefile-gmake-mode)
(mode . makefile-makeapp-mode)))
("Git" (or
(derived-mode . magit-mode)
(mode . diff-mode)))
("Org"
(or (mode . org-mode)
(filename . "OrgMode")))
("Markup"
(or
(mode . tex-mode)
(mode . latex-mode)
(mode . tex-fold-mode)
(mode . tex-doctex-mode)
(mode . context-mode)
(mode . bibtex-style-mode)
(mode . sgml-mode)
(mode . css-mode)
(mode . nxml-mode)
(mode . html-mode)))
("Dired" (mode . dired-mode))
("Man pages"
(mode . Man-mode))
("Shells"
(or
(mode . ansi-term-mode)
(mode . term-mode)
(mode . eshell-mode)
(mode . shell-mode)))
)))
(add-hook 'ibuffer-mode-hook
#'(lambda ()
(ibuffer-auto-mode 1)
(ibuffer-switch-to-saved-filter-groups "default"))))
(use-package ibuffer-tramp
:after (tramp)
:config
(progn
(add-hook 'ibuffer-hook
(lambda ()
(ibuffer-tramp-set-filter-groups-by-tramp-connection)
(ibuffer-do-sort-by-alphabetic))))
(add-to-list 'tramp-remote-path 'tramp-own-remote-path))
(use-package tramp
:config
(setq vc-ignore-dir-regexp
(format "\\(%s\\)\\|\\(%s\\)"
vc-ignore-dir-regexp
tramp-file-name-regexp))
(add-to-list 'tramp-connection-properties
(list "/ssh:" "direct-async-process" t))
(setq tramp-persistency-file-name "~/.emacs.d/tramp")
(setq tramp-default-method "ssh")
(setq tramp-auto-save-directory "/tmp/tramp/")
(setq tramp-verbose 0)
(setq tramp-chunksize 2000)
;; use the settings in ~/.ssh/config instead of Tramp's
(setq tramp-ssh-controlmaster-options nil)
(setq remote-file-name-inhibit-locks t))
(use-package flyspell
:diminish flyspell-mode
:hook
(text-mode . flyspell-mode)
(prog-mode . flyspell-prog-mode))
(use-package languagetool
:commands (languagetool-check
languagetool-clear-suggestions
languagetool-correct-at-point
languagetool-correct-buffer
languagetool-set-language
languagetool-server-mode
languagetool-server-start
languagetool-server-stop)
:config
(setq languagetool-java-arguments '("-Dfile.encoding=UTF-8")
languagetool-console-command "~/.local/share/LanguageTool/languagetool-commandline.jar"
languagetool-server-command "~/.local/share/LanguageTool/languagetool-server.jar"))
(use-package treesit
:ensure nil
:config
(setq treesit-font-lock-level 4)
(setq c-ts-mode-indent-offset 4))
(use-package treesit-auto
:config
(setq treesit-auto-install 'prompt)
(global-treesit-auto-mode))
(use-package tree-sitter
:config
(add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode))
(use-package auth-source
:config
(setq auth-sources '("~/.authinfo")))
Override root project: Link
(defun project-root-override (dir)
(let ((root (locate-dominating-file dir ".projectile"))
(backend (ignore-errors (vc-responsible-backend dir))))
(when root (if (version<= emacs-version "28")
(cons 'vc root)
(list 'vc backend root)))))
(use-package projectile
:diminish projectile-mode
:bind-keymap ("C-c p" . projectile-command-map)
:hook (after-init . projectile-mode)
:config
(add-hook 'project-find-functions #'project-root-override)
(setq projectile-enable-caching t))
(use-package projectile-ripgrep
:after projectile)
(use-package whitespace
:diminish global-whitespace-mode
:hook
(after-init . global-whitespace-mode)
:config
(setq whitespace-style
'(face newline tab-mark trailing space-before-tab space-after-tab)))
(use-package expand-region
:bind
("M-=" . er/expand-region))
(use-package rainbow-delimiters
:hook
(prog-mode . rainbow-delimiters-mode))
(use-package smartparens
:diminish smartparens-mode
:hook
(after-init . smartparens-global-mode)
:config
(require 'smartparens-config))
(use-package ws-butler
:diminish ws-butler-mode
:hook
(after-init . ws-butler-global-mode))
(use-package undo-tree
:diminish undo-tree-mode
:bind ("C-x u" . 'undo-tree-redo)
:config
(progn
(global-undo-tree-mode)
(setq undo-tree-visualizer-timestamps t)
(setq undo-tree-visualizer-diff t)
(setq undo-tree-history-directory-alist '(("." . "~/.emacs.d/undo")))))
(use-package company
:diminish company-mode
:hook (after-init . global-company-mode)
:bind
(:map prog-mode-map
("<tab>" . company-indent-or-complete-common))
:config
(setq company-idle-delay nil
company-dabbrev-downcase nil
company-minimum-prefix-length 2
company-show-numbers t
company-tooltip-limit 10
company-tooltip-align-annotations t
company-lsp-enable-snippet t)
(define-key company-mode-map [remap indent-for-tab-command] #'company-indent-or-complete-common)
(delete 'company-clang company-backends))
(use-package flymake
:diminish flymake-mode
:hook
(prog-mode . (lambda () (flymake-mode t)))
(text-mode . (lambda () (flymake-mode t))))
(use-package eglot
:ensure nil
:commands (eglot eglot-ensure eglot-server-programs)
:hook ((c-ts-mode . eglot-ensure)
(markdown-mode . eglot-ensure)
(sh-mode . eglot-ensure)
(python-mode . eglot-ensure))
:config
(add-to-list 'eglot-server-programs '((c-ts-mode)
. ("clangd"
"-j=8"
"--log=error"
"--malloc-trim"
"--background-index"
"--clang-tidy"
"--cross-file-rename"
"--completion-style=detailed"
"--pch-storage=memory"
"--header-insertion=never"
"--header-insertion-decorators=0")))
(add-to-list 'eglot-server-programs '((sh-mode) . ("bash-language-server" "start")))
(add-to-list 'eglot-server-programs '(markdown-mode . ("marksman")))
(add-to-list 'eglot-server-programs '(rust-mode . ("rust-analyzer")))
(setq-default eglot-workspace-configuration
'((:pylsp . (:configurationSources ["flake8"]
:plugins (
:pycodestyle (:enabled :json-false)
:mccabe (:enabled :json-false)
:pyflakes (:enabled :json-false)
:flake8 (:enabled :json-false
:maxLineLength 88)
:ruff (:enabled t
:lineLength 88)
:pydocstyle (:enabled t
:convention "numpy")
:yapf (:enabled :json-false)
:autopep8 (:enabled :json-false)
:black (:enabled t
:line_length 88
:cache_config t)))))))
(use-package eldoc
:ensure nil
:custom
(eldoc-documentation-strategy 'eldoc-documentation-compose-eagerly)
(eldoc-echo-area-display-truncation-message nil)
(eldoc-echo-area-prefer-doc-buffer t)
(eldoc-idle-delay 0.1)
(eldoc-echo-area-use-multiline-p nil))
(use-package magit
:config
(require 'git-commit)
(add-hook 'git-commit-mode-hook 'flyspell-mode)
(add-hook 'git-commit-setup-hook 'git-commit-turn-on-flyspell)
(add-hook 'git-commit-mode-hook (lambda () (setq fill-column 72)))
(setq magit-diff-refine-hunk t)
:bind ((("C-c g" . magit-file-dispatch))))
Configuration in private file
;; (use-package forge
;; :after magit)
(use-package diff-hl
:hook ((after-init . global-diff-hl-mode)
(dired-mode . diff-hl-dired-mode-unless-remote)
(magit-pre-refresh . diff-hl-magit-pre-refresh)
(magit-post-refresh . diff-hl-magit-post-refresh))
:config
;; When Emacs runs in terminal, show the indicators in margin instead.
(unless (display-graphic-p)
(diff-hl-margin-mode)))
(use-package cmake-mode
:mode ("CmakeLists\\.txt'" "\\.cmake\\'"))
(use-package dockerfile-mode
:mode ("/Dockerfile\\'"))
(use-package dts-mode
:mode ("\\.dts\\'" "\\.dtsi\\'"))
(use-package json-mode
:mode ("\\.uhupkg.config\\'" "\\.json\\'"))
(use-package pkgbuild-mode
:mode ("PKGBUILD\\'"))
(use-package systemd
:mode ("\\.automount\\'\\|\\.busname\\'\\|\\.mount\\'\\|\\.service\\'\\|\\.slice\\'\\|\\.socket\\'\\|\\.target\\'\\|\\.timer\\'\\|\\.link\\'\\|\\.netdev\\'\\|\\.network\\'\\|\\.override\\.conf.*\\'" . systemd-mode))
(use-package yaml-mode
:mode ("\\.yaml\\'" "\\.yml\\'"))
(use-package qml-mode
:mode ("\\.qml\\'" ))
(use-package qt-pro-mode
:mode ("\\.pro\\'" "\\.pri\\'"))
(use-package org
:preface
(defun endless/org-ispell ()
"Configure `ispell-skip-region-alist' for `org-mode'."
(make-local-variable 'ispell-skip-region-alist)
(add-to-list 'ispell-skip-region-alist '(org-property-drawer-re))
(add-to-list 'ispell-skip-region-alist '("~" "~"))
(add-to-list 'ispell-skip-region-alist '("=" "="))
(add-to-list 'ispell-skip-region-alist '("^#\\+BEGIN_SRC" . "^#\\+END_SRC")))
:mode ("\\.org$" . org-mode)
:bind (("C-c l" . org-store-link)
("C-c c" . org-capture)
("C-c a" . org-agenda)
("C-c b" . org-switchb))
:hook ((org-mode . org-indent-mode)
(org-indent-mode . (lambda() (diminish 'org-indent-mode))))
:config
(add-hook 'org-mode-hook 'turn-on-flyspell)
(add-hook 'org-mode-hook #'endless/org-ispell)
(setq org-confirm-babel-evaluate nil
org-export-babel-evaluate 'inline-only)
(setq org-src-tab-acts-natively t)
(setq org-startup-with-inline-images t)
(setq org-startup-indented t)
(setq org-startup-folded t)
(setq org-return-follows-link t)
(setq org-image-actual-width 600)
(setq org-format-latex-options (plist-put org-format-latex-options :scale 2.0))
(setq org-src-fontify-natively t)
(setq org-src-preserve-indentation t)
(setq org-use-speed-commands t)
(setq org-archive-all-done t)
(setq org-deadline-warning-days 30)
(setq org-agenda-tags-column 75)
(setq org-export-with-sub-superscripts nil)
(setq org-latex-listings 'minted
org-latex-packages-alist '(("" "minted"))
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")
org-latex-minted-options '(("breaklines" "true")
("breakanywhere" "true")
("fontsize" "\\footnotesize")
("bgcolor" "white")
("obeytabs" "true")))
(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)
(gnuplot . t)
(latex . t)
(makefile . t)
(org . t)
(python . t)
(shell . t)
(C . t)
(awk . t)
(lisp . t)
(matlab . t)
(sed . t))))
(setq org-hide-emphasis-markers t)
(setq org-todo-keywords
(quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!)")
(sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)"))))
(setq org-todo-keyword-faces
(quote (("TODO" :foreground "crimson" :weight bold)
("NEXT" :foreground "yellow" :weight bold)
("DONE" :foreground "forest green" :weight bold)
("WAITING" :foreground "cyan" :weight bold)
("HOLD" :foreground "orange" :weight bold)
("CANCELLED" :foreground "forest red" :weight bold))))
(setq org-todo-state-tags-triggers
(quote (("CANCELLED" ("CANCELLED" . t))
("WAITING" ("WAITING" . t))
("NEXT" ("NEXT" . t))
("HOLD" ("WAITING") ("HOLD" . t))
(done ("WAITING") ("HOLD") ("NEXT"))
("TODO" ("WAITING") ("CANCELLED") ("HOLD") ("NEXT"))
("DONE" ("WAITING") ("CANCELLED") ("HOLD") ("NEXT")))))
(setq org-agenda-files '("~/org/inbox.org"
"~/org/repeaters.org"))
(setq org-capture-templates
'(("b" "Bookmark" entry (file "~/org/bookmarks.org")
"* %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n" :empty-lines 1)
("B" "Bookmark with Cliplink" entry (file "~/org/bookmarks.org")
"* %(org-cliplink-capture)\n:PROPERTIES:\n:CREATED: %U\n:END:\n\n" :empty-lines 1)
("t" "Todo" entry (file "~/org/inbox.org")
"* TODO %?\n%U" :empty-lines 1)
("n" "Note" entry (file "~/org/inbox.org")
"* TODO %?\n%U" :empty-lines 1)
("w" "CTW Work" entry (file "~/ctw/ctw-notes/inbox.org")
"* TODO %?\n%U" :empty-lines 1)))
(setq org-agenda-custom-commands
'(("d" "Agenda Dashboard"
((agenda ""
((org-agenda-span 'week)))
(todo "TODO"
((org-agenda-overriding-header "Unscheduled tasks")
(org-agenda-files '("~/org/todo.org"))
(org-agenda-skip-function '(org-agenda-skip-entry-if 'scheduled 'deadline))
))
(todo "TODO"
((org-agenda-overriding-header "Inbox tasks")
(org-agenda-files '("~/org/inbox.org"))
(org-agenda-skip-function '(org-agenda-skip-entry-if 'scheduled 'deadline))))))))
(setq org-default-notes-file (concat org-directory "~/org/inbox.org"))
(setq org-refile-targets '(("~/org/inbox.org" :level . 1)))
Handle bookmark capture links.
(use-package org-cliplink
:commands (org-cliplink))
(use-package org-tempo
:ensure nil
:after org
:config
(add-to-list 'org-structure-template-alist '("se" . "src emacs-lisp"))
(add-to-list 'org-structure-template-alist '("sm" . "src markdown"))
(add-to-list 'org-structure-template-alist '("sp" . "src python"))
(add-to-list 'org-structure-template-alist '("ss" . "src sh")))
(use-package org-contrib
:after org
:config
(require 'ox-confluence))
(use-package ob-async
:after org
:config (require 'ob-async))
(use-package htmlize
:after org
:config (require 'htmlize))
(use-package ox-beamer
:ensure org
:after ox
:config
(add-to-list 'org-latex-classes
'("beamer"
"\\documentclass\[presentation\]\{beamer\}"
("\\section\{%s\}" . "\\section*\{%s\}")
("\\subsection\{%s\}" . "\\subsection*\{%s\}")
("\\subsubsection\{%s\}" . "\\subsubsection*\{%s\}"))))
(use-package ox-gfm
:after ox
:config (require 'ox-gfm nil t))
(use-package ox-jira
:after ox)
- https://superuser.com/questions/695096/how-to-enable-flyspell-in-org-mode-by-default
- https://endlessparentheses.com/ispell-and-org-mode.html
- http://doc.norang.ca/org-mode.html
- https://orgmode.org/manual/Tracking-TODO-state-changes.html#Tracking-TODO-state-changes
- https://emacs.cafe/emacs/orgmode/gtd/2017/06/30/orgmode-gtd.html
(use-package vterm
:bind
("C-x t" . vterm))
(use-package mmm-mode
:defer t
:diminish mmm-mode)
(use-package bitbake-modes
:load-path "~/src/bitbake-modes/")
https://bitbucket.org/olanilsson/bitbake-modes/src/master/ http://xemacs.sourceforge.net/Documentation/packages/html/mmm_toc.html#SEC_Contents
(use-package python
:ensure nil
:config
(setq python-ts-mode-hook python-mode-hook))
(use-package sh-script
:ensure nil
:config
(setq bash-ts-mode-hook sh-mode-hook))
(use-package pdf-tools
:magic ("%PDF" . pdf-view-mode)
:if window-system
:config
(pdf-tools-install :no-query)
(setq-default pdf-view-display-size 'fit-page)
(setq pdf-annot-activate-created-annotations t)
(define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward)
(add-hook 'pdf-view-mode-hook (lambda () (cua-mode 0)))
(setq pdf-view-resize-factor 1.1)
(define-key pdf-view-mode-map (kbd "h") 'pdf-annot-add-highlight-markup-annotation)
(define-key pdf-view-mode-map (kbd "t") 'pdf-annot-add-text-annotation)
(define-key pdf-view-mode-map (kbd "D") 'pdf-annot-delete))
(use-package markdown-mode
:mode
(("README\\.md\\'" . gfm-mode)
("\\.md\\'" . markdown-mode)
("\\.markdown\\'" . markdown-mode))
:config
(setq markdown-ts-mode-hook markdown-mode-hook)
(setq markdown-command "multimarkdown")
(setq-default fill-column 80))
Yafolding - Yet another folding extension for Emacs
(use-package yafolding
:hook ((prog-mode . yafolding-mode)
(conf-mode . yafolding-mode))
:bind ("C-<tab>" . yafolding-toggle-element))
(use-package rg)