;; PACKAGE (require 'package) (use-package htmlize) (use-package tramp :ensure nil :config (when (eq system-type 'windows-nt) (setq tramp-default-method "sshx"))) (use-package shrface :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)) (use-package nov :hook ((nov-mode . visual-line-mode) (nov-mode . (lambda () (if (eq system-type 'windows-nt) (setq-local line-spacing 2) (setq-local line-spacing 4))))) :mode ("\\.epub\\'" . nov-mode) :init (add-hook 'nov-mode-hook #'shrface-mode) :config (setq nov-text-width 82 nov-variable-pitch t) (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"))) (use-package eglot :defer t :config (add-to-list 'eglot-server-programs '((c++-mode c-mode) "ccls"))) (use-package sql :ensure nil :defer t :config (when (eq system-type 'windows-nt) (setq sql-sqlite-options '("-interactive")) (setq sql-mariadb-options '("-C" "-t" "-f" "-n")))) (use-package cc-mode :defer t ;; https://www.gnu.org/prep/standards/html_node/Writing-C.html :ensure nil ;; :hook (c-mode . eglot-ensure) :hook (c-mode-common . c-toggle-auto-newline) :custom (fill-column 79) ; according to gnu style guide (c-basic-offset 2) ; "" :config (defun me/c-mode-style-hook () ;; 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"))) (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)) ;; (use-package js-mode ;; :ensure nil ;; :hook (js-mode . eglot-ensure) ;; :mode (("\\.webmanifest\\'" . js-mode) ;; ("\\.js\\'" . js-mode) ;; ("\\.mjs\\'" . js-mode) ;; ("\\.cjs\\'" . js-mode))) (use-package js2-mode :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))) ;; (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))) (use-package web-mode :defer t ;; :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)) (use-package python :defer t :mode (("\\.py\\'" . python-mode) ("\\.wsgi$" . python-mode) ("\\.j2" . python-mode)) :hook (python-mode . abbrev-mode) :init (setq python-indent-guess-indent-offset nil) (setq python-indent-offset 4) (setq python-shell-interpreter "ipython") (setq python-shell-interpreter-args "-i --simple-prompt --InteractiveShell.display_page=True") :custom (fill-column 79)) ;; (use-package simple-httpd ;; :defer t) (use-package go-translate :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)))) (use-package magit :bind ("C-x g" . magit-status) :init (when (eq system-type 'windows-nt) (setq magit-git-executable "C:/Program Files/Git/mingw64/libexec/git-core/git.exe")) :config (global-set-key (kbd "C-x M-g") 'magit-dispatch)) (use-package yaml-mode :defer t :mode "\\.yml\\'" :config (defun disable-auto-fill () (auto-fill-mode -1)) :hook (yaml-mode . disable-auto-fill)) (use-package csv-mode :defer t :mode "\\.csv\\'") (use-package markdown-mode :defer t :mode "\\.md\\'") (use-package typescript-mode :defer t :mode "\\.ts\\'" :hook (typescript-mode . eglot-ensure) :config (setq typescript-indent-level 2)) (when (eq system-type 'gnu/linux) (use-package spotify :bind ("S-" . spotify-playpause)) ;; (use-package clojure-mode) ;; (use-package cider) (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 :custom (geiser-guile-binary "guile"))) (use-package mastodon :custom (mastodon-instance-url "https://emacs.ch") (mastodon-active-user "qhBidG3d")) (use-package jabber :custom (jabber-account-list '(("marcus.kammer@mailbox.org"))) (jabber-muc-autojoin '("lisp@conference.a3.pm" "emacs@salas.suchat.org" "cl-sbt@conference.mailbox.org")) (jabber-muc-default-nicknames '(("lisp@conference.a3.pm" . "marcus") ("emacs@salas.suchat.org" . "marcus") ("cl-sbt@conference.mailbox.org" . "marcus")))) ;; (use-package hyperbole ;; :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)))))))) (use-package ispell :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)) (use-package plantuml-mode :defer t :mode ("\\.puml\\'" "\\.plantuml\\'") :custom (plantuml-default-exec-mode 'jar) (plantuml-jar-path "~/plantuml.jar") (org-plantuml-jar-path "~/plantuml.jar")) (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 (setq TeX-view-program-list '(("SumatraPDF" "~/AppData/Local/SumatraPDF/SumatraPDF.exe %o"))) (setq TeX-view-program-selection '((output-pdf "SumatraPDF")))) (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 (setq TeX-engine 'xetex) ; Set engine to XeTeX (setq TeX-command-extra-options "-shell-escape")) ; Allow shell escape (use-package epg :ensure nil :config (when (eq system-type 'windows-nt) (setq epg-gpg-home-directory "~/AppData/Roaming/gnupg" epg-gpg-program "c:/Program Files (x86)/GnuPG/bin/gpg.exe" epg-gpgconf-program "c:/Program Files (x86)/GnuPG/bin/gpgconf.exe"))) (use-package which-key :init (which-key-mode)) (use-package ssh-config-mode :ensure t :mode ("/sshd_config\\'" . ssh-config-mode) :config (add-hook 'ssh-config-mode-hook 'turn-on-font-lock)) (use-package nginx-mode :ensure t :mode ("/nginx/.*\\'" . nginx-mode)) (use-package dashboard :ensure t :config (dashboard-setup-startup-hook))