@ -1,4 +1,4 @@
#+TITLE : Emacs configuration file
#+TITLE: Emacs configuration file
#+AUTHOR : Marc
#+AUTHOR : Marc
#+BABEL : :cache yes
#+BABEL : :cache yes
#+PROPERTY : header-args :tangle yes
#+PROPERTY : header-args :tangle yes
@ -21,14 +21,18 @@
- visual-regexp
- visual-regexp
- org configuration: paths
- org configuration: paths
- org custom agenda
- org custom agenda
- org-ql (related to org agendas)
- org configuration: everything else
- org configuration: everything else
- beancount configuration from config.org
- beancount configuration from config.org
- CONTINUE TODO from config.org at Programming
- CONTINUE TODO from config.org at Programming
- all-the-icons?
* Header
Emacs variables are dynamically scoped. That's unusual for most languages, so disable it here, too
#+begin_src emacs-lisp
;;; init.el --- -*- lexical-binding: t -* -
#+end_src
* First start
* First start
:PROPERTIES:
:ID: ec248005-527f-4fa1-bdef-9343f2fa28b0
:END:
When pulling the repository the first time, an initial init.el needs to be setup. After start it will replace itself with the configuration from init.org
When pulling the repository the first time, an initial init.el needs to be setup. After start it will replace itself with the configuration from init.org
#+BEGIN_SRC emacs-lisp :tangle no
#+BEGIN_SRC emacs-lisp :tangle no
@ -84,104 +88,133 @@
#+END_SRC
#+END_SRC
* Default settings
* Default settings
:PROPERTIES:
:ID: 00b48602-2a95-492e-a90b-c1e3a94c1ecb
:END:
#+BEGIN_SRC emacs-lisp
(defvar me/whoami
(if (string-equal (system-name) "PMTS01")
"work_remote"
(if (string-equal (system-name) "laptop")
"home_laptop"
(if (string-equal (system-name) "PMPCNEU08")
"work_local"
"home_desktop"))))
#+END_SRC
#+BEGIN_SRC emacs-lisp
(defvar MY--PATH_USER_LOCAL (expand-file-name "~/.emacs.d/user-local/ "))
(defvar MY--PATH_USER_GLOBAL (expand-file-name "~/.emacs.d/user-global/ "))
(pcase me/whoami
("home"
(progn
(defvar MY--PATH_ORG_FILES (expand-file-name "~/Archiv/Organisieren/ "))
(defvar MY--PATH_ORG_FILES_MOBILE (expand-file-name "~/Archiv/Organisieren/mobile/ "))
(defvar MY--PATH_ORG_JOURNAl (expand-file-name "~/Archiv/Organisieren/Journal/ "))))
("home_laptop"
(progn
(defvar MY--PATH_ORG_FILES (expand-file-name "~/Archiv/Organisieren/ "))
(defvar MY--PATH_ORG_FILES_MOBILE (expand-file-name "~/Archiv/Organisieren/mobile/ "))
(defvar MY--PATH_ORG_JOURNAL (expand-file-name "~/Archiv/Organisieren/Journal/ "))))
("work_remote"
(progn
(defvar MY--PATH_ORG_FILES "p:/Eigene Dateien/Notizen/ ")
(defvar MY--PATH-ORG-JOURNAL "p:/Eigene Dateien/Notizen/Journal/ ")
(defvar MY--PATH_START "p:/Eigene Dateien/Notizen/ "))))
(setq bookmark-default-file (concat MY--PATH_USER_LOCAL "bookmarks"))
(setq recentf-save-file (concat MY--PATH_USER_LOCAL "recentf"))
(setq custom-file (concat MY--PATH_USER_LOCAL "custom.el")) ;; don't spam init.e with saved customization settings
(setq abbrev-file-name (concat MY--PATH_USER_GLOBAL "abbrev_defs"))
(setq backup-directory-alist `((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms `((".*" ,temporary-file-directory)))
(setq save-abbrevs 'silently) ;; don't bother me with asking for abbrev saving
(setq-default create-lockfiles nil) ;; disable lock files, can cause trouble in e.g. lsp-mode
(defalias 'yes-or-no-p 'y-or-n-p) ;; answer with y and n
(setq custom-safe-themes t) ;; don't ask me if I want to load a theme
(setq sentence-end-double-space nil) ;; don't coun two spaces after a period as the end of a sentence.
(delete-selection-mode t) ;; delete selected region when typing
(save-place-mode 1) ;; saves position in file when it's closed
(setq save-place-forget-unreadable-files nil) ;; checks if file is readable before saving position
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(if (eq system-type 'windows-nt)
(prefer-coding-system 'utf-8-dos)
(prefer-coding-system 'utf-8))
(blink-cursor-mode -1) ;; turn off blinking cursor
(show-paren-mode t) ;; show other part of brackets
(column-number-mode t)
(setq uniquify-buffer-name-style 'forward)
(setq-default indent-tabs-mode nil) ;; avoid tabs in place of multiple spaces (they look bad in tex)
(setq-default indicate-empty-lines t) ;; show empty lines
(setq scroll-margin 5 ;; smooth scrolling
scroll-conservatively 10000
scroll-preserve-screen-position 1
scroll-step 1)
(global-hl-line-mode t) ;; highlight current line
(menu-bar-mode 0) ;; disable menu bar
(tool-bar-mode 0) ;; disable tool bar
(scroll-bar-mode 0) ;; disable scroll bar
#+BEGIN_SRC emacs-lisp
(defconst *sys/gui*
(display-graphic-p)
"Is emacs running in a gui?")
(defconst *sys/linux*
(string-equal system-type 'gnu/linux)
"Is the system running Linux?")
(defconst *sys/windows*
(string-equal system-type 'windows-nt)
"Is the system running Windows?")
(defconst *home_desktop*
(string-equal (system-name) "marc")
"Is emacs running on my desktop?")
(defconst *home_laptop*
(string-equal (system-name) "laptop")
"Is emacs running on my laptop?")
(defconst *work_local*
(string-equal (system-name) "PMPCNEU08")
"Is emacs running at work on the local system?")
(defconst *work_remote*
(string-equal (system-name) "PMTS01")
"Is emacs running at work on the remote system?")
#+END_SRC
#+BEGIN_SRC emacs-lisp
(defvar MY--PATH_USER_LOCAL (expand-file-name "~/.emacs.d/user-local/ "))
(defvar MY--PATH_USER_GLOBAL (expand-file-name "~/.emacs.d/user-global/ "))
(when *sys/linux*
(defconst MY--PATH_ORG_FILES (expand-file-name "~/Archiv/Organisieren/ "))
(defconst MY--PATH_ORG_FILES_MOBILE (expand-file-name "~/Archiv/Organisieren/mobile/ ")))
(defconst MY--PATH_ORG_JOURNAl (expand-file-name "~/Archiv/Organisieren/Journal/ "))
(when *work_remote*
(defconst MY--PATH_ORG_FILES "p:/Eigene Dateien/Notizen/ ")
(defconst MY--PATH_ORG_FILES_MOBILE nil) ;; hacky way to prevent "free variable" compiler error
(defconst MY--PATH_ORG_JOURNAL nil) ;; hacky way to prevent "free variable" compiler error
(defconst MY--PATH_START "p:/Eigene Dateien/Notizen/ "))
(setq bookmark-default-file (concat MY--PATH_USER_LOCAL "bookmarks"))
(setq recentf-save-file (concat MY--PATH_USER_LOCAL "recentf"))
(setq custom-file (concat MY--PATH_USER_LOCAL "custom.el")) ;; don't spam init.e with saved customization settings
(setq abbrev-file-name (concat MY--PATH_USER_GLOBAL "abbrev_defs"))
(setq backup-directory-alist `((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms `((".*" ,temporary-file-directory)))
(setq save-abbrevs 'silently) ;; don't bother me with asking for abbrev saving
(setq-default create-lockfiles nil) ;; disable lock files, can cause trouble in e.g. lsp-mode
(defalias 'yes-or-no-p 'y-or-n-p) ;; answer with y and n
(setq custom-safe-themes t) ;; don't ask me if I want to load a theme
(setq sentence-end-double-space nil) ;; don't coun two spaces after a period as the end of a sentence.
(delete-selection-mode t) ;; delete selected region when typing
(save-place-mode 1) ;; saves position in file when it's closed
(setq save-place-forget-unreadable-files nil) ;; checks if file is readable before saving position
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(if *sys/windows*
(prefer-coding-system 'utf-8-dos)
(prefer-coding-system 'utf-8))
(blink-cursor-mode -1) ;; turn off blinking cursor
(show-paren-mode t) ;; show other part of brackets
(column-number-mode t)
(setq uniquify-buffer-name-style 'forward)
(setq-default indent-tabs-mode nil) ;; avoid tabs in place of multiple spaces (they look bad in tex)
(setq-default indicate-empty-lines t) ;; show empty lines
(setq scroll-margin 5 ;; smooth scrolling
scroll-conservatively 10000
scroll-preserve-screen-position 1
scroll-step 1)
(global-hl-line-mode t) ;; highlight current line
(menu-bar-mode 0) ;; disable menu bar
(tool-bar-mode 0) ;; disable tool bar
(scroll-bar-mode 0) ;; disable scroll bar
#+END_SRC
#+END_SRC
Some windows specific stuff
Some windows specific stuff
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(when (eq system-type 'windows-nt)
(when *sys/windows*
(remove-hook 'find-file-hooks 'vc-refresh-state)
(remove-hook 'find-file-hooks 'vc-refresh-state)
(progn
(progn
(setq gc-cons-threshold (* 511 1024 1024)
(setq gc-cons-threshold (* 511 1024 1024)
gc-cons-percentage 0.5
gc-cons-percentage 0.5
garbage-collection-messages t
w32-pipe-read-delay 0
w32-get-true-file-attributes nil)
(run-with-idle-timer 5 t #'garbage-collect)))
garbage-collection-messages t)
(run-with-idle-timer 5 t #'garbage-collect))
(when (boundp 'w32-pipe-read-delay)
(setq w32-pipe-read-delay 0))
(when (boundp 'w32-get-true-file-attributes)
(setq )w32-get-true-file-attributes nil))
#+END_SRC
#+END_SRC
* visuals
* visuals
** Font
** Font
:PROPERTIES:
:ID: cdfaaf73-b027-4b86-8d27-ebdce4b85009
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(if (string-equal system-type "gnu/linux")
(set-face-font 'default "Hack-10"))
(when *sys/linux*
(set-face-font 'default "Hack-10"))
(when *work_remote*
(set-face-font 'default "Lucida Sans Typewriter-11"))
#+END_SRC
** Themes
#+BEGIN_SRC emacs-lisp
(defun my/toggle-theme ()
(interactive)
(when (or *sys/windows* *sys/linux* )
(if (eq (car custom-enabled-themes) 'tango-dark)
(progn (disable-theme 'tango-dark)
(load-theme 'tango))
(progn
(disable-theme 'tango)
(load-theme 'tango-dark)))))
(bind-key "C-c t" 'my/toggle-theme)
#+END_SRC
#+END_SRC
Windows Theme:
#+BEGIN_SRC emacs-lisp
(when (or *sys/windows* *sys/linux* )
(load-theme 'tango))
#+END_SRC
** line wrappings
** line wrappings
:PROPERTIES:
:ID: 60b1f231-ab1e-4c47-ac6d-262dc208a520
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(global-visual-line-mode)
(global-visual-line-mode)
(diminish 'visual-line-mode)
(diminish 'visual-line-mode)
@ -197,9 +230,6 @@ Some windows specific stuff
; (add-hook 'visual-line-mode-hook 'my/activate-adaptive-wrap-prefix-mode)))
; (add-hook 'visual-line-mode-hook 'my/activate-adaptive-wrap-prefix-mode)))
#+END_SRC
#+END_SRC
** line numbers
** line numbers
:PROPERTIES:
:ID: d3dfb79a-103a-4318-a5af-5a55e12674ce
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package display-line-numbers
(use-package display-line-numbers
:init
:init
@ -213,9 +243,6 @@ Some windows specific stuff
; (add-hook 'emacs-lisp-mode-hook 'display-line-numbers-mode)
; (add-hook 'emacs-lisp-mode-hook 'display-line-numbers-mode)
#+END_SRC
#+END_SRC
** misc
** misc
:PROPERTIES:
:ID: f0f774d6-db13-4871-9192-d36e78120dde
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package rainbow-mode
(use-package rainbow-mode
:ensure t
:ensure t
@ -224,9 +251,6 @@ Some windows specific stuff
emacs-lisp-mode) . rainbow-mode))
emacs-lisp-mode) . rainbow-mode))
#+END_SRC
#+END_SRC
* undo
* undo
:PROPERTIES:
:ID: fde526fa-b053-48dd-9ac1-c443d987f4d2
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package undo-tree
(use-package undo-tree
:ensure t
:ensure t
@ -235,9 +259,6 @@ Some windows specific stuff
(global-undo-tree-mode 1))
(global-undo-tree-mode 1))
#+END_SRC
#+END_SRC
* imenu-list
* imenu-list
:PROPERTIES:
:ID: 796d00db-aadb-412b-a291-619b029977f3
:END:
A minor mode to show imenu in a sidebar.
A minor mode to show imenu in a sidebar.
Call imenu-list-smart-toggle.
Call imenu-list-smart-toggle.
[[https://github.com/bmag/imenu-list ][Source ]]
[[https://github.com/bmag/imenu-list ][Source ]]
@ -255,9 +276,6 @@ Some windows specific stuff
)
)
#+END_SRC
#+END_SRC
* which-key
* which-key
:PROPERTIES:
:ID: 0a67aeb4-4060-4f4d-a7ff-61c70fe7ec7b
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package which-key
(use-package which-key
:ensure t
:ensure t
@ -270,9 +288,6 @@ Some windows specific stuff
#+END_SRC
#+END_SRC
* Evil
* Evil
:PROPERTIES:
:ID: a3389b7d-3833-42b7-97e1-413b8c4d9833
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package evil
(use-package evil
@ -282,9 +297,6 @@ Some windows specific stuff
(evil-mode 1))
(evil-mode 1))
#+END_SRC
#+END_SRC
* General (key mapper)
* General (key mapper)
:PROPERTIES:
:ID: 027bdcf8-95c9-4e9b-88ba-6e9d3e5116c0
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package general
(use-package general
:ensure t)
:ensure t)
@ -297,11 +309,106 @@ Some windows specific stuff
"d" '(imenu-list-display-entry :which-key "show")
"d" '(imenu-list-display-entry :which-key "show")
"q" '(imenu-list-quit-window :which-key "quit"))
"q" '(imenu-list-quit-window :which-key "quit"))
#+END_SRC
#+END_SRC
* ivy / counsel / swiper
#+BEGIN_SRC emacs-lisp
; (require 'ivy)
(use-package ivy
:ensure t
:diminish
(ivy-mode . "")
:init
(ivy-mode 1)
:bind
("C-r" . ivy-resume) ;; overrides isearch-backwards binding
:config
(setq ivy-use-virtual-buffers t ;; recent files and bookmarks in ivy-switch-buffer
ivy-height 20 ;; height of ivy window
ivy-count-format "%d/%d" ;; current and total number
ivy-re-builders-alist ;; regex replaces spaces with *
'((t . ivy--regex-plus))))
(use-package counsel
:ensure t
:bind*
(("M-x" . counsel-M-x)
("C-x C-f" . counsel-find-file)
("C-x C-r" . counsel-recentf)
("C-c C-f" . counsel-git)
("C-c h f" . counsel-describe-function)
("C-c h v" . counsel-describe-variable)
("M-i" . counsel-imenu)))
(use-package swiper
:ensure t
:bind
("C-s" . swiper))
(use-package ivy-hydra
:ensure t)
#+END_SRC
* company
#+BEGIN_SRC emacs-lisp
(use-package company
:defer 1
:bind
(:map company-active-map
("RET" . nil)
([return] . nil)
("TAB" . company-complete-selection)
([tab] . company-complete-selection)
("<right >" . company-complete-common))
:hook
(after-init . global-company-mode)
:config
(setq company-idle-delay .2
company-minimum-prefix-length 1
company-require-match nil
company-show-numbers t
company-tooltip-align-annotations t))
(use-package company-statistics
:ensure t
:after company
:init
(setq company-statistics-file (concat MY--PATH_USER_LOCAL "company-statistics-cache.el"));~/.emacs.d/user-dir/company-statistics-cache.el")
:config
(company-statistics-mode 1))
(use-package company-dabbrev
:ensure nil
:after company
:config
(setq-default company-dabbrev-downcase nil))
(use-package company-box
:ensure t
:init
(add-hook 'company-mode-hook 'company-box-mode))
#+END_SRC
** company backends
#+BEGIN_SRC emacs-lisp
(defun company/org-mode-hook()
(set (make-local-variable 'company-backends)
'(company-capf company-files))
(add-hook 'completion-at-point-functions 'pcomplete-completions-at-point nil t)
(message "company/org-mode-hook"))
(defun company/elisp-mode-hook()
(set (make-local-variable 'company-backends)
'((company-elisp company-dabbrev) company-capf company-files))
(message "company/elisp-mode-hook"))
(defun company/beancount-mode-hook()
(set (make-local-variable 'company-backends)
'(company-beancount)))
#+END_SRC
* orgmode
* orgmode
** org
** org
:PROPERTIES:
:ID: 3877251e-5ece-4006-baa6-1f1b4846a8f3
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package org
(use-package org
:ensure org-plus-contrib
:ensure org-plus-contrib
@ -315,9 +422,13 @@ Some windows specific stuff
org-tempo ;; easy templates
org-tempo ;; easy templates
)))
)))
(setq org-default-notes-file (concat MY--PATH_ORG_FILES "notes.org")
(setq org-default-notes-file (concat MY--PATH_ORG_FILES "notes.org")
org-agenda-files (list MY--PATH_ORG_FILES
MY--PATH_ORG_FILES_MOBILE)
org-id-locations-file (concat MY--PATH_USER_LOCAL ".org-id-locations")
org-agenda-files (list (concat MY--PATH_ORG_FILES "notes.org")
(concat MY--PATH_ORG_FILES "projects.org")
(concat MY--PATH_ORG_FILES "todo.org")))
(when *sys/linux*
(setq org-agenda-files (list org-agenda-files
MY--PATH_ORG_FILES_MOBILE)))
(setq org-id-locations-file (concat MY--PATH_USER_LOCAL ".org-id-locations")
org-log-into-drawer "LOGBOOK")
org-log-into-drawer "LOGBOOK")
;; some display customizations
;; some display customizations
@ -332,39 +443,25 @@ Some windows specific stuff
org-src-tab-acts-natively t))
org-src-tab-acts-natively t))
#+END_SRC
#+END_SRC
** languages
** languages
:PROPERTIES:
:ID: 467efd58-e928-4ccf-9ac4-d144eaede8ed
:END:
#+BEGIN_SRC emacs-lisp
(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)
(gnuplot . t)
(js . t)
(latex . t)
(lisp . t)
(python . t)
(shell . t)
(sqlite . t)
(org . t)
(R . t)
(scheme . t)
))
(defun me--org-confirm-babel-evaluate (lang body)
"Do not confirm evaluation for these languages."
(not (or (string= lang "python")
(string= lang "ipython")
(string= lang "emacs-lisp")
(string= lang "R")
(string= lang "latex")
(string= lang "sqlite"))))
(setq org-confirm-babel-evaluate 'me--org-confirm-babel-evaluate)
Set some languages and disable confirmation for evaluating code blocks C-c C-c
#+BEGIN_SRC emacs-lisp
(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)
(gnuplot . t)
(js . t)
(latex . t)
(lisp . t)
(python . t)
(shell . t)
(sqlite . t)
(org . t)
(R . t)
(scheme . t)))
(setq org-confirm-babel-evaluate nil)
#+END_SRC
#+END_SRC
** habits
** habits
:PROPERTIES:
:ID: 61735b0c-5016-4697-80c6-beb7b3f27a1b
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(require 'org-habit) ;;TODO Lösung ohne require finden, scheint mir nicht ideal zu sein, nur um ein org-modul zu aktivieren
(require 'org-habit) ;;TODO Lösung ohne require finden, scheint mir nicht ideal zu sein, nur um ein org-modul zu aktivieren
;; (add-to-list 'org-modules "org-habit")
;; (add-to-list 'org-modules "org-habit")
@ -374,24 +471,18 @@ Some windows specific stuff
org-habit-show-habits-only-for-today nil)
org-habit-show-habits-only-for-today nil)
#+END_SRC
#+END_SRC
** org-id
** org-id
:PROPERTIES:
:ID: 017ef411-8239-4bfe-bbef-66b98a2971a9
:END:
Currently it causes some debugger errors "not a standard org time string", so it's disabled
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package org-id
:config
(setq org-id-link-to-org-use-id t)
(org-id-update-id-locations)) ;; update id file .org-id-locations on startup
;; (use-package org-id
;; :config
;; (setq org-id-link-to-org-use-id t)
;; (org-id-update-id-locations)) ;; update id file .org-id-locations on startup
#+END_SRC
#+END_SRC
** org-agenda
** org-agenda
:PROPERTIES:
:ID: 10e65f59-ba2c-47e4-a40c-3097c15544aa
:END:
Custom keywords, depending on environment
Custom keywords, depending on environment
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(pcase me/whoami
("work_remote")
(when *work_remote*
(setq org-todo-keywords
(setq org-todo-keywords
'((sequence "OPEN" "TODO" "UNCLEAR" "|" "DONE" "IMPOSSIBLE"))))
'((sequence "OPEN" "TODO" "UNCLEAR" "|" "DONE" "IMPOSSIBLE"))))
#+END_SRC
#+END_SRC
@ -445,9 +536,6 @@ Customize the org agenda
org-super-agenda
org-super-agenda
** org-caldav
** org-caldav
:PROPERTIES:
:ID: 58aa11ef-80f7-4629-a957-a9e00e070136
:END:
Vorerst deaktiviert, Nutzen evtl. nicht vorhanden
Vorerst deaktiviert, Nutzen evtl. nicht vorhanden
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
;;(use-package org-caldav
;;(use-package org-caldav
@ -459,134 +547,20 @@ Vorerst deaktiviert, Nutzen evtl. nicht vorhanden
;; org-caldav-files (concat MY--PATH_ORG_FILES "tasks")))
;; org-caldav-files (concat MY--PATH_ORG_FILES "tasks")))
#+END_SRC
#+END_SRC
** journal
** journal
:PROPERTIES:
:ID: 0b7243ac-049f-4b9c-a062-7a349c515133
:END:
[[https://github.com/bastibe/org-journal ][Source ]]
[[https://github.com/bastibe/org-journal ][Source ]]
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package org-journal
:ensure t
:defer t
:custom
(org-journal-dir MY--PATH_ORG_JOURNAl)
(org-journal-enable-agenda-integration t))
#+END_SRC
* ivy / counsel / swiper
:PROPERTIES:
:ID: c2146a70-03f4-4f60-9bce-094eec28cefe
:END:
#+BEGIN_SRC emacs-lisp
; (require 'ivy)
(use-package ivy
:ensure t
:diminish
(ivy-mode . "")
:init
(ivy-mode 1)
:bind
("C-r" . ivy-resume) ;; overrides isearch-backwards binding
:config
(setq ivy-use-virtual-buffers t ;; recent files and bookmarks in ivy-switch-buffer
ivy-height 20 ;; height of ivy window
ivy-count-format "%d/%d" ;; current and total number
ivy-re-builders-alist ;; regex replaces spaces with *
'((t . ivy--regex-plus))))
(use-package counsel
:ensure t
:bind*
(("M-x" . counsel-M-x)
("C-x C-f" . counsel-find-file)
("C-x C-r" . counsel-recentf)
("C-c C-f" . counsel-git)
("C-c h f" . counsel-describe-function)
("C-c h v" . counsel-describe-variable)
("M-i" . counsel-imenu)))
(use-package swiper
:ensure t
:bind
("C-s" . swiper))
(use-package ivy-hydra
:ensure t)
#+END_SRC
* company
:PROPERTIES:
:ID: 1630ac5e-7467-458c-940c-4f724e283813
:END:
#+BEGIN_SRC emacs-lisp
; (require 'company)
(use-package company
:defer 1
:bind
(:map company-active-map
("RET" . nil)
([return] . nil)
("TAB" . company-complete-selection)
([tab] . company-complete-selection)
("<right >" . company-complete-common))
:config
(global-company-mode 1)
(setq-default
company-idle-delay .2
company-minimum-prefix-length 1
company-require-match nil
company-show-numbers t
company-tooltip-align-annotations t))
; (require 'company-statistics)
(use-package company-statistics
:ensure t
:after company
:init
(setq company-statistics-file (concat MY--PATH_USER_LOCAL "company-statistics-cache.el"));~/.emacs.d/user-dir/company-statistics-cache.el")
:config
(company-statistics-mode 1))
(use-package company-dabbrev
:ensure nil
:after company
:config
(setq-default company-dabbrev-downcase nil))
(use-package company-box
:ensure t
:init
(add-hook 'company-mode-hook 'company-box-mode))
#+END_SRC
** company backends
:PROPERTIES:
:ID: 6ac59f9d-54e3-422d-883f-128fb172468d
:END:
#+BEGIN_SRC emacs-lisp
(defun company/org-mode-hook()
(set (make-local-variable 'company-backends)
'(company-capf company-files))
(add-hook 'completion-at-point-functions 'pcomplete-completions-at-point nil t)
(message "company/org-mode-hook"))
(defun company/elisp-mode-hook()
(set (make-local-variable 'company-backends)
'((company-elisp company-dabbrev) company-capf company-files))
(message "company/elisp-mode-hook"))
(defun company/beancount-mode-hook()
(set (make-local-variable 'company-backends)
'(company-beancount)))
(use-package org-journal
:if *sys/linux*
:ensure t
:defer t
:config
(setq org-journal-dir MY--PATH_ORG_JOURNAl
org-journal-enable-agenda-integration t))
#+END_SRC
#+END_SRC
* Programming
* Programming
** Magit / Git
** Magit / Git
:PROPERTIES:
:ID: a947f806-181d-4d33-9734-435849385b0b
:END:
Little crash course in magit:
Little crash course in magit:
- magit-init to init a git project
- magit-init to init a git project
- magit-status (C-x g) to call the status window
- magit-status (C-x g) to call the status window
@ -615,9 +589,6 @@ In status buffer:
#+END_SRC
#+END_SRC
** LSP
** LSP
:PROPERTIES:
:ID: d529d096-ec38-42e6-91c9-099c1d8bdd06
:END:
Configuration for the language server protocol
Configuration for the language server protocol
*ACHTUNG* Dateipfad muss absolut sein, symlink im Pfad führt zumindest beim ersten Start zu Fehlern beim lsp
*ACHTUNG* Dateipfad muss absolut sein, symlink im Pfad führt zumindest beim ersten Start zu Fehlern beim lsp
Sobald der lsp einmal lief, kann zukünftig der symlink-Pfad genommen werden.
Sobald der lsp einmal lief, kann zukünftig der symlink-Pfad genommen werden.
@ -653,7 +624,7 @@ TODO Unterverzeichnisse wurden noch nicht getestet
lsp-ui-sideline-enable nil
lsp-ui-sideline-enable nil
lsp-ui-sideline-ignore-duplicate t
lsp-ui-sideline-ignore-duplicate t
lsp-ui-sideline-show-code-actions nil)
lsp-ui-sideline-show-code-actions nil)
(when (display-graphic-p)
(when *sys/gui*
(setq lsp-ui-doc-use-webkit t))
(setq lsp-ui-doc-use-webkit t))
;; workaround hide mode-line of lsp-ui-imenu buffer
;; workaround hide mode-line of lsp-ui-imenu buffer
(defadvice lsp-ui-imenu (after hide-lsp-ui-imenu-mode-line activate)
(defadvice lsp-ui-imenu (after hide-lsp-ui-imenu-mode-line activate)
@ -670,10 +641,34 @@ TODO Unterverzeichnisse wurden noch nicht getestet
company-lsp-cache-candidates nil))
company-lsp-cache-candidates nil))
#+END_SRC
#+END_SRC
** yasnippet
For useful snippet either install yasnippet-snippets or get them from here
[[https://github.com/AndreaCrotti/yasnippet-snippets ][Github ]]
#+begin_src emacs-lisp
(use-package yasnippet
:ensure t
:diminish yas-minor-mode
:config
(setq yas-snippet-dirs (list (concat MY--PATH_USER_GLOBAL "snippets")))
(yas-global-mode t)
(yas-reload-all)
(unbind-key "TAB" yas-minor-mode-map)
(unbind-key "<tab >" yas-minor-mode-map))
#+end_src
** hippie expand
With hippie expand I am able to use yasnippet and emmet at the same time with the same key.
#+begin_src emacs-lisp
(use-package hippie-exp
:defer t
:bind
("C-<return >" . hippie-expand)
:config
(setq hippie-expand-try-functions-list
'(yas-hippie-try-expand emmet-expand-line)))
#+end_src
** flycheck
** flycheck
:PROPERTIES:
:ID: c8090ddb-4f22-49ba-8ab1-1de132e1d772
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package flycheck
(use-package flycheck
:ensure t
:ensure t
@ -692,9 +687,6 @@ TODO Unterverzeichnisse wurden noch nicht getestet
#+END_SRC
#+END_SRC
** Projectile
** Projectile
:PROPERTIES:
:ID: 3cc5c1d2-1a5d-4d1a-bfeb-48de8172dd63
:END:
Manage projects and jump quickly between its files
Manage projects and jump quickly between its files
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package projectile
(use-package projectile
@ -715,29 +707,32 @@ Manage projects and jump quickly between its files
#+END_SRC
#+END_SRC
** smartparens
** smartparens
:PROPERTIES:
:ID: 04be375f-d100-47e7-99f1-af47a3139a54
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package smartparens
(use-package smartparens
:ensure t
:ensure t
:diminish smartparens-mode
:diminish smartparens-mode
:bind
(:map smartparens-mode-map
("C-M-f" . sp-forward-sexp)
("C-M-b" . sp-backward-sexp)
("C-M-a" . sp-backward-down-sexp)
("C-M-e" . sp-up-sexp)
("C-M-w" . sp-copy-sexp)
("M-k" . sp-kill-sexp)
("C-M-<backspace >" . sp-slice-sexp-killing-backward)
("C-S-<backspace >" . sp-slice-sexp-killing-around)
("C-]" . sp-select-next-thing-exchange))
:config
:config
(setq sp-show-pair-from-inside nil)
(setq sp-show-pair-from-inside nil
sp-escape-quotes-after-insert nil)
(require 'smartparens-config))
(require 'smartparens-config))
#+END_SRC
#+END_SRC
** lisp
** lisp
:PROPERTIES:
:ID: e5ce0263-3b21-460e-a037-3fe27d6e836a
:END:
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(add-hook 'emacs-lisp-mode-hook 'company/elisp-mode-hook)
(add-hook 'emacs-lisp-mode-hook 'company/elisp-mode-hook)
#+END_SRC
#+END_SRC
** web
** web
:PROPERTIES:
:ID: 5649b885-839f-48db-8b4f-8d594df7ebd8
:END:
apt install npm
apt install npm
sudo npm install -g vscode-html-languageserver-bin
sudo npm install -g vscode-html-languageserver-bin
@ -758,10 +753,28 @@ Manage projects and jump quickly between its files
(add-hook 'web-mode-hook 'smartparens-mode))
(add-hook 'web-mode-hook 'smartparens-mode))
#+END_SRC
#+END_SRC
Emmet offers snippets, similar to yasnippet.
Default completion is C-j
[[https://github.com/smihica/emmet-mode#usage ][Github ]]
#+begin_src emacs-lisp
(use-package emmet-mode
:ensure t
:defer t
:hook
((web-mode . emmet-mode)
(css-mode . emmet-mode))
:config
(unbind-key "C-<return >" emmet-mode-keymap))
#+end_src
** YAML
#+begin_src emacs-lisp
(use-package yaml-mode
:if *sys/linux*
:ensure t
:mode ("\\.yml$" . yaml-mode))
#+end_src
** Python
** Python
:PROPERTIES:
:ID: cd4bbd1f-9980-42c9-a5af-aa808779d524
:END:
Systemseitig muss python-language-server installiert sein:
Systemseitig muss python-language-server installiert sein:
pip3 install 'python-language-server[all]'
pip3 install 'python-language-server[all]'
@ -769,33 +782,31 @@ Manage projects and jump quickly between its files
https://github.com/emacs-lsp/lsp-mode#install-language-server
https://github.com/emacs-lsp/lsp-mode#install-language-server
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(if (string-equal system-type "gnu/linux")
(use-package pyvenv
:ensure t
:config
(setenv "WORKON_HOME" (expand-file-name "~/Archiv/Programmierprojekte/Python/virtualenv/ "))
(add-hook 'pyvenv-post-activate-hooks #'my/postactivatehook))
(defun my/postactivatehook ()
(setq lsp-python-ms-extra-paths pyvenv-virtual-env))
(use-package virtualenvwrapper
:ensure t
:hook (venv-postmkvirtualenv . (lambda() (shell-command "pip3 install importmagic epc")))
:config
(setq venv-location (expand-file-name "~/Archiv/Programmierprojekte/Python/virtualenv/ ")))
(use-package lsp-python-ms
:ensure t
:after lsp-mode python))
(if *sys/linux*
(defun my/postactivatehook ()
(setq lsp-python-ms-extra-paths pyvenv-virtual-env))
(use-package pyvenv
:ensure t
:config
(setenv "WORKON_HOME" (expand-file-name "~/Archiv/Programmierprojekte/Python/virtualenv/ "))
(add-hook 'pyvenv-post-activate-hooks 'my/postactivatehook))
(use-package virtualenvwrapper
:ensure t
:hook (venv-postmkvirtualenv . (lambda() (shell-command "pip3 install importmagic epc")))
:config
(setq venv-location (expand-file-name "~/Archiv/Programmierprojekte/Python/virtualenv/ ")))
(use-package lsp-python-ms
:ensure t
:after lsp-mode python))
; :custom (lsp-python-executable-cmd "python3"))
; :custom (lsp-python-executable-cmd "python3"))
#+END_SRC
#+END_SRC
* beancount
* beancount
** Installation
** Installation
:PROPERTIES:
:ID: 0c5f3396-4b08-4549-ac68-0c516cfd4435
:END:
#+BEGIN_SRC shell
#+BEGIN_SRC shell
sudo su
sudo su
cd /opt
cd /opt
@ -809,21 +820,21 @@ deactivate
#+END_SRC
#+END_SRC
#+BEGIN_SRC emacs-lisp
#+BEGIN_SRC emacs-lisp
(if (string-equal system-type "gnu/linux")
(use-package beancount
:load-path "user-loc al/elisp"
; :ensure t
:defer t
:mode
("\\.beancount$" . beancount-mode)
:init
(add-hook 'beancount-mode-hook 'company/beancount-mode-hook)
(use-package beancount
:if *sys/linux*
:load-path "user-glob al/elisp"
; :ensure t
:defer t
:mode
("\\.beancount$" . beancount-mode)
:init
(add-hook 'beancount-mode-hook 'company/beancount-mode-hook)
; (add-hook 'beancount-mode-hook (pyvenv-activate "/opt/beancount"))
; (add-hook 'beancount-mode-hook (pyvenv-activate "/opt/beancount"))
; (setenv "PATH"
; (setenv "PATH"
; (concat "/opt/beancount/bin:"
; (concat "/opt/beancount/bin:"
; (getenv "PATH")))
; (getenv "PATH")))
:config
(setq beancount-filename-main "/home/marc/Archiv/Finanzen/Transaktionen/transactions.beancount") ))
:config
(setq beancount-filename-main "/home/marc/Archiv/Finanzen/Transaktionen/transactions.beancount"))
#+END_SRC
#+END_SRC
To support org-babel, check if it can find the symlink to ob-beancount.el
To support org-babel, check if it can find the symlink to ob-beancount.el