Last active
October 1, 2021 12:59
-
-
Save Gijs-Koot/a33ac9344340529406c2550857c91580 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defvar gh-publish-base-dir "~/Documents/project/Gijs-Koot.github.io/" | |
"Base directory of publishing project") | |
(defun gh-publish-fix-image-links (fn) | |
(with-temp-file fn | |
(progn | |
(insert-file-contents fn) | |
(goto-char (point-min)) | |
(while (re-search-forward "src=\"\\(images/[a-z]+\.[a-z]+\\)\"" nil t) | |
(replace-match (concat "src=\"/assets/" (match-string 1) "\""))) | |
))) | |
(defun gh-publish-hook-fix-image-links (orig-fn produced-fn) | |
(message (concat "Fixing links in " produced-fn)) | |
(gh-publish-fix-image-links produced-fn) | |
) | |
(define-minor-mode gh-publish-mode | |
"Helper stuff for publishing to blog" | |
:lighter " GH" | |
:keymap `((,(kbd "C-q C-p") . org-publish-all)) | |
(if gh-publish-mode | |
(add-hook | |
'org-publish-after-publishing-hook 'gh-publish-hook-fix-image-links) | |
(remove-hook 'org-publish-after-publishing-hook 'gh-publish-hook-fix-image-links) | |
) | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; BASE CUSTOMIZATION | |
(setq inhibit-startup-message t) | |
(tool-bar-mode -1) | |
(menu-bar-mode -1) | |
(global-set-key (kbd "\C-cb") 'browse-url-at-point) | |
(global-set-key (kbd "<f5>") 'revert-buffer) | |
(setq backup-directory-alist `(("." . "~/.emacs.d/backups"))) | |
;; UTF-8 support - see http://www.skybert.net/emacs/how-to-get-unicode-in-the-terminal/ | |
(prefer-coding-system 'utf-8) | |
(set-default-coding-systems 'utf-8) | |
(set-terminal-coding-system 'utf-8) | |
(set-keyboard-coding-system 'utf-8) | |
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)) | |
(setq-default left-margin-width 1 right-margin-width 1) | |
(delete-selection-mode 1) | |
(add-hook 'prog-mode-hook 'display-line-numbers-mode) | |
(add-hook 'image-mode-hook 'auto-revert-mode) | |
(ido-mode t) | |
(setq ido-everywhere t) | |
(setq ido-enable-flex-matching t) | |
(set-frame-font "Hack") | |
(setq sql-connection-alist | |
'(("octocvdb" | |
(sql-product 'postgres) | |
(sql-user "octocvdb-dev") | |
(sql-database "octocvdb") | |
(sql-server "woco.c0ua58qw1jej.eu-central-1.rds.amazonaws.com")))) | |
;; PACKAGES | |
(require 'package) | |
(setq package-archives | |
'(("gnu" . "http://elpa.gnu.org/packages/") | |
("org" . "http://orgmode.org/elpa/") | |
("melpa" . "http://melpa.org/packages/") | |
("melpa-stable" . "http://stable.melpa.org/packages/")) | |
package-archive-priorities '(("melpa-stable" . 1))) | |
(package-initialize) | |
(when (not package-archive-contents) | |
(package-refresh-contents) | |
(package-install 'use-package)) | |
;; USE-PACKAGE | |
(require 'use-package) | |
(use-package nano-theme | |
:ensure t) | |
(use-package python | |
:ensure t | |
;; :hook (python-mode . lsp-deferred) | |
:custom | |
(python-shell-interpreter "ipython3") | |
(python-shell-interpreter-args "-i --simple-prompt") | |
;; (dap-python-executable "python3") | |
;; (dap-python-debugger 'debugpy) | |
:config | |
;; (require 'dap-python) | |
) | |
(use-package ob-ess-julia | |
:ensure t | |
:config | |
;; Add ess-julia into supported languages: | |
(org-babel-do-load-languages 'org-babel-load-languages | |
(append org-babel-load-languages | |
'((ess-julia . t)))) | |
;; Link this language to ess-julia-mode (although it should be done by default): | |
(setq org-src-lang-modes | |
(append org-src-lang-modes '(("ess-julia" . ess-julia))))) | |
(use-package ob-ipython | |
:ensure t) | |
(use-package org | |
:ensure org-plus-contrib | |
:config | |
(setq org-confirm-babel-evaluate nil) | |
(setq org-log-done 'time) | |
(setq org-agenda-include-diary nil) | |
(org-babel-do-load-languages | |
'org-babel-load-languages | |
'((shell . t) | |
(python . t) | |
(ipython . t) | |
(julia . t) | |
)) | |
:bind ("C-c a" . 'org-agenda) | |
:hook (org-babel-after-execute-hook . org-redisplay-inline-images)) | |
(use-package org-roam | |
:ensure t | |
:init | |
(setq org-roam-directory "~/Documents/notes/roam") | |
:hook (after-init . org-roam-mode) | |
) | |
(use-package ox-reveal | |
:ensure t | |
:config | |
(setq org-reveal-root "https://revealjs.com/") | |
) | |
(use-package elpy | |
:ensure t | |
:init | |
(pyvenv-mode 1) | |
(pyvenv-tracking-mode 1) | |
:config | |
(setq python-check-command "black") | |
;; (setq python-shell-interpreter "ipython" | |
;; python-shell-interpreter-args "console --simple-prompt" | |
;; python-shell-prompt-regexp "In \\[[0-9]+\\]: " | |
;; python-shell-prompt-output-regexp "Out\\[[0-9]+\\]: " | |
;; python-shell-prompt-detect-failure-warning nil) | |
;; (add-to-list 'python-shell-completion-native-disabled-interpreters | |
;; "jupyter") | |
(setq elpy-rpc-python-command "python3") | |
(setq elpy-test-runner 'elpy-test-pytest-runner) | |
;; :hook (python-mode . elpy-enable) | |
;; :hook (python-mode . pyvenv-mode) | |
) | |
(use-package multiple-cursors :ensure t) | |
(use-package yaml-mode :ensure t) | |
(use-package company | |
:ensure t | |
:after lsp-mode) | |
(use-package company-quickhelp | |
:ensure t | |
:config (company-quickhelp-mode)) | |
(use-package json-mode :ensure t) | |
(use-package magit :ensure t) | |
(use-package window-numbering | |
:ensure t | |
:hook (after-init . window-numbering-mode)) | |
(use-package expand-region | |
:ensure t | |
:bind ("C-=" . er/expand-region)) | |
(use-package smartparens-config | |
;; see https://ebzzry.io/en/emacs-pairs/ | |
:ensure smartparens | |
:config (progn (show-smartparens-global-mode t) (smartparens-global-mode t)) | |
:hook (inferior-python-mode-hook . turn-off-smartparens-mode) | |
) | |
(use-package which-key | |
:ensure t | |
:config (which-key-mode)) | |
(use-package modus-themes | |
:ensure t) | |
(use-package doom-themes | |
:ensure t | |
:config | |
(setq custom-safe-themes | |
'("b35a14c7d94c1f411890d45edfb9dc1bd61c5becd5c326790b51df6ebf60f402" "f0dc4ddca147f3c7b1c7397141b888562a48d9888f1595d69572db73be99a024" "6b2636879127bf6124ce541b1b2824800afc49c6ccd65439d6eb987dbf200c36" default))) | |
(use-package doom-modeline | |
:ensure t | |
:hook (after-init . doom-modeline-mode)) | |
(use-package projectile | |
:ensure t | |
:custom | |
((projectile-completion-system 'ivy)) | |
:config | |
(define-key projectile-mode-map (kbd "C-x p") 'projectile-command-map) | |
(projectile-mode 1) | |
(setq projectile-switch-project-action 'projectile-dired) | |
(setq projectile-globally-ignored-directories | |
'(".git" "venv"))) | |
(use-package counsel-projectile | |
:ensure t | |
:config (counsel-projectile-mode)) | |
(use-package dashboard | |
:ensure t | |
:config | |
(dashboard-setup-startup-hook) | |
:init | |
(progn | |
(setq dashboard-items '((recents . 10) (projects 5) (bookmarks 3) (agenda 10)) | |
))) | |
(use-package treemacs :ensure t | |
:bind (:map global-map ([f8] . treemacs)) | |
:init | |
(defun treemacs-custom-filter (file _) | |
(or (s-ends-with? ".pyc" file) | |
(string= "__pycache__" file) | |
(string= ".vscode" file) | |
(string= "venv" file) | |
(string= ".venv" file) | |
(s-ends-with? "egg-info" file) | |
(string= ".pytest_cache" file) | |
)) | |
:config | |
(push #'treemacs-custom-filter treemacs-ignored-file-predicates)) | |
(use-package lsp-mode | |
:ensure t | |
:commands lsp | |
:config | |
(setq lsp-completion-enable nil) | |
) | |
(use-package lsp-ui | |
:ensure t) | |
(use-package lsp-julia | |
:ensure t | |
:config | |
(setq lsp-julia-default-environment "~/.julia/environments/v1.5")) | |
(use-package julia-repl | |
:ensure t | |
:config | |
:hook (julia-mode-hook . julia-repl-mode)) | |
(use-package vterm | |
:ensure t | |
:bind (:map global-map ("C-x t" . 'vterm))) | |
(use-package counsel | |
:ensure t | |
:init | |
(ivy-mode 1) | |
(counsel-mode 1) | |
:bind (:map global-map ("C-x C-f" . 'counsel-find-file) | |
("C-s" . 'swiper)) | |
) | |
(use-package pdf-tools | |
:ensure t | |
:config | |
(pdf-tools-install) | |
:hook (pdf-view-mode-hook 'image-mode)) | |
(use-package excorporate | |
:ensure t | |
:config | |
(setq excorporate-configuration (quote ("[email protected]" . "https://outlook.office365.com/EWS/Exchange.asmx")))) | |
(load "~/.emacs.d/agenda-files") | |
(load "~/.emacs.d/gh-publish") | |
(put 'downcase-region 'disabled nil) | |
;; notifications | |
(use-package notifications) | |
(defvar pommodoro-timeout "10" "Duration of a pommodoro timer") | |
(defvar pommodoro-current-timer nil "The current pommodoro timer") | |
(defun pommodoro--notify (message) | |
"Notify of a message" | |
(shell-command | |
(format "notify-send -i messagebox_info -u critical 'Pommodoro done' %s" message))) | |
(defun pommodoro--set-timer (message seconds) | |
"Set a timer for a message" | |
(setq pommodoro-current-timer | |
(run-at-time seconds nil #'pommodoro-notify message))) | |
(defun pommodoro--check-timer () | |
;; TODO I think this is broken | |
(if (and pommodoro-current-timer (time-less-p (current-time) | |
(timer--time pommodoro-current-timer))) | |
(if (yes-or-no-p "There is a current pommodoro running, do you want to cancel it? ") | |
(cancel-timer pommodoro-current-timer) (throw 'cancel t)))) | |
(defun pommodoro-start-timer () | |
"Start a pommodoro timer which shows a notification after 25 minutes" | |
(interactive) | |
(catch 'cancel | |
(progn | |
;; TODO add timer check | |
(pommodoro--set-timer (read-string "Task description: ") (* 25 60))))) | |
(defun pommodoro-show-timer () | |
(interactive) | |
(message "Pommodoro done at %s" | |
(format-time-string "%T" (timer--time pommodoro-current-timer)))) | |
(global-set-key (kbd "<f2>") #'pommodoro-start-timer) | |
(global-set-key (kbd "<f3>") #'pommodoro-show-timer) | |
(custom-set-variables | |
;; custom-set-variables 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. | |
'(custom-safe-themes | |
'("fe666e5ac37c2dfcf80074e88b9252c71a22b6f5d2f566df9a7aa4f9bea55ef8" "bde7af9e749d26cbcbc3e3ac2ac9b13d52aa69b6148a8d6e5117f112f2797b42" "96c56bd2aab87fd92f2795df76c3582d762a88da5c0e54d30c71562b7bf9c605" "1c082c9b84449e54af757bcae23617d11f563fc9f33a832a8a2813c4d7dfb652" "93a0885d5f46d2aeac12bf6be1754faa7d5e28b27926b8aa812840fe7d0b7983" "3a3de615f80a0e8706208f0a71bbcc7cc3816988f971b6d237223b6731f91605" "ecba61c2239fbef776a72b65295b88e5534e458dfe3e6d7d9f9cb353448a569e" "d2e9c7e31e574bf38f4b0fb927aaff20c1e5f92f72001102758005e53d77b8c9" "b54826e5d9978d59f9e0a169bbd4739dd927eead3ef65f56786621b53c031a7c" "a3fa4abaf08cc169b61dea8f6df1bbe4123ec1d2afeb01c17e11fdc31fc66379" "b35a14c7d94c1f411890d45edfb9dc1bd61c5becd5c326790b51df6ebf60f402" "f0dc4ddca147f3c7b1c7397141b888562a48d9888f1595d69572db73be99a024" "6b2636879127bf6124ce541b1b2824800afc49c6ccd65439d6eb987dbf200c36" default)) | |
'(package-selected-packages | |
'(nano-theme nano-emacs modus-themes ob-ess-julia ob-julia ox-publish python-mode modus-vivendi-theme ewal-doom-themes counsel-projectile ob-ipython excorporate htmlize org-tempo ox-reveal org-roam wgrep pdf-tools yaml-mode window-numbering which-key vterm virtualenv use-package smartparens org-plus-contrib multiple-cursors magit lsp-ui lsp-julia julia-repl json-mode expand-region elpy doom-themes doom-modeline dashboard counsel company-quickhelp)) | |
'(safe-local-variable-values | |
'((org-publish-project-alist | |
("org-posts" :base-directory "/home/gijs/Documents/project/Gijs-Koot.github.io/_org" :base-extension "org" :publishing-directory "/home/gijs/Documents/project/Gijs-Koot.github.io/" :publishing-function org-html-publish-to-html :body-only t :html-extension "md" :recursive t) | |
("org-images" :base-directory "/home/gijs/Documents/project/Gijs-Koot.github.io/_org/_posts/images" :base-extension "png\\|jpg" :publishing-directory "/home/gijs/Documents/project/Gijs-Koot.github.io/assets/images" :recursive t :publishing-function org-publish-attachment)) | |
(eval progn | |
(setq pyvenv-activate | |
(concat | |
(projectile-project-root) | |
".venv")) | |
(elpy-enable)) | |
(eval progn | |
(message "Hello") | |
(setq pyvenv-activate | |
(concat | |
(projectile-project-root) | |
".venv")) | |
(elpy-enable) | |
(message "Done")) | |
(eval progn | |
(message "Hello") | |
(setq pyvenv-activate | |
(concat | |
(projectile-project-root) | |
".venv")) | |
(message "Done")) | |
(eval progn | |
(message "Hello") | |
(setq pyvenv-activate | |
(concat | |
(projectile-project-root) | |
".venv"))) | |
(eval progn | |
(setq pyvenv-activate | |
(concat | |
(projectile-project-root) | |
".venv"))) | |
(eval setq pyvenv-activate | |
(concat | |
(projectile-project-root) | |
".venv")) | |
(pyvenv-activate . ~/Documents/woco-model-training/venv) | |
(pyvenv-activate quote venv) | |
(projectile-project-test-cmd . pytest) | |
(eval setq pyvenv-activate | |
(concat | |
(projectile-project-root) | |
"venv"))))) | |
(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. | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment