;; -*- lexical-binding: t -*- ;; Copyright © 2018-2025 Uko Koknevics (use-package adoc-mode :ensure t :mode "\\.adoc\\'") (use-package asm-mode :ensure nil :mode ("\\.s\\'" "\\.S\\'") :init (defun arkta/asm-setup () (set-tab-usage t) (set-tab-width 8)) :hook (asm-mode . arkta/asm-setup)) (use-package auto-compile :after elisp-mode :ensure t :hook ((emacs-lisp-mode . auto-compile-on-load-mode) (emacs-lisp-mode . auto-compile-on-save-mode))) (use-package c-ts-mode :after treesit :ensure nil :mode ("\\.c\\'" ("\\.cpp\\'" . c++-ts-mode)) :init (defun arkta/c-setup () (set-tab-usage t) (set-tab-width c-ts-mode-indent-offset)) :hook (c-ts-base-mode . arkta/c-setup) :custom (c-ts-mode-indent-offset 8) (c-ts-mode-indent-style (lambda () `(((node-is ")") parent-bol 0) ((node-is "}") parent-bol 0) ((node-is "access_specifier") parent-bol 0) ((parent-is "argument_list") parent-bol c-ts-mode-indent-offset) ((parent-is "parameter_list") parent-bol c-ts-mode-indent-offset) ((parent-is "field_declaration_list") parent-bol c-ts-mode-indent-offset) ,@(alist-get 'linux (c-ts-mode--indent-styles 'c)))))) (use-package cmake-ts-mode :after treesit :ensure nil :mode ("CMakeLists\\.txt\\'" "\\.cmake\\'")) (use-package company-mlton :after (company sml) :ensure '(company-mlton :host github :repo "MatthewFluet/company-mlton") :hook (sml-mode . company-mlton-init)) (use-package csharp-mode :after treesit :ensure nil :mode "\\.cs\\'") (use-package css-mode :after treesit :ensure nil :mode "\\.css\\'") (use-package dart-mode :ensure t :mode "\\.dart\\'") (use-package dockerfile-ts-mode :after treesit :ensure nil :mode "Dockerfile\\'") (use-package ebuild-mode :ensure (ebuild-mode :host github :repo "emacsmirror/ebuild-mode") :mode ("\\.ebuild\\'" "\\.eclass\\'")) (use-package elisp-mode :ensure nil :mode ("\\.el\\'" . emacs-lisp-mode)) (use-package elixir-mode :ensure t :mode "\\.exs?\\'" :init (defun arkta/elixir-setup () (add-hook 'before-save-hook #'elixir-format nil t)) :hook (elixir-mode . arkta/elixir-setup)) (use-package gdscript-mode :ensure t :mode "\\.gd\\'") (use-package go-ts-mode :after treesit :ensure nil :mode "\\.go\\'" :init (defun arkta/go-setup () (add-hook 'before-save-hook #'gofmt-before-save nil t) (set-tab-usage t) (set-tab-width go-ts-mode-indent-offset)) :hook (go-ts-mode . arkta/go-setup)) (use-package groovy-mode :ensure t :mode ("Jenkinsfile\\'" "\\.jenkinsfile\\'" "\\.gradle\\'" "\\.groovy\\'")) (use-package haskell-mode :ensure t :mode "\\.hs\\'") (use-package htmlize :ensure t) (use-package java-ts-mode :after treesit :ensure nil :mode "\\.java\\'") (use-package js :after treesit :ensure nil :mode ("\\.js\\'" . js-ts-mode)) (use-package json-ts-mode :after treesit :ensure nil :mode "\\.json\\'") (use-package kotlin-ts-mode :after treesit :ensure t :mode "\\.kts?\\'") (use-package lisp-mode :ensure nil :mode "\\.lisp\\'") (use-package lua-mode :ensure t :custom (lua-indent-level 4) :mode ("\\.lua\\'" "\\.rockspec\\'")) (use-package make-mode :ensure nil :mode (("Makefile\\'" . makefile-gmake-mode) ("GNUmakefile\\'" . makefile-mode) ("\\.mk\\(\\.template\\)?\\'" . makefile-mode))) (use-package markdown-mode :ensure t :mode ("\\.md\\'" . gfm-mode)) (use-package nasm-mode :ensure t :mode ("\\.asm\\'" "\\.inc\\'") :init (defun arkta/nasm-setup () (set-tab-width 4)) :hook (nasm-mode . arkta/nasm-setup)) (use-package nix-mode :ensure t :mode "\\.nix\\'") (use-package nxml-mode :ensure nil :mode ("\\.xml\\'" "\\.plist\\'" "\\.svg\\'")) (use-package org :ensure nil :after htmlize :bind (("C-c l" . org-store-link) ("C-c a" . org-agenda)) :mode ("\\.org\\'" . org-mode) :custom (org-agenda-files '("~/TODO.org")) (org-log-done t)) (use-package php-mode :ensure t :mode "\\.php\\'") (use-package pico8-mode :ensure '(pico8-mode :host github :repo "Kaali/pico8-mode") :mode "\\.p8\\'") (use-package proof-general :ensure t) (use-package prolog :ensure nil :mode ("\\.pl\\'" . prolog-mode)) (use-package python :after treesit :ensure nil :mode ("\\.py\\'" . python-ts-mode)) (use-package racket-mode :ensure t :mode "\\.rkt\\'") (use-package ruby-ts-mode :after treesit :ensure nil :mode "\\.rb\\'") (use-package rust-ts-mode :after treesit :ensure nil :mode "\\.rs\\'") (use-package scala-mode :ensure t :mode "\\.scala\\'") (use-package scheme :ensure nil :commands scheme-mode :mode ("\\.scm\\'" . scheme-mode) :config (put 'module 'scheme-indent-function 2)) (use-package slime :ensure t :after lisp-mode :commands slime :custom (inferior-lisp-program (executable-find "sbcl"))) (use-package smalltalk-mode :ensure t :mode "\\.st\\'") (use-package svelte-mode :ensure t :mode ("\\.svelte\\'" "\\.svx\\'")) (use-package sml-mode :ensure t :mode "\\.sml\\'") (use-package toml-ts-mode :after treesit :ensure nil :mode "\\.toml\\'") (use-package typescript-ts-mode :after treesit :ensure nil :mode "\\.ts\\'") (use-package typst-ts-mode :after treesit :ensure t :mode "\\.typ\\'") (use-package yaml-ts-mode :after treesit :ensure nil :mode ("\\.clang-\\(tidy\\|format\\)\\'" "\\.ya?ml\\'")) (use-package zig-mode :ensure t :mode "\\.zig\\'") (provide 'arkta-progmodes)