2020-07-26 14:36:43 +02:00
|
|
|
;; PACKAGE
|
|
|
|
(require 'package)
|
2023-01-07 11:25:47 +01:00
|
|
|
(setq package-archives
|
|
|
|
'(("melpa" . "https://melpa.org/packages/")
|
|
|
|
("org" . "https://orgmode.org/elpa/")
|
|
|
|
("elpa" . "https://elpa.gnu.org/packages/")
|
|
|
|
("nongnu" . "https://elpa.nongnu.org/nongnu/")))
|
2020-07-26 14:36:43 +02:00
|
|
|
(package-initialize)
|
2021-04-29 22:18:25 +02:00
|
|
|
(unless package-archive-contents
|
|
|
|
(package-refresh-contents))
|
|
|
|
(unless (package-installed-p 'use-package)
|
|
|
|
(package-install 'use-package))
|
2020-10-07 14:32:54 +02:00
|
|
|
(require 'use-package)
|
2020-09-29 16:32:31 +02:00
|
|
|
(setq use-package-always-ensure t)
|
|
|
|
|
2022-05-06 19:31:15 +02:00
|
|
|
(load "bundle--gui")
|
2020-07-26 14:36:43 +02:00
|
|
|
|
2023-01-15 09:39:02 +01:00
|
|
|
(add-hook 'emacs-lisp-mode-hook (lambda () (prettify-symbols-mode)))
|
|
|
|
|
2023-02-19 11:43:50 +01:00
|
|
|
(use-package htmlize)
|
|
|
|
|
2023-03-16 17:08:41 +01:00
|
|
|
(use-package tramp
|
|
|
|
:ensure nil
|
|
|
|
:config
|
|
|
|
(when (eq system-type 'windows-nt)
|
|
|
|
(setq tramp-default-method "sshx")))
|
|
|
|
|
2022-05-06 22:23:17 +02:00
|
|
|
(use-package shrface
|
|
|
|
:defer t
|
|
|
|
:config
|
|
|
|
(shrface-basic)
|
|
|
|
(shrface-trial)
|
|
|
|
(shrface-default-keybindings) ; setup default keybindings
|
2022-05-07 10:37:31 +02:00
|
|
|
(setq shrface-href-versatile t
|
|
|
|
shrface-toggle-bullets t
|
|
|
|
shr-width nil))
|
2022-05-06 22:23:17 +02:00
|
|
|
|
2020-07-26 14:36:43 +02:00
|
|
|
(use-package nov
|
2023-03-11 10:44:38 +01:00
|
|
|
:hook ((nov-mode . visual-line-mode)
|
|
|
|
(nov-mode . (lambda () (setq-local line-spacing 4))))
|
2021-12-15 18:11:48 +01:00
|
|
|
:mode ("\\.epub\\'" . nov-mode)
|
2022-08-24 19:35:40 +02:00
|
|
|
:init
|
|
|
|
(add-hook 'nov-mode-hook #'shrface-mode)
|
2021-06-05 16:55:11 +02:00
|
|
|
:config
|
2022-07-27 07:44:35 +02:00
|
|
|
(setq nov-text-width 82
|
|
|
|
nov-variable-pitch t)
|
2022-08-24 19:35:40 +02:00
|
|
|
(require 'shrface)
|
|
|
|
(setq nov-shr-rendering-functions '((img . nov-render-img) (title . nov-render-title)))
|
2023-03-16 17:08:41 +01:00
|
|
|
(setq nov-shr-rendering-functions (append nov-shr-rendering-functions shr-external-rendering-functions))
|
|
|
|
(when (eq system-type 'windows-nt)
|
|
|
|
(setq nov-unzip-program "c:/msys64/usr/bin/unzip.exe")))
|
2022-05-06 19:31:15 +02:00
|
|
|
|
2021-12-20 09:46:26 +01:00
|
|
|
(use-package eglot
|
2022-05-06 19:31:15 +02:00
|
|
|
:defer t
|
2021-12-20 09:46:26 +01:00
|
|
|
:config
|
|
|
|
(add-to-list 'eglot-server-programs '((c++-mode c-mode) "ccls")))
|
|
|
|
|
|
|
|
(use-package lisp-mode
|
|
|
|
:ensure nil
|
2023-01-14 09:33:49 +01:00
|
|
|
:init
|
|
|
|
(add-hook 'lisp-mode-hook (lambda () (prettify-symbols-mode)))
|
2021-12-20 09:46:26 +01:00
|
|
|
:mode (("\\.lisp$" . lisp-mode)
|
|
|
|
("\\.lsp$" . lisp-mode)
|
2023-03-25 10:39:53 +01:00
|
|
|
("\\.cl$" . lisp-mode))
|
|
|
|
:config
|
|
|
|
(if (eq system-type 'windows-nt)
|
2023-03-25 11:01:05 +01:00
|
|
|
(setq inferior-lisp-program "sbcl --noinform")
|
2023-03-25 10:39:53 +01:00
|
|
|
(setq inferior-lisp-program "/usr/bin/sbcl --noinform")))
|
2021-12-20 09:46:26 +01:00
|
|
|
|
|
|
|
(use-package cc-mode
|
2021-12-28 11:44:58 +01:00
|
|
|
;; https://www.gnu.org/prep/standards/html_node/Writing-C.html
|
2021-12-20 09:46:26 +01:00
|
|
|
:ensure nil
|
|
|
|
;; :hook (c-mode . eglot-ensure)
|
2021-12-28 11:44:58 +01:00
|
|
|
:hook (c-mode-common . c-toggle-auto-newline)
|
2021-12-20 09:46:26 +01:00
|
|
|
:custom
|
2021-12-28 11:44:58 +01:00
|
|
|
(fill-column 79) ; according to gnu style guide
|
|
|
|
(c-basic-offset 2) ; ""
|
|
|
|
:config
|
2022-01-01 13:09:29 +01:00
|
|
|
(defun me/c-mode-style-hook ()
|
|
|
|
;; if linux kernel source use linux style, else use gnu style
|
2021-12-28 11:44:58 +01:00
|
|
|
(c-set-style
|
|
|
|
(if (and (buffer-file-name)
|
|
|
|
(string-match "/usr/src/linux" (buffer-file-name)))
|
|
|
|
"linux"
|
|
|
|
"gnu")))
|
2022-08-24 19:35:40 +02:00
|
|
|
(add-hook 'c-mode-common-hook 'me/c-mode-style-hook))
|
|
|
|
;; (defun me/c-mode-compile-command-hook ()
|
|
|
|
;; ;; if no makefile use gcc for compile command
|
|
|
|
;; (unless (or (file-exists-p "makefile")
|
|
|
|
;; (file-exists-p "Makefile"))
|
|
|
|
;; (set (make-local-variable 'compile-command)
|
|
|
|
;; (concat "gcc " "-Wall " "-g " buffer-file-name " -o "
|
|
|
|
;; (file-name-sans-extension buffer-file-name)))))
|
|
|
|
;; (add-hook 'c-mode-common-hook 'me/c-mode-compile-command-hook)
|
|
|
|
;; (defun me/c-mode-compile-on-save ()
|
|
|
|
;; ;; compile on save hook
|
|
|
|
;; (make-local-variable 'after-save-hook)
|
|
|
|
;; (add-hook 'after-save-hook (lambda () (compile compile-command))))
|
|
|
|
;; (add-hook 'c-mode-common-hook 'me/c-mode-compile-on-save))
|
2021-12-20 09:46:26 +01:00
|
|
|
|
|
|
|
(use-package js-mode
|
|
|
|
:ensure nil
|
|
|
|
:hook (js-mode . eglot-ensure)
|
2022-05-06 22:23:17 +02:00
|
|
|
:mode (("\\.webmanifest\\'" . js-mode)
|
|
|
|
("\\.js\\'" . js-mode)))
|
2021-04-22 16:06:12 +02:00
|
|
|
|
2023-04-03 11:07:53 +02:00
|
|
|
(use-package go-mode
|
|
|
|
:mode ("\\.go\\'" . go-mode)
|
|
|
|
:hook ((before-save . gofmt-before-save)
|
|
|
|
(go-mode . eglot-ensure))
|
|
|
|
:config
|
|
|
|
(defun me/go-mode-compile-command-hook ()
|
|
|
|
;; if no makefile use go vet for compile command
|
|
|
|
(unless (or (file-exists-p "makefile")
|
|
|
|
(file-exists-p "Makefile"))
|
|
|
|
(set (make-local-variable 'compile-command)
|
|
|
|
(concat "go " "vet " buffer-file-name))))
|
|
|
|
(add-hook 'go-mode-hook 'me/go-mode-compile-command-hook)
|
|
|
|
(defun me/go-mode-compile-on-save ()
|
|
|
|
;; compile on save hook
|
|
|
|
(make-local-variable 'after-save-hook)
|
|
|
|
(add-hook 'after-save-hook (lambda () (compile compile-command))))
|
|
|
|
;; (add-hook 'go-mode-hook 'me/go-mode-compile-on-save)))
|
2021-04-22 16:06:12 +02:00
|
|
|
|
2020-07-26 14:36:43 +02:00
|
|
|
(use-package web-mode
|
2021-07-14 13:28:32 +02:00
|
|
|
;; :hook html-mode
|
2021-12-15 18:11:48 +01:00
|
|
|
:mode (("\\.html?\\'" . web-mode)
|
2022-09-10 20:28:25 +02:00
|
|
|
("\\.xhtml?\\'" . web-mode)
|
2023-01-12 17:49:37 +01:00
|
|
|
("\\.tmpl\\'" . web-mode)
|
2023-01-22 20:04:45 +01:00
|
|
|
("\\.hbs\\'" . web-mode)
|
|
|
|
("\\.handlebars\\'" . web-mode))
|
2021-06-07 18:52:41 +02:00
|
|
|
:custom
|
|
|
|
(web-mode-markup-indent-offset 2)
|
|
|
|
(web-mode-css-indent-offset 2)
|
|
|
|
(web-mode-code-indent-offset 2)
|
|
|
|
(web-mode-enable-auto-pairing nil)
|
|
|
|
(web-mode-enable-auto-closing t)
|
|
|
|
(web-mode-enable-current-element-highlight t)
|
|
|
|
(web-mode-enable-current-column-highlight t))
|
2020-07-26 14:36:43 +02:00
|
|
|
|
2021-12-20 09:50:49 +01:00
|
|
|
(use-package python
|
|
|
|
:mode (("\\.py\\'" . python-mode)
|
|
|
|
("\\.wsgi$" . python-mode)
|
|
|
|
("\\.j2" . python-mode))
|
2023-02-06 09:20:35 +01:00
|
|
|
:hook (python-mode . abbrev-mode)
|
2022-05-06 19:31:15 +02:00
|
|
|
:init
|
|
|
|
(setq python-indent-offset 4)
|
|
|
|
(setq-default indent-tabs-mode nil)
|
|
|
|
:custom
|
2023-01-22 20:04:45 +01:00
|
|
|
(fill-column 79))
|
2021-12-20 09:50:49 +01:00
|
|
|
|
2020-07-26 14:36:43 +02:00
|
|
|
(use-package slime
|
2022-05-06 19:31:15 +02:00
|
|
|
:defer t
|
2021-06-07 18:52:41 +02:00
|
|
|
:custom
|
|
|
|
(slime-autodoc-use-multiline-p 1)
|
2023-01-16 17:53:30 +01:00
|
|
|
:bind ("C-c C-q" . slime-close-all-parens-in-sexp)
|
2021-05-29 09:24:31 +02:00
|
|
|
:config
|
2021-06-03 15:07:37 +02:00
|
|
|
(slime-setup '(slime-autodoc
|
2023-01-16 17:53:30 +01:00
|
|
|
slime-banner
|
2022-10-06 13:13:59 +02:00
|
|
|
slime-tramp
|
2021-06-03 15:07:37 +02:00
|
|
|
slime-fancy
|
|
|
|
slime-asdf
|
|
|
|
slime-indentation
|
2021-11-04 08:17:33 +01:00
|
|
|
slime-editing-commands
|
2022-05-06 19:31:15 +02:00
|
|
|
slime-sbcl-exts))
|
2023-01-18 20:43:29 +01:00
|
|
|
(progn
|
|
|
|
(setq common-lisp-hyperspec-symbol-table
|
|
|
|
(concat common-lisp-hyperspec-root "Data/Map_Sym.txt"))
|
|
|
|
(setq common-lisp-hyperspec-issuex-table
|
|
|
|
(concat common-lisp-hyperspec-root "Data/Map_IssX.txt")))
|
2023-03-05 14:08:27 +01:00
|
|
|
|
2023-03-25 11:01:05 +01:00
|
|
|
;; (if (eq system-type 'windows-nt)
|
|
|
|
;; (setq sbcl-exe "C:\\Program Files\\Steel Bank Common Lisp\\sbcl.exe"
|
|
|
|
;; sbcl-core "C:\\Program Files\\Steel Bank Common Lisp\\sbcl.core"
|
|
|
|
;; slime-lisp-implementations `((sbcl (,sbcl-exe " --noinform" " --core " ,sbcl-core)))
|
|
|
|
;; inferior-lisp-program "sbcl"))
|
2023-03-05 14:08:27 +01:00
|
|
|
|
2023-03-25 10:39:53 +01:00
|
|
|
;; (let ((helper (expand-file-name "~/quicklisp/slime-helper.el")))
|
|
|
|
;; (when (file-exists-p helper)
|
|
|
|
;; (load-file helper)))
|
2023-03-05 14:08:27 +01:00
|
|
|
|
|
|
|
(let ((u1 (slime-create-filename-translator
|
|
|
|
:machine-instance "u1"
|
|
|
|
:remote-host "u1.metaebene.dev"
|
|
|
|
:username "marcus")))
|
2023-03-05 13:42:34 +01:00
|
|
|
(push u1 slime-filename-translations)))
|
2023-02-09 18:24:14 +01:00
|
|
|
|
2022-05-06 19:31:15 +02:00
|
|
|
(use-package simple-httpd
|
|
|
|
:defer t)
|
2022-05-05 09:15:55 +02:00
|
|
|
|
2023-01-07 11:25:47 +01:00
|
|
|
;; (use-package go-translate
|
|
|
|
;; :defer t
|
|
|
|
;; :config
|
|
|
|
;; (setq gts-translate-list '(("en" "de")))
|
|
|
|
;; (setq gts-default-translator
|
|
|
|
;; (gts-translator
|
|
|
|
;; :picker (gts-prompt-picker)
|
|
|
|
;; :engines (list (gts-google-engine) (gts-google-rpc-engine))
|
|
|
|
;; :render (gts-buffer-render))))
|
2022-05-06 19:31:15 +02:00
|
|
|
|
|
|
|
(use-package sql
|
|
|
|
:ensure nil
|
|
|
|
:defer t
|
|
|
|
:config
|
|
|
|
(when (eq system-type 'windows-nt)
|
2023-02-11 18:40:10 +01:00
|
|
|
(setq sql-sqlite-program "c:/msys64/mingw64/bin/sqlite3.exe")))
|
2022-05-06 19:31:15 +02:00
|
|
|
|
|
|
|
(use-package magit
|
|
|
|
:bind ("C-x g" . magit-status)
|
|
|
|
:config
|
|
|
|
(global-set-key (kbd "C-x M-g") 'magit-dispatch))
|
|
|
|
|
2022-05-11 08:46:21 +02:00
|
|
|
(use-package yaml-mode
|
|
|
|
:mode "\\.yml\\'")
|
|
|
|
|
2022-05-14 07:49:44 +02:00
|
|
|
(use-package csv-mode
|
|
|
|
:mode "\\.csv\\'")
|
|
|
|
|
2022-06-09 10:13:00 +02:00
|
|
|
(use-package markdown-mode
|
|
|
|
:mode "\\.md\\'")
|
|
|
|
|
2022-11-15 09:14:31 +01:00
|
|
|
(use-package typescript-mode
|
|
|
|
:mode "\\.ts\\'"
|
|
|
|
:hook (typescript-mode . eglot-ensure)
|
|
|
|
:config (setq typescript-indent-level 2))
|
|
|
|
|
2022-08-15 15:04:52 +02:00
|
|
|
(when (eq system-type 'gnu/linux)
|
2023-01-22 20:04:45 +01:00
|
|
|
(use-package spotify :bind ("S-<pause>" . spotify-playpause))
|
2023-02-13 23:37:46 +01:00
|
|
|
;; (use-package clojure-mode)
|
|
|
|
;; (use-package cider)
|
2023-01-22 20:04:45 +01:00
|
|
|
(use-package racket-mode :mode "\\.rkt\\'")
|
|
|
|
(use-package geiser
|
|
|
|
:defer t
|
|
|
|
:config
|
|
|
|
(setq geiser-active-implementations '(racket guile)))
|
|
|
|
(use-package geiser-racket
|
|
|
|
:defer t
|
|
|
|
:after geiser
|
|
|
|
:config
|
|
|
|
(when (eq system-type 'windows-nt)
|
|
|
|
(setq geiser-racket-binary "c:/Program Files/Racket/Racket.exe")))
|
|
|
|
(use-package geiser-guile
|
|
|
|
:defer t
|
|
|
|
:after geiser
|
2023-01-23 18:16:50 +01:00
|
|
|
:custom (geiser-guile-binary "guile")))
|
2022-08-15 15:04:52 +02:00
|
|
|
|
2022-11-29 13:44:30 +01:00
|
|
|
(use-package mastodon
|
|
|
|
:custom
|
|
|
|
(mastodon-instance-url "https://emacs.ch")
|
|
|
|
(mastodon-active-user "qhBidG3d"))
|
|
|
|
|
2023-02-13 18:02:09 +01:00
|
|
|
(use-package jabber
|
|
|
|
:custom
|
2023-02-13 21:14:51 +01:00
|
|
|
(jabber-account-list
|
|
|
|
'(("marcus.kammer@mailbox.org")))
|
2023-02-13 18:02:09 +01:00
|
|
|
(jabber-muc-autojoin
|
2023-02-13 21:14:51 +01:00
|
|
|
'("lisp@conference.a3.pm"
|
|
|
|
"emacs@salas.suchat.org"))
|
2023-02-13 18:02:09 +01:00
|
|
|
(jabber-muc-default-nicknames
|
|
|
|
'(("lisp@conference.a3.pm" . "marcus")
|
|
|
|
("emacs@salas.suchat.org" . "marcus"))))
|
2023-01-22 17:43:44 +01:00
|
|
|
|
2023-02-05 11:28:19 +01:00
|
|
|
(use-package hyperbole
|
|
|
|
:config
|
2023-02-06 15:59:20 +01:00
|
|
|
(setq hyrolo-date-format "%Y-%m-%d %H:%M:%S")
|
|
|
|
(add-hook 'hyperbole-init-hook
|
|
|
|
(lambda ()
|
|
|
|
(setq hyrolo-file-list
|
|
|
|
(append (hyrolo-initialize-file-list)
|
2023-02-06 22:19:03 +01:00
|
|
|
(cons "~/.rolo.otl"
|
|
|
|
(directory-files-recursively org-directory (rx "." (or "org" "otl") eos))))))))
|
2023-02-02 09:23:04 +01:00
|
|
|
|
2023-02-11 18:40:28 +01:00
|
|
|
(use-package ispell
|
|
|
|
:ensure nil
|
2023-02-12 13:45:38 +01:00
|
|
|
:config
|
|
|
|
;; On windows: Copy files from ~/.emacs.d/dicts/ to c:/msys64/mingw64/share/hunspell/
|
|
|
|
(setq ispell-dictionary "german,english")
|
|
|
|
(setq ispell-local-dictionary-alist
|
2023-02-12 12:45:17 +01:00
|
|
|
'(("german" "[[:alpha:]]" "[^[:alpha:]]" "[']" t ("-d" "de_DE_frami,de_AT_frami,de_CH_frami") nil utf-8)
|
|
|
|
("english" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US,en_GB") nil utf-8)
|
|
|
|
("german,english" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "de_DE_frami,en_US") nil utf-8)))
|
2023-02-13 12:10:58 +01:00
|
|
|
(setq ispell-hunspell-dictionary-alist ispell-local-dictionary-alist))
|
2023-02-11 18:40:28 +01:00
|
|
|
|
2023-03-16 17:08:41 +01:00
|
|
|
(use-package plantuml-mode
|
|
|
|
:defer t
|
|
|
|
:config
|
|
|
|
(when (eq system-type 'windows-nt)
|
|
|
|
(setq plantuml-default-exec-mode 'jar
|
|
|
|
plantuml-jar-path "~/AppData/Local/Programs/plantuml/plantuml.jar")))
|
|
|
|
|
2023-02-11 16:57:27 +01:00
|
|
|
(require 'ido)
|
|
|
|
(ido-mode t)
|
|
|
|
|
2022-05-06 19:31:15 +02:00
|
|
|
(load "bundle--irc")
|
|
|
|
(load "bundle--news")
|
2023-02-13 21:14:51 +01:00
|
|
|
(load "bundle--email")
|