Move lang files
Some checks are pending
/ Test config on ${{matrix.node}} (20) (push) Waiting to run

This commit is contained in:
Maciej 2024-07-27 10:52:59 +03:00
parent bf90b046b8
commit 1f20dd7bc1
Signed by: maciej
GPG key ID: 41D62D42D3B0D765
27 changed files with 81 additions and 82 deletions

View file

@ -0,0 +1,28 @@
;;; languages/clang.el --- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(defun +custom-lang-clang/activate-clang-mode ()
"Goodies for editing c files."
;; Set column width to 100
(column-enforce-n 100)
;; Set indentation to 4 chars
(if (boundp 'c-basic-offset)
(setq-local c-basic-offset 4)
(defvar c-basic-offset 4))
(if (boundp 'c-default-style)
(setq-local c-default-style "bsd")
(defvar c-default-style "bsd"))
(add-to-list (make-local-variable 'company-backends)
'(company-etags company-yasnippet)))
(add-hook 'c-mode-hook '+custom-lang-clang/activate-clang-mode)
(provide 'icejam-lang-clang)
;;; icejam-lang-clang.el ends here

View file

@ -0,0 +1,63 @@
;;; languages/clojure -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-transient)
(use-package clojure-mode :defer t :straight t)
(use-package cider
:requires clojure-mode
:commands cider-jack-in
:defer t
:straight t
:config (setq cider-annotate-completion-function t))
(use-package clj-refactor
:requires (cider clojure-mode)
:defer t
:straight t)
;; Transient
(transient-define-prefix +custom-lang-clojure/cider-context-menu ()
"Clojure Buffer Commands."
[""
["Cider"
("j" "Jack in" cider-jack-in)
("t" "Test" cider-test-run-loaded-tests)]
["Buffer"
("r" "Reload" revert-buffer-no-confirm)
("f" "Format" cider-format-buffer)
("l" "Load" cider-load-buffer)
("e" "Show Errors" flycheck-list-errors)]]
[""
("q" "Quit" keyboard-quit)])
(defun +custom-lang-clojure/activate-clojure-mode ()
"Goodies for clojure files."
(set-indent 2) ;; Default indentation of 2 characters
(column-enforce-n 80)
(clj-refactor-mode 1)
(cider-mode 1)
(setq-local indent-tabs-mode nil)
(define-key
clojure-mode-map (kbd "C-c l") '+custom-lang-clojure/cider-context-menu)
;; Do not enable paredit for clojure
;; (paredit-mode 1)
;; Do not show separate error window when in REPL
(setq cider-show-error-buffer 'except-in-repl))
(add-hook 'clojure-mode-hook '+custom-lang-clojure/activate-clojure-mode)
(defun +custom-lang-clojure/clj-repl-config ()
"Do not show stacktrace when in REPL."
(setq-local cider-show-error-buffer 'except-in-repl))
(add-hook 'cider-repl-mode-hook '+custom-lang-clojure/clj-repl-config)
(add-hook 'cider-mode-hook #'cider-company-enable-fuzzy-completion)
(provide 'icejam-lang-clojure)
;;; icejam-lang-clojure.el ends here

View file

@ -0,0 +1,23 @@
;;; common-lisp.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-company-yasnippet)
(use-package slime :straight t)
(use-package slime-company :straight t
:requires (slime company))
(setq inferior-lisp-program "sbcl")
(slime-setup '(slime-fancy slime-company slime-quicklisp slime-asdf))
(provide 'icejam-lang-common-lisp)
;;; icejam-lang-common-lisp.el ends here

View file

@ -0,0 +1,17 @@
;;; dart -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(use-package dart-mode :straight t :defer t)
(use-package lsp-dart :defer t :straight t :requires (dart-mode lsp))
(defun +custom-lang-dart/activate-dart-mode ()
"Reconfigure dart mode for your own purposes."
(lsp))
(add-hook 'dart-mode-hook '+custom-lang-dart/activate-dart-mode)
(provide 'icejam-lang-dart)
;;; icejam-lang-dart.el ends here

View file

@ -0,0 +1,17 @@
;;; dhall -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(use-package dhall-mode :straight t :defer t :requires (lsp))
(defun +custom-lang-dhall/activate-dhall-mode ()
"Reconfigure dhall mode for your own purposes."
(lsp))
(add-hook 'dhall-mode-hook '+custom-lang-dhall/activate-dhall-mode)
(add-hook 'dhall-mode-hook 'display-line-numbers-mode)
(provide 'icejam-lang-dhall)
;;; icejam-lang-dhall.el ends here

View file

@ -0,0 +1,33 @@
;;; languages/elisp -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(transient-define-prefix +custom-lang-elisp/transient-context-menu ()
"Elisp Buffer Commands."
[""
["Buffer"
("r" "Reload" revert-buffer-no-confirm)
("i" "Indent" mark-and-indent-whole-buffer)
("e" "Show Errors" flycheck-list-errors)]]
[""
("q" "Quit" keyboard-quit)])
(defun activate-emacs-lisp-mode ()
"Goodies for editing Emacs files."
(set-indent 2) ;; Default indentation of 2 characters
(column-enforce-n 80)
(setq-default indent-tabs-mode nil)
(define-key emacs-lisp-mode-map
(kbd "C-c l") '+custom-lang-elisp/transient-context-menu)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-yasnippet company-elisp)))
(add-hook 'emacs-lisp-mode-hook 'activate-emacs-lisp-mode)
(provide 'icejam-lang-elisp)
;;; icejam-lang-elisp.el ends here

View file

@ -0,0 +1,50 @@
;;; languages/elixir -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-flycheck)
(require 'icejam-transient)
(use-package elixir-mode :defer t :straight t)
(use-package elixir-ts-mode :requires (elixir-mode lsp-mode lsp-ui) :straight t)
(add-to-list 'auto-mode-alist '("\\.exs\\'" . elixir-ts-mode))
(add-to-list 'auto-mode-alist '("\\.ex\\'" . elixir-ts-mode))
(add-to-list 'auto-mode-alist '("\\.heex\\'" . elixir-ts-mode))
(transient-define-prefix +custom-lang-elixir/transient-context-menu ()
"Elixir Buffer Commands."
[""
["LSP"
("m" "iMenu" lsp-ui-imenu)]
["Buffer"
("r" "Reload" revert-buffer-no-confirm)
("f" "Format" elixir-format)
("i" "Indent" mark-and-indent-whole-buffer)
("e" "Show Errors" flycheck-list-errors)]]
[""
("q" "Quit" keyboard-quit)])
(defun +custom-lang-elixir/activate-elixir-ts-mode ()
"All things Elixir."
(set-indent 2)
(column-enforce-n 98)
(lsp)
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
(setq-local lsp-eldoc-enable-hover nil)
(setq-local company-minimum-prefix-length 3)
;; If needed, switch the one below to false to disable documentation pop-ups
;; (setq-local lsp-ui-doc-enable t)
(define-key elixir-ts-mode-map (kbd "C-c l") '+custom-lang-elixir/transient-context-menu)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'elixir-ts-mode-hook '+custom-lang-elixir/activate-elixir-ts-mode)
(provide 'icejam-lang-elixir)
;;; icejam-lang-elixir.el ends here

View file

@ -0,0 +1,103 @@
;;; languages/erlang -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-lsp)
(require 'icejam-projectile)
(use-package erlang
:defer t
:straight t
:requires (lsp-mode lsp-ui))
(cl-defun erlang/emacs-path (erlang-version)
(car (split-string
(shell-command-to-string
(format "find $HOME/.asdf/installs/erlang/%s/ -name erlang.el"
erlang-version)) "erlang.el")))
(cl-defun erlang/erlang-path (erlang-version)
(format "$HOME/.asdf/installs/erlang/%s/" erlang-version))
(defun erlang/erlang-plist (erlang-version)
"Create property list for ERLANG-VERSION."
(list :version erlang-version
:erlang-path (erlang/erlang-path erlang-version)
:emacs-path (erlang/emacs-path erlang-version)))
(cl-defun erlang/installed-erlangs ()
(split-string
(shell-command-to-string
(format "asdf list erlang"))))
(cl-defun erlang/available-versions--plist ()
(mapcar 'erlang/erlang-plist (erlang/installed-erlangs)))
(defvar erlang/available-versions (erlang/available-versions--plist))
(cl-defun erlang/currently-in-use ()
(car (split-string (shell-command-to-string "asdf current erlang"))))
(cl-defun erlang/current-version--plistp (erlang-plist)
(equal (plist-get erlang-plist :version) (erlang/currently-in-use)))
(cl-defun erlang/current-plist ()
(seq-find 'erlang/current-version--plistp erlang/available-versions))
;; Flycheck checker for Erlang
(flycheck-define-checker erlang-otp
"An Erlang syntax checker using the Erlang interpreter."
:command ("erlc" "-o" temporary-directory "-Wall"
"-I" "../include" "-I" "../../include"
"-I" "../../../include" source)
:error-patterns
((warning line-start (file-name) ":" line ": Warning:" (message) line-end)
(error line-start (file-name) ":" line ": " (message) line-end))
:modes (my-erlang-mode))
(defun erlang/activate-erlang-mode ()
"All things for all Erlang, including header files."
(when (featurep 'erlang-start) (unload-feature 'erlang-start))
(defvar erlang/current-erlang (erlang/current-plist))
(add-to-list (make-local-variable 'load-path)
(plist-get erlang/current-erlang :emacs-path))
(add-to-list (make-local-variable 'exec-path)
(format "%slib/tools-3.1/emacs"
(plist-get erlang/current-erlang :erlang-path)))
(setq-local erlang-man-root-dir
(format "%sman"
(plist-get erlang/current-erlang :erlang-path)))
(require 'erlang-start)
(set-indent 4)
(column-enforce-n 80)
;; Add include path so that Erlang does not complain about
;; missing header files.
(setq-local flycheck-erlang-include-path
(list (format "%sdeps" (projectile-project-root))
(format "%s_build/default/lib" (projectile-project-root))
(format "%sinclude" (projectile-project-root))
(format "%sapps" (projectile-project-root))))
(setq-local flycheck-erlang-library-path
(list (format "%sdeps" (projectile-project-root))
(format "%s_build/default/lib" (projectile-project-root))
(format "%sapps" (projectile-project-root))))
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet))
;; Start LSP server
(lsp))
(add-hook 'erlang-mode-hook 'erlang/activate-erlang-mode)
(provide 'icejam-lang-erlang)
;;; icejam-lang-erlang.el ends here

View file

@ -0,0 +1,34 @@
;;; fsharp.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Fsharp configuration
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-lsp)
(use-package fsharp-mode
:requires (lsp-mode lsp-ui)
:straight t
:defer t)
(defun activate-fsharp-mode ()
"Activate F# goodies."
(set-indent 4)
(column-enforce-n 100)
(lsp-deferred)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'fsharp-mode-hook 'activate-fsharp-mode)
(provide 'icejam-lang-fsharp)
;;; icejam-lang-fsharp.el ends here

View file

@ -0,0 +1,31 @@
;;; gleam.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Gleam language support
;;; Code:
(require 'icejam-prog-mode)
(use-package gleam-mode
:requires (tree-sitter-indent lsp column-enforce-mode)
:straight '(:type git
:host github
:repo "gleam-lang/gleam-mode"
:files ("gleam-mode.el" "tree-sitter-gleam")))
(defun +custom-lang-gleam/activate-gleam-mode ()
"All things Gleam."
(set-indent 2)
(column-enforce-n 100)
(lsp))
(add-hook 'gleam-mode-hook '+custom-lang-gleam/activate-gleam-mode)
(provide 'icejam-lang-gleam)
;;; icejam-lang-gleam.el ends here

View file

@ -0,0 +1,28 @@
;;; golang.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; golang mode stuff
;;; Code:
(require 'icejam-prog-mode)
(use-package go-mode
:requires (lsp-mode lsp-ui)
:defer t
:straight t)
(defun activate-golang-mode ()
(set-indent 8)
(column-enforce-n 100)
(lsp))
(add-hook 'go-mode-hook 'activate-golang-mode)
(provide 'icejam-lang-golang)
;;; icejam-lang-golang.el ends here

View file

@ -0,0 +1,37 @@
;;; haskell.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;;; Provides configuration for haskell files
;;; Code:
(require 'icejam-prog-mode)
(use-package haskell-mode
:straight t
:defer t)
(use-package lsp-haskell
:straight t
:defer t
:requires (lsp-mode lsp-ui haskell-mode))
(defun activate-haskell-mode ()
"Run this in haskell-mode."
(set-indent 2)
(column-enforce-n 80)
(lsp-deferred)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'haskell-mode-hook 'activate-haskell-mode)
(provide 'icejam-lang-haskell)
;;; icejam-lang-haskell.el ends here

View file

@ -0,0 +1,47 @@
;;; javascript -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-flycheck)
(require 'icejam-lsp)
(use-package js2-mode
:requires (web-mode company-web lsp-mode lsp-ui)
:straight t)
(use-package typescript-mode :straight t)
;; (use-package vue-mode
;; :straight t
;; :defer t)
;; Use js2-mode for javascript editing
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
(add-to-list 'auto-mode-alist '("\\.json\\'" . js2-mode))
(defun activate-js2-mode ()
"JS2 mode overrides."
(set-indent 2)
(when (not (string-match-p ".json" (buffer-file-name)))
(lsp-deferred))
(column-enforce-n 80)
(setq-local js2-basic-offset 2)
(setq-local js2-strict-missing-semi-warning nil)
(setq-local lsp-eldoc-enable-hover nil)
(setq js2-mode-show-parse-errors nil)
(setq js2-mode-show-strict-warnings nil)
(setq-local lsp-eldoc-enable-hover nil)
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
;; "Company list override."
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'js2-mode-hook 'activate-js2-mode)
(provide 'icejam-lang-javascript)
;;; icejam-lang-javascript.el ends here

View file

@ -0,0 +1,34 @@
;;; kotlin.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; kotlin does a thing.
;;; Code:
(use-package kotlin-mode
:defer t
:straight t)
(use-package gradle-mode
:defer t
:straight t)
(defun activate-kotlin-mode ()
"All things Kotlin."
(set-indent 4)
(column-enforce-n 100)
(lsp)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'kotlin-mode-hook 'activate-kotlin-mode)
(provide 'icejam-lang-kotlin)
;;; icejam-lang-kotlin.el ends here

View file

@ -0,0 +1,31 @@
;;; lean -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-lsp)
(use-package lean4-mode
:straight (lean4-mode
:type git
:host github
:repo "leanprover/lean4-mode"
:files ("*.el" "data"))
:requires (lsp)
:defer t)
(defun activate-lean-mode ()
"All things for Lean mode."
(interactive)
;; Run LSP
(lsp-deferred)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'lean4-mode-hook 'activate-lean-mode)
(provide 'icejam-lang-lean)
;;; icejam-lang-lean.el ends here

View file

@ -0,0 +1,28 @@
;;; markdown -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(use-package markdown-mode
:straight t
:defer t
:init (setq-default markdown-command "pandoc"))
(defun +custom-lang-markdown/activate-markdown-mode ()
"Reconfigure markdown mode for your own purposes."
(set-indent 2)
(column-enforce-n 10000)
;; Markdown mode reuses my bindings, remove them.
(define-key markdown-mode-map (kbd "C-c <left>") nil)
(define-key markdown-mode-map (kbd "C-c <right>") nil)
(define-key markdown-mode-map (kbd "C-c <up>") nil)
(define-key markdown-mode-map (kbd "C-c <down>") nil)
(define-key markdown-mode-map (kbd "C-c C-v") 'markdown-preview))
(add-hook 'markdown-mode-hook '+custom-lang-markdown/activate-markdown-mode)
(add-hook 'markdown-mode-hook 'display-line-numbers-mode)
(provide 'icejam-lang-markdown)
;;; icejam-lang-markdown.el ends here

View file

@ -0,0 +1,95 @@
;;; ocaml -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-transient)
(use-package tuareg
:defer t
:straight t
:config
(add-hook 'tuareg-mode-hook 'merlin-mode))
(use-package merlin
:defer t
:straight t)
(use-package reason-mode
:defer t
:straight t
:config (setq refmt-command 'opam))
(use-package dune
:defer t
:straight t)
(transient-define-prefix +custom-lang-ocaml/context-menu ()
"Ocaml Actions."
["OCaml actions"
[""
("r" "Reload" revert-buffer-no-confirm)
("i" "Indent" mark-and-indent-whole-buffer)]
[""
("f" "Format" ocamlformat)
("e" "Opam Env" tuareg-opam-update-env)]]
[""
("q" "Quit" keyboard-quit)])
(defun load-ocaml-site-packages ()
"Generate ocaml config."
(let ((opam-share (ignore-errors (car (process-lines "opam" "var" "share")))))
(when (and opam-share (file-directory-p opam-share))
;; Register Merlin
(add-to-list 'load-path (expand-file-name "emacs/site-lisp" opam-share))
(autoload 'merlin-mode "merlin" nil t nil)
(autoload 'ocamlformat "ocamlformat" nil t nil)
(autoload 'utop "utop" nil t nil)
(autoload 'dune "dune" nil t nil)
;; Use opam switch to lookup ocamlmerlin binary
(setq merlin-command 'opam)))
(define-key tuareg-mode-map (kbd "C-c l") '+custom-lang-ocaml/context-menu))
;; OCaml setup
(add-hook 'tuareg-mode-hook 'merlin-mode)
(add-hook 'tuareg-mode-hook 'load-ocaml-site-packages)
(add-hook 'merlin-mode-hook (lambda ()
(unbind-key "C-c C-d" merlin-mode-map)
(unbind-key "C-c C-l" merlin-mode-map)
(unbind-key "C-c C-n" merlin-mode-map)
(unbind-key "C-c C-p" merlin-mode-map)
(unbind-key "C-c C-r" merlin-mode-map)
(unbind-key "C-c C-t" merlin-mode-map)
(unbind-key "C-c C-x" merlin-mode-map)
(unbind-key "C-c &" merlin-mode-map)))
;; Use tuareg-opam with lock files
(add-to-list 'auto-mode-alist '("\\.opam.locked\\'" . tuareg-opam-mode))
(transient-define-prefix +custom-lang-ocaml/reasonml-context-menu ()
"ReasonML Actions"
["ReasonML actions"
[""
("r" "Reload" revert-buffer-no-confirm)
("i" "Indent" mark-and-indent-whole-buffer)]
[""
("f" "Format" refmt)
("e" "Opam Env" tuareg-opam-update-env)]]
[""
("q" "Quit" keyboard-quit)])
(defun custom-lang-ocaml/activate-reason-mode ()
"Generate reason config."
(define-key
reason-mode-map (kbd "C-c l") '+custom-lang-ocaml/reasonml-context-menu))
;; Reason setup
(add-hook 'reason-mode-hook
(lambda ()
(add-hook 'before-save-hook #'refmt-before-save)))
(add-hook 'reason-mode-hook 'custom-lang-ocaml/activate-reason-mode)
(add-hook 'reason-mode-hook 'merlin-mode)
(provide 'icejam-lang-ocaml)
;;; icejam-lang-ocaml.el ends here

View file

@ -0,0 +1,42 @@
;;; other.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; Load other languages or syntaxes configuration that do not fit anywhere else.
;;; Code:
;; Infrastructure files
(use-package dockerfile-mode :straight t :defer t)
(use-package docker :straight t :defer t :ensure t)
(use-package terraform-mode :straight t :defer t)
(use-package ansible :straight t :defer t)
(use-package nginx-mode :straight t :defer t)
(use-package jenkinsfile-mode :straight t :defer t)
(use-package lua-mode :straight t :defer t)
(use-package graphql-mode :straight t :defer t)
(add-to-list 'auto-mode-alist '("\\.graphqls\\'" . graphql-mode))
;; Yaml
(use-package yaml-mode :straight t :defer t :requires (lsp))
(defun +custom-lang-yaml/activate-yaml-mode ()
"Activate yaml-mode."
(lsp))
(add-hook 'yaml-mode-hook '+custom-lang-yaml/activate-yaml-mode)
;; Other text files
(use-package json-mode :straight t :defer t)
(use-package git-modes
:straight t
:defer t
:hook ((gitignore-mode . whitespace-mode)
(before-save . whitespace-cleanup)))
(provide 'icejam-lang-other)
;;; icejam-lang-other.el ends here

View file

@ -0,0 +1,49 @@
;;; php.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; php related settings
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-flycheck)
(require 'icejam-transient)
(use-package php-mode
:requires (lsp-mode lsp-ui)
:straight t)
(transient-define-prefix +custom-lang-php/context-menu ()
"PHP Buffer Commands."
[""
["LSP"
("m" "iMenu" lsp-ui-imenu)]
["Buffer"
("r" "Reload" revert-buffer-no-confirm)
("f" "Format" lsp-format-buffer)
("i" "Indent" mark-and-indent-whole-buffer)
("e" "Show Errors" flycheck-list-errors)]]
[""
("q" "Quit" keyboard-quit)])
(defun +custom-lang-php/activate-php-mode ()
"All things php."
(set-indent 4)
(column-enforce-n 80)
(define-key php-mode-map (kbd "C-c l") '+custom-lang-php/context-menu)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'php-mode-hook '+custom-lang-php/activate-php-mode)
(provide 'icejam-lang-php)
;;; icejam-lang-php.el ends here

View file

@ -0,0 +1,31 @@
;;; purescript.el --- summary -*- lexical-binding: t; -*-
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; purescript does a thing.
;;; Code:
(use-package purescript-mode
:requires (lsp-mode lsp-ui)
:straight t)
(defun activate-purescript-mode ()
"All things Purescript."
(set-indent 2)
(column-enforce-n 98)
;; Purescript indentation
(purescript-indentation-mode t)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'purescript-mode-hook 'activate-purescript-mode)
(provide 'icejam-lang-purescript)
;;; icejam-lang-purescript.el ends here

View file

@ -0,0 +1,36 @@
;;; python -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-transient)
(transient-define-prefix +custom-lang-python/transient-context-menu ()
"Python Buffer Commands."
[""
["LSP"
("m" "iMenu" lsp-ui-imenu)]
["Buffer"
("r" "Reload" revert-buffer-no-confirm)
("f" "Format" lsp-format-buffer)
("i" "Indent" mark-and-indent-whole-buffer)
("e" "Show Errors" flycheck-list-errors)]]
[""
("q" "Quit" keyboard-quit)])
(defun +custom-lang-python/activate-python-mode ()
(lsp)
(column-enforce-n 99)
(define-key python-mode-map (kbd "C-c l") '+custom-lang-python/transient-context-menu)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'python-mode-hook '+custom-lang-python/activate-python-mode)
(provide 'icejam-lang-python)
;;; icejam-lang-python.el ends here

View file

@ -0,0 +1,40 @@
;;; ruby -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(require 'icejam-projectile)
(use-package rspec-mode :straight t :defer t)
(use-package ruby-end :straight t :defer t)
(use-package rbs-mode :straight t :defer t)
(use-package enh-ruby-mode
:requires (rspec-mode ruby-end)
:straight t
:defer t)
(defun activate-ruby-mode ()
"All things for ruby mode."
(set-indent 2)
;; Disable reek syntax checking permanently
(add-to-list (make-local-variable 'flycheck-disabled-checkers) 'ruby-reek 'ruby-rubocop)
;; Do not insert magic encoding comment at the begining of each file
(setq ruby-insert-encoding-magic-comment nil)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'ruby-mode-hook 'enh-ruby-mode)
(add-hook 'enh-ruby-mode-hook 'rspec-mode)
(add-hook 'enh-ruby-mode-hook 'ruby-end-mode)
(eval-after-load 'rspec-mode
'(rspec-install-snippets))
(add-hook 'enh-ruby-mode-hook 'activate-ruby-mode)
;; (add-hook 'enh-ruby-mode-hook 'lsp-deferred)
(provide 'icejam-lang-ruby)
;;; icejam-lang-ruby.el ends here

View file

@ -0,0 +1,33 @@
;;; rust -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-prog-mode)
(use-package rust-mode
:straight t
:defer t)
(use-package flycheck-rust
:straight t
:defer t
:requires (rust-mode lsp))
(defun activate-rust-mode ()
"All things for Rust mode."
(interactive)
(set-indent 4)
(column-enforce-n 99)
;; Run LSP
(lsp-deferred)
;; Company list override
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet)))
(add-hook 'rust-mode-hook 'activate-rust-mode)
(add-hook 'rust-mode-hook 'flycheck-rust-setup)
(provide 'icejam-lang-rust)
;;; icejam-lang-rust.el ends here

View file

@ -0,0 +1,13 @@
;;; sh -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(use-package fish-mode :straight t :defer t)
(add-to-list 'auto-mode-alist '("\\.zsh\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\zshrc\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.zshrc\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.envrc\\'" . sh-mode))
(provide 'icejam-lang-sh)
;;; icejam-lang-sh.el ends here

View file

@ -0,0 +1,50 @@
;;; web -- summary -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'icejam-lsp)
(require 'icejam-flycheck)
(use-package web-mode
:requires (lsp-mode flycheck)
:straight t)
;; Eex Web mode
(add-to-list 'auto-mode-alist '("\\.eex\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.leex\\'" . web-mode))
;; ERB mode
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
;; Vue JS
(add-to-list 'auto-mode-alist '("\\.vue\\'" . web-mode))
(setq web-mode-extra-auto-pairs
'(("eex" . (("<%" "%>")))
("leex" . (("<%" "%>")))
("erb" . (("<%" "%>")
("beg" "end")))))
(defun activate-web-mode ()
"Web mode overrides."
;; Indent web mode scripts by 2
(setq-local web-mode-script-padding 2)
(setq-local web-mode-code-indent-offset 2)
(setq-local web-mode-markup-indent-offset 2)
(setq-local lsp-eldoc-enable-hover nil)
(setq-local flycheck-check-syntax-automatically '(save mode-enabled))
(add-to-list (make-local-variable 'company-backends)
'(company-capf company-yasnippet))
(when (string-match-p ".jsx" (buffer-file-name))
(lsp))
(when (string-match-p ".tsx" (buffer-file-name))
(lsp))
(when (string-match-p ".vue" (buffer-file-name))
(lsp)))
(add-hook 'web-mode-hook 'activate-web-mode)
(provide 'icejam-lang-web)
;;; icejam-lang-web.el ends here

View file

@ -0,0 +1,29 @@
;;; ziglang.el --- summary
;; Author: Maciej Szlosarczyk
;; Maintainer: Maciej Szlosarczyk
;; Version: 0.1-snapshot
;;; Commentary:
;; ziglang does a thing.
;;; Code:
(require 'icejam-prog-mode)
(use-package zig-mode :straight t :defer t :requires (lsp))
(defun activate-zig-mode ()
"Goodies for editing zig files."
;; Set column width to 100
(column-enforce-n 100)
;; Set indentation to 4 chars
(set-indent 4)
(lsp))
(add-hook 'zig-mode-hook 'activate-zig-mode)
(provide 'icejam-lang-ziglang)
;;; icejam-lang-ziglang.el ends here