Skip to content

Instantly share code, notes, and snippets.

@dustinlacewell-wk
Created January 11, 2018 20:28
Show Gist options
  • Save dustinlacewell-wk/9c8f927838a997fbeefd64ba3494a978 to your computer and use it in GitHub Desktop.
Save dustinlacewell-wk/9c8f927838a997fbeefd64ba3494a978 to your computer and use it in GitHub Desktop.
(require 'org-build)
(defun knowt-elisp-directory ()
(concat (getenv "KNOWT_SOURCE_DIRECTORY") "elisp/"))
(message (format "knowt-elisp-directory: %s" (knowt-elisp-directory)))
(defun user-init-file () (concat (knowt-elisp-directory) "elisp" "init.el"))
(message (format "user-init-file: %s" (user-init-file)))
(defun knowt-user-directory ()
(file-name-as-directory (or (getenv "KNOWT_USER_DIRECTORY") (expand-file-name "~/.knowt/"))))
(message (format "knowt-user-directory: %s" (knowt-user-directory)))
(defun knowt-emacs-directory ()
(file-name-as-directory (concat (knowt-user-directory) ".emacs.d/")))
(message (format "knowt-emacs-directory: %s" (knowt-emacs-directory)))
(defun knowt-emacs-file (filename)
(concat (knowt-emacs-directory) (file-name-nondirectory filename)))
(message (format "knowt-emacs-file: %s" (knowt-emacs-file "FOO")))
(defun knowt-user-file (filename)
(concat (knowt-user-directory) (file-name-nondirectory filename)))
(message (format "knowt-user-file: %s" (knowt-user-file "FOO")))
(defun knowt-mode-el-file ()
(concat (knowt-emacs-directory) "knowt-mode.el"))
(message (format "knowt-mode-el-file: %s" (knowt-mode-el-file)))
(defun knowt-user-org-file ()
(concat (knowt-emacs-directory) "init.org"))
(message (format "knowt-user-org-file: %s" (knowt-user-org-file)))
(defun knowt-user-el-file ()
(concat (knowt-emacs-directory) "init.el"))
(message (format "knowt-user-el-file: %s" (knowt-user-el-file)))
(defun knowt-build-el-file ()
(concat (knowt-elisp-directory) "org-build.el"))
(message (format "knowt-build-el-file: %s" (knowt-build-el-file)))
(defun knowt-org-file ()
(concat (knowt-user-directory) "knowt.org"))
(message (format "knowt-org-file: %s" (knowt-org-file)))
(defun knowt-build-custom-org ()
(org-build (knowt-user-org-file) (knowt-user-el-file)))
(defun knowt-build-custom ()
(if (file-exists-p (knowt-user-org-file))
(progn
(knowt-build-custom-org)
(if (file-exists-p (knowt-user-el-file))
(load-file (knowt-user-el-file))))))
(defun knowt-reload ()
(unload-feature 'knowt-mode)
(message (format "WTFFF %s" (knowt-mode-el-file)))
(load-file (knowt-mode-el-file))
(knowt-mode 1))
(defun knowt-reset ()
(delete-other-windows)
(switch-to-buffer "knowt.org")
(widen)
(org-mode-restart)
(org-global-cycle 1)
(beginning-of-buffer)
(search-forward "* Knowt Help")
(org-cycle)
(beginning-of-buffer)
(knowt-reload))
(defun knowt-check-bookmark ()
(if (org-entry-get nil "url")
(browse-url (org-entry-get nil "url"))))
(defun narrow-to-subtree ()
(org-narrow-to-subtree)
(beginning-of-buffer)
(outline-hide-subtree)
(outline-show-children)
(org-show-entry)
(knowt-check-bookmark))
(defun knowt-narrow-regexp (term)
(beginning-of-buffer)
(search-forward-regexp (format "^[\\*].*%s" term))
(knowt-narrow-to-subtree))
(defun knowt-narrow-occur ()
(helm-occur)
(knowt-narrow-to-subtree))
(defun knowt-narrow-heading ()
(helm-org-in-buffer-headings)
(outline-hide-subtree)
(knowt-narrow-to-subtree))
(define-minor-mode knowt-mode
"Provide functions useful for knowt.org"
:lighter " Knowt"
:keymap (let ((map (make-sparse-keymap)))
(global-set-key (kbd "<f19> <f19>") (lambda () (interactive) (knowt-reset)))
(global-set-key (kbd "<f19> m")
(lambda () (interactive)
(find-file-other-window (knowt-mode-org-file))))
(define-key map (kbd "M-n") 'outline-next-visible-heading)
(define-key map (kbd "M-p") 'outline-previous-visible-heading)
(define-key map (kbd "M-N") 'outline-next-heading)
(define-key map (kbd "M-P") 'outline-previous-heading)
(define-key map (kbd "<f19> s") (lambda () (interactive) (knowt-narrow-occur)))
(define-key map (kbd "<f19> h") (lambda () (interactive) (knowt-narrow-heading)))
(define-key map (kbd "<f19> n") (lambda () (interactive) (knowt-narrow-to-subtree)))
(define-key map (kbd "<f19> t") 'org-show-todo-tree)
(define-key map (kbd "<f19> a") 'org-agenda)
map)
:after-hook (progn
(setq ace-jump-helm-line-default-action 'select)
(setq org-confirm-elisp-link-function nil)
(setq org-confirm-shell-link-function nil)
(setq org-agenda-files (list (knowt-org-file)))
(setq org-agenda-sorting-strategy '(todo-state-up priority-down effort-up))
(message "knowt-mode ready!")))
(provide 'knowt-mode)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment