diff --git a/backup/config.el b/backup/config.el new file mode 100644 index 0000000..c027f4d --- /dev/null +++ b/backup/config.el @@ -0,0 +1,271 @@ +;;; .doom.d/config.el -*- lexical-binding: t; -*- + +;; Place your private configuration here + +(setq user-full-name "KahrKunne" + user-mail-address "kahr.kunne@gmail.com" + backup-directory-alist '(("~/.emacs.d/backups")) + delete-old-versions nil + version-control t + vc-make-backup-files nil + auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list" t)) + savehist-file "~/.emacs.d/savehist" + require-final-newline t + global-auto-revert-mode t + global-auto-revert-non-file-buffers t + auto-revert-verbose nil + custom-safe-themes t) + +(add-hook 'term-mode-hook 'toggle-truncate-lines) +(fset 'yes-or-no-p 'y-or-n-p) + +(defadvice projectile-project-root (around ignore-remote first activate) + (unless (file-remote-p default-directory) ad-do-it)) + +(setq web-mode-script-padding 0 + js-indent-level 2 + js2-strict-missing-semi-warning nil) + +(setq avy-all-windows nil) +(setq avy-timeout-seconds 0.2) +(setq avy-keys '(?a ?s ?d ?f ?k ?l ?; ?g ?h + ?q ?w ?e ?r ?t ?y ?i ?p + ?A ?S ?D ?F ?J ?K ?L)) +(define-key evil-normal-state-map (kbd "C-.") #'avy-goto-char-timer) +(setq aw-keys '(?a ?s ?d ?f ?k ?l ?; ?g ?h + ?q ?w ?e ?r ?t ?y ?i ?p + ?A ?S ?D ?F ?J ?K ?L)) + +(define-key evil-normal-state-map (kbd ";") 'evil-ex) +(define-key evil-normal-state-map (kbd "g a") 'paste-above) +(define-key evil-normal-state-map (kbd "g p") 'paste-below) + + +(setq ivy-height 10 + ivy-count-format "(%d/%d) " + ivy-use-virtual-buffers t + ivy-re-builders-alist '((t . ivy--regex-ignore-order)) + ivy-initial-inputs-alist '((org-refile . "") + (org-capture-refile . "") + (counsel-M-x . "") + (counsel-describe-function . "") + (counsel-describe-variable . "") + (man . "") + (woman . ""))) + +(defun my-web-mode-hook () + (setq web-mode-markup-indent-offset 2) + (setq web-mode-code-indent-offset 2) + (setq web-mode-css-indent-offset 2)) +(add-hook 'web-mode-hook 'my-web-mode-hook) + +(require 'key-chord) +(key-chord-mode t) +(key-chord-define evil-insert-state-map "jj" 'evil-normal-state) + + +(set-frame-font "Mononoki 22" nil t) + +(global-set-key (kbd "C-s") #'swiper) + +(which-key-mode 1) +(setq which-key-idle-delay 0.25) + +(setq treemacs--width-is-locked nil) + + ;(centaur-tabs-mode 0) + ;(setq centaur-tabs-style "bar") + ;(setq centaur-tabs-modified-marker "*") + ;(setq centaur-tabs-set-bar 'left) + ; + ;(centaur-tabs-change-fonts "Mononoki" 120) + ;(centaur-tabs-group-by-projectile-project) + +(setq doom-theme 'doom-old-hope) + +(display-time-mode 1) + + +(global-set-key (kbd "C-x C-f") #'counsel-find-file) +(map! :leader + "." #'counsel-find-file) + +(after! evil (evil-escape-mode nil)) + +(setq ivy-read-action-function #'ivy-hydra-read-action) + +(defun my:is-end-of-line () + "Compare point with end of line." + (let* ((pos (current-column)) + (end-pos (save-excursion + (evil-end-of-line) + (current-column)))) + (eq pos end-pos))) + +(defun my:compare-with-end-of-word () + "Compare point with end of word." + (let* ((pos (current-column)) + (end-pos (save-excursion + (evil-backward-word-begin) + (evil-forward-word-end) + (current-column)))) + (- pos end-pos))) + +(defun my:point-is-space () + "Check if point is whitespace." + (char-equal ?\s (char-after))) + +(defun my:insert-after (func) + "Run FUNC after the end of word, ignoring whitespace." + (interactive) + (let ((relative-loc (my:compare-with-end-of-word))) + (cond ((my:is-end-of-line) + (end-of-line) + (call-interactively func)) + ((eq 0 relative-loc) + (evil-forward-char) + (call-interactively func)) + ((and (> 0 relative-loc) (not (my:point-is-space))) + (evil-forward-word-end) + (if (my:is-end-of-line) + (end-of-line) + (evil-forward-char)) + (call-interactively func)) + (t + (call-interactively func))))) + +(setq mouse-autoselect-window t + focus-follows-mouse t) + +(add-to-list 'auto-mode-alist '("\\.tsx\\'" . typescript-mode)) + +(setq lsp-enable-links nil) + + +(require 'ox-publish) + +(defun blog/get-util (x) + (with-temp-buffer + (insert-file-contents (concat "~/Blog/util/" + x)) + (buffer-string))) + +(setq org-html-metadata-timestamp-format "%Y-%m-%d") +;; Get project settings +(defun akko/blog-spec () + "Return project settings for use with `org-publish-project-alist'." + (let* ((html-head (blog/get-util "head.html")) + (html-preamble (blog/get-util "preamble.html")) + (html-postamble (blog/get-util "postamble.html"))) + + + `( + ("pages" + :base-directory "~/Blog/org" + :base-extension "org" + :recursive t + :publishing-directory "~/Blog/html" + :publishing-function org-html-publish-to-html + + :html-doctype "html5" + :html-html5-fancy t + + :html-viewport ((width "100%") + (initial-scale "0.7") + (minimum-scale "") + (maximum-scale "") + (user-scalable "")) + + :language "en" + :section-numbers nil + + :with-toc nil + :with-date t + :with-title nil + :with-author nil + + :auto-sitemap t + + :sitemap-sort-files anti-chronologically + :sitemap-format-entry + (lambda (entry style project) + (cond ((not (directory-name-p entry)) + (format + "[[file:%s][%s]]\n" + entry + (org-publish-find-title entry project))) + ((eq style 'tree) + (capitalize (file-name-nondirectory (directory-file-name entry)))) + (t entry))) + + :headline-levels 4 + :html-head ,html-head + + :html-preamble ,html-preamble + :html-postamble (lambda (p) + (let* ((timestamp-format (plist-get p :html-metadata-timestamp-format)) + (date (org-export-data (org-export-get-date p timestamp-format) + p)) + (file (plist-get p :input-file)) + (modified (format-time-string + timestamp-format + (and file (file-attribute-modification-time + (file-attributes file)))))) + (concat + "
")))) + + ("static" + :base-directory "~/Blog/static" + :base-extension "css\\|txt\\|jpg\\|gif\\|png\\|ttf" + :recursive t + :publishing-directory "~/Blog/html/static" + :publishing-function org-publish-attachment) + + ("blog" :components ("pages" "static"))))) + + (setq org-publish-project-alist (akko/blog-spec)) + +(defun akko/publish-blog () + (interactive) + (setq org-publish-project-alist (akko/blog-spec)) + (org-publish-all)) + +(defun akko/force-publish-blog () + (interactive) + (setq org-publish-project-alist (akko/blog-spec)) + (org-publish-remove-all-timestamps) + (org-publish-all)) + +(map! :leader + (:prefix ("a" . "akko") + :desc "Publish Blog" + "b" #'akko/publish-blog + "f" #'akko/force-publish-blog)) + +(setq org-html-htmlize-output-type 'css) +(setq org-html-htmlize-font-prefix "org-") + +(set-file-template! "/Blog/org/posts/.+\\.org" + :trigger "__blog") + +(defun akko/org-current-time-string () + (with-temp-buffer + (org-mode) + (org-time-stamp '(16)) + (buffer-substring (point-min) (point-max)))) + +(add-to-list 'auto-mode-alist '("\\.tsx\\'" . typescript-tsx-mode)) + +(setq auto-mode-alist + (append '(("\\.tsx\\'" . typescript-tsx-mode)) + auto-mode-alist)) + +; XXX this will make doom create new files with ipython shebang - bad! +(setq python-shell-interpreter "ipython" + python-shell-interpreter-args "-i --simple-prompt") +(setq python-shell-completion-native-disabled-interpreters '("ipython")) diff --git a/backup/custom.el b/backup/custom.el new file mode 100644 index 0000000..7d3c84f --- /dev/null +++ b/backup/custom.el @@ -0,0 +1,25 @@ +(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. + '(org-agenda-files '("~/org/tasks.org" "~/todo.org")) + '(package-selected-packages + '(polymode fish-mode solidity-mode yaml-mode bison-mode graphql-mode arduino-mode gdscript-mode speed-type ivy-posframe lsp-haskell treemacs key-chord)) + '(warning-suppress-log-types + '((lsp-completion-mode-hook) + (lsp-completion-mode-hook) + (lsp-on-idle-hook) + (lsp-on-idle-hook))) + '(warning-suppress-types + '((lsp-completion-mode-hook) + (lsp-on-idle-hook) + (lsp-on-idle-hook)))) +(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. + ) +(put 'downcase-region 'disabled nil) +(put 'upcase-region 'disabled nil) diff --git a/backup/init.el b/backup/init.el new file mode 100644 index 0000000..295739d --- /dev/null +++ b/backup/init.el @@ -0,0 +1,186 @@ +;;; init.el -*- lexical-binding: t; -*- + +;; Copy this file to ~/.doom.d/init.el or ~/.config/doom/init.el ('doom install' +;; will do this for you). The `doom!' block below controls what modules are +;; enabled and in what order they will be loaded. Remember to run 'doom refresh' +;; after modifying it. +;; +;; More information about these modules (and what flags they support) can be +;; found in modules/README.org. + +(doom! :input + ;;chinese + ;;japanese + + :completion + company ; 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 + +prescient + +icons) + + :checkers + syntax + + :ui + ;;deft ; notational velocity for Emacs + doom ; what makes DOOM look the way it does + doom-dashboard ; a nifty splash screen for Emacs + doom-quit ; DOOM quit-message prompts when you quit Emacs + ;;fill-column ; a `fill-column' indicator + hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW + ;;hydra + ;;indent-guides ; highlighted indent columns + modeline ; snazzy, Atom-inspired modeline, plus API + nav-flash ; blink the current line after jumping + ;;neotree ; a project drawer, like NERDTree for vim + ophints ; highlight the region an operation acts on + (popup ; tame sudden yet inevitable temporary windows + +all ; catch all popups that start with an asterix + +defaults) ; default popup rules + ;;pretty-code ; replace bits of code with pretty symbols +; tabs ; an tab bar for Emacs + treemacs ; a project drawer, like neotree but cooler + unicode ; extended unicode support for various languages + vc-gutter ; vcs diff in the fringe + vi-tilde-fringe ; fringe tildes to mark beyond EOB + window-select ; visually switch windows + workspaces ; tab emulation, persistence & separate workspaces + + :editor + (evil +everywhere); come to the dark side, we have cookies + file-templates ; auto-snippets for empty files + fold ; (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 pFalseython, sort of + rotate-text ; cycle region at point between text candidates + snippets ; my elves. They type so I don't have to + ;;word-wrap ; soft wrapping with language-aware indent + + :emacs + (dired ; making dired pretty [functional] + +icons) + electric ; smarter, keyword-based electric-indent + undo + (ibuffer ; interactive buffer management + +icons) + vc ; version-control and Emacs, sitting in a tree + + :term + eshell ; a consistent, cross-platform shell (WIP) + ;;shell ; a terminal REPL for Emacs + ;;term ; terminals in Emacs + vterm ; another terminals in Emacs + + :tools + lookup + ;;ansible + ;;debugger ; FIXME stepping through code, to help you add bugs + ;;direnv + ;;docker + editorconfig ; let someone else argue about tabs vs spaces + ein ; tame Jupyter notebooks with emacs + (eval +overlay) ; run code, run (also, repls) + flycheck ; tasing you for every semicolon you forget + ;;flyspell ; tasing you for misspelling mispelling + ;;gist ; interacting with github gists + (lookup ; helps you navigate your code and documentation + +docsets + +dictionary + +offline) ; ...or in Dash docsets locally + (lsp + +eglot) + ;;macos ; MacOS-specific commands + magit ; a git porcelain for Emacs + ;;make ; run make tasks from Emacs + ;;pass ; password manager for nerds + pdf ; pdf enhancements + ;;prodigy ; FIXME managing external services & code builders + ;;rgb ; creating color strings + ;;terraform ; infrastructure as code + ;;tmux ; an API for interacting with tmux + ;;upload ; map local to remote projects via ssh/ftp + ;;wakatime + + :lang + ;;agda ; types of types of types of types... + ;;assembly ; assembly for fun or debugging + 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 + ;;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 + ;;go ; the hipster dialect + (haskell +lsp) ; a language that's lazier than I am + hy ; readability of scheme w/ speed of python + ;;idris ; + ;;(java +meghanada) ; the poster child for carpal tunnel syndrome + (javascript +lsp) ; 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 + ;;ledger ; an accounting system in Emacs + lua ; one-based indices? one-based indices + markdown ; 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 + ;;+journal + +dragndrop ; drag & drop files/images into org buffers + ;;+hugo ; use Emacs for hugo blogging + +ipython ; ipython/jupyter support for babel + +pandoc ; export-with-pandoc support + ;;+pomodoro ; be fruitful with the tomato technique + +present) ; using org-mode for presentations + ;;perl ; write code no one else can comprehend + ;;php ; perl's insecure younger brother + ;;plantuml ; diagrams for confusing people more + ;;purescript ; javascript, but functional + (python ; beautiful is better than ugly + +lsp) + qt ; the 'cutest' gui framework ever + racket ; a DSL for DSLs + ;;rest ; Emacs as a REST client + ;;rst ; ReST in peace + ;;ruby ; 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 lisps + (sh +fish +lsp) ; she sells {ba,z,fi}sh shells on the C xor + solidity ; do you need a blockchain? No. + ;;swift ; who asked for emoji variables? + ;;terra ; Earth and Moon in alignment for performance. + web ; the tubes + + :email + ;;(mu4e +gmail) + ;;notmuch + ;;(wanderlust +gmail) + + :app + ;;calendar + irc ; how neckbeards socialize + ;;(rss +org) ; emacs as an RSS reader + ;;twitter ; twitter client https://twitter.com/vnought + ;;write ; emacs for writers (fiction, notes, papers, etc.) + + :config + ;;literate + (default +bindings +smartparens) + ) diff --git a/backup/packages.el b/backup/packages.el new file mode 100644 index 0000000..5fe6d79 --- /dev/null +++ b/backup/packages.el @@ -0,0 +1,12 @@ +;; -*- no-byte-compile: t; -*- +;;; .doom.d/packages.el + +;;; Examples: +;; (package! some-package) +;; (package! another-package :recipe (:host github :repo "username/repo")) +;; (package! builtin-package :disable t) + +(package! key-chord) +(package! which-key) +(package! org-mode :recipe (:repo "https://code.orgmode.org/bzg/org-mode.git")) +(add-to-list 'load-path "./elfiles") diff --git a/config.el b/config.el index 1550694..3efbfe0 100644 --- a/config.el +++ b/config.el @@ -2,9 +2,7 @@ ;; Place your private configuration here -(setq user-full-name "KahrKunne" - user-mail-address "kahr.kunne@gmail.com" - backup-directory-alist '(("~/.emacs.d/backups")) +(setq backup-directory-alist '(("~/.emacs.d/backups")) delete-old-versions nil version-control t vc-make-backup-files nil @@ -59,12 +57,9 @@ (setq web-mode-css-indent-offset 2)) (add-hook 'web-mode-hook 'my-web-mode-hook) -(require 'key-chord) -(key-chord-mode t) -(key-chord-define evil-insert-state-map "jj" 'evil-normal-state) - - -(set-frame-font "Mononoki 22" nil t) +(if (string= (system-name) "illya") + (set-frame-font "Mononoki 12" nil t) + (set-frame-font "Mononoki 22" nil t)) (global-set-key (kbd "C-s") #'swiper) @@ -73,15 +68,7 @@ (setq treemacs--width-is-locked nil) - ;(centaur-tabs-mode 0) - ;(setq centaur-tabs-style "bar") - ;(setq centaur-tabs-modified-marker "*") - ;(setq centaur-tabs-set-bar 'left) - ; - ;(centaur-tabs-change-fonts "Mononoki" 120) - ;(centaur-tabs-group-by-projectile-project) - -(setq doom-theme 'doom-old-hope) +(setq doom-theme 'doom-ayu-mirage) (display-time-mode 1) @@ -90,7 +77,10 @@ (map! :leader "." #'counsel-find-file) -(after! evil (evil-escape-mode nil)) +(after! evil-escape + (setq evil-escape-key-sequence "jj") + (setq-default evil-escape-delay 0.2)) + (setq ivy-read-action-function #'ivy-hydra-read-action) @@ -221,7 +211,7 @@ ("static" :base-directory "~/Blog/static" - :base-extension "css\\|txt\\|jpg\\|gif\\|png\\|ttf" + :base-extension "css\\|txt\\|jpg\\|gif\\|png\\|ttf\\|js" :recursive t :publishing-directory "~/Blog/html/static" :publishing-function org-publish-attachment) @@ -268,3 +258,25 @@ (setq python-shell-interpreter "ipython" python-shell-interpreter-args "-i --simple-prompt") (setq python-shell-completion-native-disabled-interpreters '("ipython")) + +(use-package! org-roam + :config + (setq org-roam-database-connector 'sqlite3)) + +(setq org-roam-directory (file-truename "/mnt/tenma/srv/boymind")) +(org-roam-db-autosync-mode) + +(org-babel-do-load-languages + 'org-babel-load-languages + '((ledger . t) + )) + +(add-to-list 'org-agenda-files "/mnt/tenma/srv/boymind/20230727221433-agenda_akko.org") + +(setq org-roam-capture-templates '(("d" "default" plain "%?" + :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" + "#+title: ${title}\n") + :unnarrowed t) + ("i" "inbox" plain "* TODO %?" + :target (node "inbox") + :unnarrowed t))) diff --git a/init.el b/init.el index 295739d..c3f52e5 100644 --- a/init.el +++ b/init.el @@ -134,7 +134,7 @@ ;;kotlin ; a better, slicker Java(Script) ;;latex ; writing papers in Emacs has never been so fun ;;lean - ;;ledger ; an accounting system in Emacs + ledger ; an accounting system in Emacs lua ; one-based indices? one-based indices markdown ; writing docs for people to ignore ;;nim ; python + lisp at the speed of c @@ -144,15 +144,18 @@ ;;+journal +dragndrop ; drag & drop files/images into org buffers ;;+hugo ; use Emacs for hugo blogging - +ipython ; ipython/jupyter support for babel +pandoc ; export-with-pandoc support - ;;+pomodoro ; be fruitful with the tomato technique - +present) ; using org-mode for presentations + +pomodoro ; be fruitful with the tomato technique + +roam2 + +present + +pretty ; performance intensive + ) ;;perl ; write code no one else can comprehend ;;php ; perl's insecure younger brother ;;plantuml ; diagrams for confusing people more ;;purescript ; javascript, but functional (python ; beautiful is better than ugly + +conda +lsp) qt ; the 'cutest' gui framework ever racket ; a DSL for DSLs diff --git a/lisp/ob-ledger/ob-ledger.el b/lisp/ob-ledger/ob-ledger.el new file mode 100644 index 0000000..2be1a39 --- /dev/null +++ b/lisp/ob-ledger/ob-ledger.el @@ -0,0 +1,68 @@ +;;; ob-ledger.el --- Babel Functions for Ledger -*- lexical-binding: t; -*- + +;; Copyright (C) 2010-2020 Free Software Foundation, Inc. + +;; Author: Eric S Fraga +;; Keywords: literate programming, reproducible research, accounting +;; Homepage: https://orgmode.org + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see