2020-07-26 14:36:43 +02:00
;; PACKAGE
( require 'package )
2023-10-07 10:08:37 +02:00
2024-06-06 12:03:22 +02:00
( defun get-auth-key ( host )
" Retrieve the Anthropics API key using 'auth-source'. "
( require 'auth-source )
( let* ( ( auth-source-creation-prompts
' ( ( secret . " API key for %u@%h: " ) ) )
( found ( nth 0 ( auth-source-search
:max 1
:host host
:user " apikey "
:require ' ( :secret )
:create t ) ) )
( secret ( plist-get found :secret ) ) )
( if ( functionp secret )
( funcall secret )
secret ) ) )
2023-02-19 11:43:50 +01:00
( use-package htmlize )
2024-07-19 08:12:21 +02:00
( use-package autoinsert
:ensure nil
:init ( auto-insert-mode 1 )
:config
( setq auto-insert-query nil )
2024-07-28 19:47:45 +02:00
( let ( ( new-templates ' ( ( ( " \\ .sh \\ ' " . " Shell script header " ) nil " #!/bin/bash \n # -*- mode: shell-script; coding: utf-8; -*- \n " )
( ( " \\ .js \\ ' " . " JavaScript header " ) nil " #!/usr/bin/env node \n // -*- mode: js; coding: utf-8; -*- \n " )
( ( " \\ .css \\ ' " . " CSS header " ) nil " /* -*- mode: css; coding: utf-8; -*- \n * Dependencies: none \n */ \n " )
( ( " \\ .html \\ ' " . " HTML header " ) nil " <!-- -*- mode: web; coding: utf-8; -*- --> \n " )
( ( " \\ .lisp \\ ' " . " Lisp header " ) nil " ;;;; -*- mode: common-lisp; coding: utf-8; -*- \n " ) ) ) )
( setq auto-insert-alist ( nconc new-templates auto-insert-alist ) ) ) )
2024-07-19 08:12:21 +02:00
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
2024-04-06 10:26:05 +02:00
( use-package shr
2024-04-06 10:24:08 +02:00
:custom
( shr-use-colors nil )
( shr-use-fonts nil )
( shr-inhibit-images t )
( shr-cookie-policy nil )
2024-04-06 10:26:05 +02:00
( shr-width nil ) )
( use-package shrface
:hook ( ( eww-after-render . shrface-mode )
( nov-mode . shrface-mode ) )
:custom
2024-04-06 10:24:08 +02:00
( shrface-href-versatile t )
( shrface-toggle-bullets t )
2023-10-02 09:44:53 +02:00
:config
( shrface-basic )
( shrface-trial )
2024-04-06 10:24:08 +02:00
( shrface-default-keybindings ) )
2022-05-06 22:23:17 +02:00
2024-08-17 11:01:59 +02:00
( defun hunspell-available-p ( )
" Check if Hunspell is available on the system. "
( cond
;; Check for Windows
( ( eq system-type 'windows-nt )
( or ( executable-find " hunspell.exe " )
( executable-find " hunspell " ) ) )
;; Check for Linux and other Unix-like systems
( ( or ( eq system-type 'gnu/linux )
( eq system-type 'darwin )
( eq system-type 'berkeley-unix ) )
( executable-find " hunspell " ) )
;; Return nil for unsupported systems
( t nil ) ) )
( when ( hunspell-available-p )
( progn
( use-package flyspell
:hook ( ( LaTeX-mode . flyspell-mode )
( org-mode . flyspell-mode )
( text-mode . flyspell-mode )
( prog-mode . flyspell-prog-mode ) ) )
( 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 ) ) ) )
2024-03-27 19:33:23 +01:00
2024-01-19 16:33:11 +01:00
( defun mk/nov-font-settings ( )
2024-02-25 12:49:22 +01:00
( setq-local line-spacing 2 ) )
2024-01-17 21:58:05 +01:00
2024-04-06 10:14:13 +02:00
( use-package browse-url
:custom
( browse-url-browser-function 'eww-browse-url ) )
( use-package eww
:config
( require 'shrface ) )
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 )
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 )
2024-03-30 19:21:48 +01:00
( nov-variable-pitch nil )
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
2024-03-27 19:33:23 +01:00
:hook ( ( typescript-mode . eglot-ensure )
( js2-mode . eglot-ensure ) )
2023-10-02 09:44:53 +02:00
:config
2024-03-11 13:30:09 +01:00
( 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
:config
2024-04-07 13:17:29 +02:00
( setq sql-connection-alist
' ( ( finance-db
( sql-product 'sqlite )
( sql-database " ~/Documents/org/data/FINANCE.db " ) ) ) )
2023-10-02 09:44:53 +02:00
( when ( eq system-type 'windows-nt )
2024-04-07 13:17:29 +02:00
( setq sql-postgres-program " C:/Program Files/PostgreSQL/16/bin/psql.exe " )
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 " ) )
2024-04-07 13:17:29 +02:00
( setq sql-mysql-options ' ( " -C " " -t " " -f " " -n " ) ) ) )
2023-04-30 10:20:24 +02:00
2024-07-05 22:28:47 +02: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")))
;; (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
2023-06-22 16:25:54 +02: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)))
2023-06-22 16:25:54 +02:00
( use-package js2-mode
2023-10-02 09:44:53 +02:00
: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-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-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
2024-07-20 14:59:50 +02:00
:bind ( ( " C-c t " . gt-do-translate ) )
2023-10-02 09:44:53 +02:00
:config
2024-07-20 14:59:50 +02:00
( setq gt-langs ' ( en de ) )
2024-05-30 18:53:53 +02:00
( setq gt-default-translator
2024-07-20 14:59:50 +02:00
( gt-translator
:taker ( gt-taker :text 'word )
:engines ( gt-google-engine )
:render ( gt-buffer-render ) ) ) )
2022-05-06 19:31:15 +02:00
( use-package magit
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
2024-04-01 14:46:44 +02:00
( use-package yaml-mode
:mode " \\ .yml \\ ' "
:hook
( yaml-mode . ( lambda ( ) ( auto-fill-mode -1 ) ) ) )
2022-05-11 08:46:21 +02:00
2024-04-01 14:46:44 +02:00
( use-package csv-mode
:mode " \\ .csv \\ ' " )
2022-05-14 07:49:44 +02:00
2024-04-01 14:46:44 +02:00
( use-package markdown-mode
: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
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-08-17 11:01:59 +02:00
)
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
2024-08-06 20:22:38 +02:00
( jabber-muc-decorate-presence-patterns
' ( ( " enters the room " . nil )
( " has entered the room " . nil )
( " joined the room " . nil )
( " has left the chatroom " . nil ) ) )
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 "
2024-07-16 20:38:00 +02:00
" emacs@conference.conversations.im "
" community@conference.jabber.fsfe.org "
2024-07-12 17:41:55 +02:00
" ml-survey@conference.mailbox.org " ) )
2023-09-25 08:00:43 +02:00
( jabber-muc-default-nicknames
' ( ( " lisp@conference.a3.pm " . " marcus " )
2024-07-16 20:38:00 +02:00
( " community@conference.jabber.fsfe.org " . " marcus " )
( " emacs@conference.conversations.im " . " marcus " )
2024-07-12 17:41:55 +02:00
( " ml-survey@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-02 09:23:04 +01:00
2024-08-17 11:01:59 +02:00
2023-02-11 18:40:28 +01:00
2023-03-16 17:08:41 +01:00
( use-package plantuml-mode
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
: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
2024-03-27 19:33:23 +01:00
( use-package auctex
:hook ( ( LaTeX-mode . turn-on-reftex )
( LaTeX-mode . LaTeX-math-mode ) )
:custom
( LaTeX-indent-level 4 )
( LaTeX-item-indent 0 ) )
2023-10-04 12:22:36 +02:00
( 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
:mode ( " /sshd_config \\ ' " . ssh-config-mode )
:config
( add-hook 'ssh-config-mode-hook 'turn-on-font-lock ) )
( use-package nginx-mode
: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-07-20 13:23:05 +02:00
:bind ( ( " C-c g " . gptel-menu )
( " C-c G " . gptel )
( " C-c M-g " . gptel-send )
:map gptel-mode-map
( " C-c C-c " . gptel-send )
( " C-c C-k " . gptel-abort ) )
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-30 08:30:57 +01:00
( setq gptel-use-curl t ) )
2024-07-28 21:59:46 +02:00
( setq gptel-prompt-prefix-alist
' ( ( markdown-mode . " # " )
( org-mode . " * " )
( text-mode . " # " ) ) )
2024-07-07 15:03:26 +02:00
( setq gptel-default-mode 'org-mode )
2024-08-03 16:49:00 +02:00
( setq gptel-model " claude-3-5-sonnet-20240620 " )
2024-07-20 13:23:05 +02:00
( setq gptel-backend
( gptel-make-anthropic " Claude "
:stream t
:key gptel-api-key ) )
2024-07-28 21:59:46 +02:00
( setq gptel-directives
2024-08-16 08:26:38 +02:00
' ( ( default . " You are an expert Common Lisp developer specializing in web development with Hunchentoot and functional programming. Emphasize functional programming principles throughout, including pure functions, immutability, and higher-order functions. Provide concise code examples and best practices for each topic. You are using the following common lisp libraries: spinneret for html generation, hunchentoot as web server, and mito as ORM. If needed choose more libraries for different cases. " )
2024-08-08 18:43:49 +02:00
( bash . " You are an experienced Bash scripting teacher. I want to learn how to write Bash scripts. Please explain concepts clearly, provide examples, and guide me through writing scripts step-by-step. Let's start with the basics and gradually move to more advanced topics. If I have questions or need further clarification, help me understand the material thoroughly. " )
( cs-teacher . " You are a virtual teaching assistant for a high school computer science course. The course focuses on functional programming, data structures, and algorithms using Common Lisp. Your goal is to provide clear, engaging, and educational explanations, examples, and exercises to help students grasp complex concepts. Your responses should be appropriate for high school students, keeping explanations simple yet thorough. " ) ) ) )
2024-03-14 13:26:25 +01:00
( use-package gnuplot
:defer t )
2024-06-05 13:15:51 +02:00
( use-package docker )
( use-package dockerfile-mode
:mode ( " \\ .dockerfile \\ ' " . dockerfile-mode ) )
2024-06-17 11:48:19 +02:00
( use-package terraform-mode
:defer t
:custom
( terraform-format-on-save t ) )
2024-06-30 13:58:30 +02:00
( use-package auto-complete
:init
( ac-config-default )
:config
( setq ac-use-menu-map t )
( setq ac-ignore-case nil )
( add-hook 'prog-mode-hook 'auto-complete-mode ) )