emacs.d/bundle/bundle--package.el

388 lines
13 KiB
EmacsLisp
Raw Normal View History

2020-07-26 14:36:43 +02:00
;; PACKAGE
(require 'package)
2023-10-07 10:08:37 +02:00
2023-02-19 11:43:50 +01:00
(use-package htmlize)
2023-03-16 17:08:41 +01:00
(use-package tramp
2023-10-02 09:44:53 +02:00
:ensure nil
:config
(when (eq system-type 'windows-nt)
(setq tramp-default-method "sshx")))
2023-03-16 17:08:41 +01:00
2022-05-06 22:23:17 +02:00
(use-package shrface
2023-10-02 09:44:53 +02:00
:defer t
:config
(shrface-basic)
(shrface-trial)
(shrface-default-keybindings) ; setup default keybindings
(setq shrface-href-versatile t
shrface-toggle-bullets t
shr-width nil))
2022-05-06 22:23:17 +02:00
2024-01-19 16:33:11 +01:00
(defun mk/nov-font-settings ()
(setq-local line-spacing 2))
2024-01-17 21:58:05 +01:00
2020-07-26 14:36:43 +02:00
(use-package nov
2023-10-02 09:44:53 +02:00
:hook ((nov-mode . visual-line-mode)
2024-01-19 16:33:11 +01:00
(nov-mode . mk/nov-font-settings))
2023-10-02 09:44:53 +02:00
:mode ("\\.epub\\'" . nov-mode)
:init
(add-hook 'nov-mode-hook #'shrface-mode)
2023-11-24 12:18:28 +01:00
:custom
(nov-header-line-format nil)
2023-12-27 11:16:32 +01:00
(nov-text-width 82)
(nov-variable-pitch t)
2023-10-02 09:44:53 +02:00
:config
(require 'shrface)
(setq nov-shr-rendering-functions '((img . nov-render-img) (title . nov-render-title)))
(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
:ensure nil
2023-10-02 09:44:53 +02:00
:defer t
:config
(if (eq system-name 'windows-nt)
;; %USERPROFILE%\AppData\Local\Programs\clangd-windows-17.0.3\clangd_17.0.3\bin
(add-to-list 'eglot-server-programs '((c++-mode c-mode) "clangd"))
(add-to-list 'eglot-server-programs '((c++-mode c-mode) "ccls"))))
2021-12-20 09:46:26 +01:00
2023-04-30 10:20:24 +02:00
(use-package sql
2023-10-02 09:44:53 +02:00
:ensure nil
:defer t
:config
(when (eq system-type 'windows-nt)
2023-10-23 16:48:02 +02:00
(setq sql-sqlite-options '("-interactive"))
2023-12-26 12:58:53 +01:00
(setq sql-mariadb-options '("-C" "-t" "-f" "-n"))
(setq sql-mysql-options '("-C" "-t" "-f" "-n"))))
2023-04-30 10:20:24 +02:00
2024-02-05 14:40:28 +01:00
(defun me/c-mode-style-hook ()
;; https://www.gnu.org/prep/standards/html_node/Writing-C.html
;; if linux kernel source use linux style, else use gnu style
(c-set-style
(if (and (buffer-file-name)
(string-match "/usr/src/linux" (buffer-file-name)))
"linux"
"gnu")))
2024-02-24 17:13:36 +01:00
(use-package cc-mode
:defer t
:ensure nil
:hook ((c-mode-common . c-toggle-auto-newline)
(c-mode-common . me/c-mode-style-hook))
:custom
(fill-column 79)
(c-basic-offset 2)
(indent-tabs-mode nil)
:config
(define-key c-mode-base-map (kbd "RET") 'newline-and-indent))
2023-12-11 18:10:16 +01:00
2023-07-19 14:20:46 +02:00
;; (defun me/c-mode-compile-command-hook ()
;; ;; if no makefile use gcc for compile command
;; (unless (or (file-exists-p "makefile")
2024-02-05 14:40:28 +01:00
;; (file-exists-p "Makefile"))
2023-07-19 14:20:46 +02:00
;; (set (make-local-variable 'compile-command)
;; (concat "gcc " "-Wall " "-g " buffer-file-name " -o "
;; (file-name-sans-extension buffer-file-name)))))
2024-02-05 14:40:28 +01:00
2023-07-19 14:20:46 +02:00
;; (add-hook 'c-mode-common-hook 'me/c-mode-compile-command-hook)
2024-02-05 14:40:28 +01:00
2023-07-19 14:20:46 +02:00
;; (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))))
2024-02-05 14:40:28 +01:00
;; (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)
2023-07-19 14:20:46 +02:00
;; :mode (("\\.webmanifest\\'" . js-mode)
;; ("\\.js\\'" . js-mode)
;; ("\\.mjs\\'" . js-mode)
;; ("\\.cjs\\'" . js-mode)))
(use-package js2-mode
2023-10-02 09:44:53 +02:00
:defer t
:mode
(("\\.webmanifest\\'" . js2-mode)
("\\.js\\'" . js2-mode)
("\\.mjs\\'" . js2-mode)
("\\.cjs\\'" . js2-mode))
:config
(add-to-list 'interpreter-mode-alist '("node" . js2-mode)))
2021-04-22 16:06:12 +02:00
2023-10-17 19:07:14 +02:00
;; (use-package go-mode
;; :defer t
;; :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
2023-10-07 10:08:37 +02:00
:defer t
2023-10-02 09:44:53 +02:00
;; :hook html-mode
:mode (("\\.html?\\'" . web-mode)
("\\.xhtml?\\'" . web-mode)
("\\.tmpl\\'" . web-mode)
("\\.hbs\\'" . web-mode)
("\\.handlebars\\'" . web-mode))
: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
2023-10-07 10:08:37 +02:00
:defer t
2023-10-02 09:44:53 +02:00
:mode (("\\.py\\'" . python-mode)
("\\.wsgi$" . python-mode)
("\\.j2" . python-mode))
:hook (python-mode . abbrev-mode)
:init
2023-10-04 10:07:22 +02:00
(setq python-indent-guess-indent-offset nil)
2023-10-02 09:44:53 +02:00
(setq python-indent-offset 4)
2023-10-04 10:07:22 +02:00
(setq python-shell-interpreter "ipython")
(setq python-shell-interpreter-args "-i --simple-prompt --InteractiveShell.display_page=True")
2023-10-02 09:44:53 +02:00
:custom
(fill-column 79))
2021-12-20 09:50:49 +01:00
2023-10-17 19:07:14 +02:00
;; (use-package simple-httpd
;; :defer t)
2022-05-05 09:15:55 +02:00
2023-08-21 07:43:31 +02:00
(use-package go-translate
2023-10-02 09:44:53 +02:00
:defer t
:config
(setq gts-translate-list '(("en" "de") ("de" "en")))
(setq gts-default-translator
(gts-translator :picker (gts-prompt-picker)
:engines (list (gts-bing-engine) (gts-google-engine))
:render (gts-buffer-render))))
2022-05-06 19:31:15 +02:00
(use-package magit
2024-03-14 18:42:36 +01:00
:defer t
2023-10-02 09:44:53 +02:00
:bind ("C-x g" . magit-status)
2023-10-04 10:07:22 +02:00
:init
2023-10-07 16:14:08 +02:00
(when (eq system-type 'windows-nt)
2023-10-04 10:07:22 +02:00
(setq magit-git-executable "C:/Program Files/Git/mingw64/libexec/git-core/git.exe"))
2024-03-14 18:42:36 +01:00
:custom
(magit-diff-refine-hunk 'all)
2024-03-20 17:07:15 +01:00
(magit-display-buffer-function 'magit-display-buffer-fullcolumn-most-v1)
2024-03-14 18:42:36 +01:00
(magit-ediff-dwim-show-on-hunks t)
(magit-log-arguments '("--graph" "--color" "--decorate" "--show-signature" "--follow" "-n256"))
(magit-log-margin-show-committer-date t)
(magit-log-remove-graph-args '("--follow" "--grep" "-G" "-S" "-L"))
(magit-todos-insert-after '(bottom))
2023-10-02 09:44:53 +02:00
:config
(global-set-key (kbd "C-x M-g") 'magit-dispatch))
2022-05-06 19:31:15 +02:00
2023-12-11 18:10:16 +01:00
;; (use-package yaml-mode
;; :defer t
;; :mode "\\.yml\\'"
;; :config
;; (defun disable-auto-fill ()
;; (auto-fill-mode -1))
;; :hook
;; (yaml-mode . disable-auto-fill))
2022-05-11 08:46:21 +02:00
2023-12-11 18:10:16 +01:00
;; (use-package csv-mode
;; :defer t
;; :mode "\\.csv\\'")
2022-05-14 07:49:44 +02:00
2023-12-11 18:10:16 +01:00
;; (use-package markdown-mode
;; :defer t
;; :mode "\\.md\\'")
2022-06-09 10:13:00 +02:00
2023-12-11 18:10:16 +01:00
;; (use-package typescript-mode
;; :defer t
;; :mode "\\.ts\\'"
;; :hook (typescript-mode . eglot-ensure)
;; :config (setq typescript-indent-level 2))
2022-11-15 09:14:31 +01:00
2024-02-13 16:09:50 +01:00
(use-package geiser
:defer t
:init
(if (eq system-type 'windows-nt)
(setq geiser-active-implementations '(racket))
(setq geiser-active-implementations '(racket guile))))
(use-package racket-mode
:mode "\\.rkt\\'")
(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")))
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)
2024-02-13 16:09:50 +01:00
2023-01-22 20:04:45 +01:00
(use-package geiser-guile
2023-10-02 09:44:53 +02:00
:defer t
:after geiser
2024-03-15 20:25:16 +01:00
:custom (geiser-guile-binary "guile"))
(use-package journalctl-mode
:defer t
:commands journalctl
:bind (("C-c t j" . journalctl))))
2022-08-15 15:04:52 +02:00
2022-11-29 13:44:30 +01:00
(use-package mastodon
2023-12-03 10:26:59 +01:00
:defer t
2023-10-02 09:44:53 +02:00
:custom
2023-09-25 08:00:43 +02:00
(mastodon-instance-url "https://emacs.ch")
(mastodon-active-user "qhBidG3d"))
2022-11-29 13:44:30 +01:00
2023-07-19 14:19:59 +02:00
(use-package jabber
2023-12-03 10:26:59 +01:00
:defer t
2023-10-02 09:44:53 +02:00
:custom
2023-12-27 14:34:02 +01:00
(jabber-activity-mode nil)
2023-09-25 08:00:43 +02:00
(jabber-account-list
'(("marcus.kammer@mailbox.org")))
(jabber-muc-autojoin
'("lisp@conference.a3.pm"
2023-10-02 09:51:24 +02:00
"emacs@salas.suchat.org"
"cl-sbt@conference.mailbox.org"))
2023-09-25 08:00:43 +02:00
(jabber-muc-default-nicknames
'(("lisp@conference.a3.pm" . "marcus")
2023-10-02 09:51:24 +02:00
("emacs@salas.suchat.org" . "marcus")
("cl-sbt@conference.mailbox.org" . "marcus"))))
2023-01-22 17:43:44 +01:00
2023-08-03 11:42:01 +02:00
;; (use-package hyperbole
2023-12-05 15:40:35 +01:00
;; :config
;; (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)
;; (cons "~/.rolo.otl"
;; (directory-files-recursively org-directory (rx "." (or "org" "otl") eos))))))))
2023-02-11 18:40:28 +01:00
(use-package ispell
2023-10-02 09:44:53 +02:00
:ensure nil
:config
;; On windows: Copy *.aff and *.dic files to C:\msys64\ucrt64\share\hunspell
;; `hunspell -D`, the program will display the dictionaries and affix files it
;; finds and loads.
;; (when (eq system-type 'windows-nt)
;; (setq ispell-program-name "c:/msys64/ucrt64/bin/hunspell.exe"))
(setq ispell-dictionary "german,english")
(setq ispell-local-dictionary-alist
'(("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)))
(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
2023-10-02 09:44:53 +02:00
:defer t
2023-10-21 13:07:07 +02:00
:mode ("\\.puml\\'" "\\.plantuml\\'")
2023-10-04 12:22:36 +02:00
:custom
(plantuml-default-exec-mode 'jar)
2023-10-21 13:07:07 +02:00
(plantuml-jar-path "~/plantuml.jar")
2023-12-11 18:10:16 +01:00
(org-plantuml-jar-path "~/plantuml.jar")
(plantuml-java-args '("-DPLANTUML_DPI=300" "-Djava.awt.headless=true" "-jar" "--illegal-access=deny")))
2023-10-04 12:22:36 +02:00
(use-package tex-mode
:defer t
:ensure auctex
:hook ((LaTeX-mode . turn-on-reftex)
(LaTeX-mode . flyspell-mode)
(LaTeX-mode . LaTeX-math-mode))
:config
;; TeX mode settings for editing .tex files
(setq TeX-auto-save t) ; Enable auto-save
(setq TeX-electric-math (cons "$" "$")) ; Shortcut for math mode
(if (eq system-type 'windows-nt)
(progn
2023-12-11 18:10:16 +01:00
(setq TeX-view-program-list '(("SumatraPDF" "~/AppData/Local/SumatraPDF/SumatraPDF.exe %o")))
(setq TeX-view-program-selection '((output-pdf "SumatraPDF"))))
2023-10-04 12:22:36 +02:00
(setq TeX-view-program-selection '((output-pdf "Evince"))))
(setq TeX-source-correlate-start-server t) ; Enable source-correlate
(setq TeX-master nil) ; Default master file
2023-12-14 12:06:16 +01:00
(setq TeX-engine 'luatex) ; Set engine to XeTeX
2023-10-04 12:22:36 +02:00
(setq TeX-command-extra-options "-shell-escape")) ; Allow shell escape
(use-package epg
:ensure nil
:config
2023-10-07 16:14:08 +02:00
(when (eq system-type 'windows-nt)
2023-10-17 19:07:14 +02:00
(setq epg-gpg-home-directory "~/AppData/Roaming/gnupg"
2023-12-26 12:51:43 +01:00
epg-gpg-program "c:/Program Files (x86)/GnuPG/bin/gpg.exe"
epg-gpgconf-program "c:/Program Files (x86)/GnuPG/bin/gpgconf.exe")))
2023-06-15 20:26:40 +02:00
2023-10-21 10:22:22 +02:00
(use-package which-key
:init (which-key-mode))
2023-11-05 17:18:51 +01:00
(use-package ssh-config-mode
2023-12-03 10:26:59 +01:00
:defer t
2023-11-05 17:18:51 +01:00
:mode ("/sshd_config\\'" . ssh-config-mode)
:config
(add-hook 'ssh-config-mode-hook 'turn-on-font-lock))
(use-package nginx-mode
2023-12-03 10:26:59 +01:00
:defer t
2023-11-05 17:18:51 +01:00
:mode ("/nginx/.*\\'" . nginx-mode))
2023-11-07 17:13:50 +01:00
(use-package dashboard
:config
(dashboard-setup-startup-hook))
2023-11-28 15:15:04 +01:00
2023-12-11 18:10:16 +01:00
;; (use-package flymake-json)
2023-11-28 15:15:04 +01:00
2023-12-11 18:10:16 +01:00
;; (use-package json-mode
;; :ensure nil
;; :mode "\\.json\\'"
;; :hook (json-mode . flymake-json-load))
2023-11-28 15:15:04 +01:00
2023-12-11 18:10:16 +01:00
;; (use-package json-navigator
;; :defer t
;; :after json-mode)
2023-11-28 15:15:04 +01:00
2023-12-11 18:10:16 +01:00
;; (use-package jq-format
;; :defer t
;; :after json-mode)
2023-12-30 11:44:22 +01:00
(use-package gptel
2024-01-02 10:50:40 +01:00
:defer t
2024-01-02 17:33:41 +01:00
:bind (("C-c G m" . gptel-menu)
("C-c G n" . gptel)
("C-c G s" . gptel-send))
2023-12-30 11:44:22 +01:00
:custom
(gptel-default-mode 'org-mode)
(gptel-model "gpt-4")
2024-01-02 17:33:41 +01:00
(gptel-directives
'((default . "You are a large language model living in Emacs and a helpful assistant. Respond concisely.")
(programming . "You are a large language model and a careful programmer. Provide code and only code as output without any additional text, prompt or note.")
(writing . "You are a large language model and a writing assistant. Respond concisely.")
(chat . "You are a large language model and a conversation partner. Respond concisely.")
(ux . "I want you to act as a UX/UI designer. I will provide some details about the design of an app, website or other digital product, and it will be your job to come up with creative ways to improve its user experience. This could involve creating prototypes, testing different designs and providing feedback on what works best.")
2024-01-03 13:43:23 +01:00
(cl . "I want you to act as a common lisp developer. I will provide some specific information about app requirements, and it will be your job to come up with an architecture and code for developing secure app with common lisp.")
2024-02-24 13:36:30 +01:00
(emacser . "You are a Emacs maven. Reply only with the most approriate built-in Emacs command for the task I specify. Do NOT generate any additional description or explanation.")
(elisp . "Consider yourself an experienced Emacs Lisp developer with a deep understanding of Emacs's extensibility and customization capabilities. You're well-versed in creating and modifying Emacs modes, optimizing workflows, and integrating Emacs with other tools and services.")))
2023-12-30 11:44:22 +01:00
:config
2023-12-31 10:36:03 +01:00
(when (eq system-type 'windows-nt)
2024-03-10 12:46:45 +01:00
(setq gptel-use-curl t)))
2024-03-14 13:26:25 +01:00
(use-package gnuplot
:defer t)