mirror of
https://github.com/willemml/dotfiles.nix.git
synced 2025-04-12 19:27:17 +00:00
create polymodes for nix
This commit is contained in:
parent
38cb4125ac
commit
76eb31c5e7
3 changed files with 38 additions and 8 deletions
|
@ -74,6 +74,7 @@
|
||||||
in {
|
in {
|
||||||
home.packages = with pkgs;
|
home.packages = with pkgs;
|
||||||
[
|
[
|
||||||
|
alejandra
|
||||||
autoconf
|
autoconf
|
||||||
automake
|
automake
|
||||||
bash
|
bash
|
||||||
|
|
|
@ -86,6 +86,8 @@
|
||||||
org-modern
|
org-modern
|
||||||
pdf-tools
|
pdf-tools
|
||||||
plantuml-mode
|
plantuml-mode
|
||||||
|
polymode
|
||||||
|
poly-org
|
||||||
rustic
|
rustic
|
||||||
separedit
|
separedit
|
||||||
solarized-theme
|
solarized-theme
|
||||||
|
|
|
@ -12,9 +12,6 @@
|
||||||
|
|
||||||
(setq inhibit-default-init t)
|
(setq inhibit-default-init t)
|
||||||
|
|
||||||
;; Accept 'y' and 'n' rather than 'yes' and 'no'.
|
|
||||||
(defalias 'yes-or-no-p 'y-or-n-p)
|
|
||||||
|
|
||||||
;; Typically, I only want spaces when pressing the TAB key. I also
|
;; Typically, I only want spaces when pressing the TAB key. I also
|
||||||
;; want 4 of them.
|
;; want 4 of them.
|
||||||
(setq-default indent-tabs-mode nil
|
(setq-default indent-tabs-mode nil
|
||||||
|
@ -100,6 +97,7 @@
|
||||||
(require 'ox-latex)
|
(require 'ox-latex)
|
||||||
(require 'pdf-tools)
|
(require 'pdf-tools)
|
||||||
(require 'plantuml-mode)
|
(require 'plantuml-mode)
|
||||||
|
(require 'polymode)
|
||||||
(require 'rustic)
|
(require 'rustic)
|
||||||
(require 'smtpmail-async)
|
(require 'smtpmail-async)
|
||||||
(require 'swiper)
|
(require 'swiper)
|
||||||
|
@ -122,9 +120,6 @@
|
||||||
(setq calibredb-db-dir (expand-file-name "metadata.db" calibredb-root-dir))
|
(setq calibredb-db-dir (expand-file-name "metadata.db" calibredb-root-dir))
|
||||||
(setq calibredb-library-alist '(("~/Documents/calibre-library")))
|
(setq calibredb-library-alist '(("~/Documents/calibre-library")))
|
||||||
|
|
||||||
;; TODO: temporary fix for company-mode#1381
|
|
||||||
(delete 'company-files company-backends)
|
|
||||||
|
|
||||||
(add-hook 'after-init-hook 'global-company-mode)
|
(add-hook 'after-init-hook 'global-company-mode)
|
||||||
|
|
||||||
;; Align company-mode tooltips to the right hand side
|
;; Align company-mode tooltips to the right hand side
|
||||||
|
@ -132,7 +127,6 @@
|
||||||
;; Display number of completions before and after current suggestions
|
;; Display number of completions before and after current suggestions
|
||||||
;; in company-mode
|
;; in company-mode
|
||||||
(setq company-tooltip-offset-display 'lines)
|
(setq company-tooltip-offset-display 'lines)
|
||||||
;; Display text icon of type in company popup
|
|
||||||
|
|
||||||
(global-set-key "\C-s" 'swiper)
|
(global-set-key "\C-s" 'swiper)
|
||||||
(global-set-key (kbd "C-c C-r") 'ivy-resume)
|
(global-set-key (kbd "C-c C-r") 'ivy-resume)
|
||||||
|
@ -315,7 +309,37 @@
|
||||||
|
|
||||||
(add-hook 'mu4e-compose-pre-hook 'my-mu4e-set-account)
|
(add-hook 'mu4e-compose-pre-hook 'my-mu4e-set-account)
|
||||||
|
|
||||||
(add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-mode))
|
(define-hostmode poly-nix-hostmode :mode 'nix-mode)
|
||||||
|
|
||||||
|
(define-auto-innermode poly-any-expr-nix-innermode
|
||||||
|
:head-matcher (rx (zero-or-more blank) "/*" (zero-or-more blank) bow (one-or-more (or word punct)) eow (zero-or-more blank) "*/" (zero-or-more blank) "''\n")
|
||||||
|
:mode-matcher (cons (rx "/*" (zero-or-more blank) (submatch bow (one-or-more (or word punct)) eow) (zero-or-more blank) "*/") 1)
|
||||||
|
:tail-matcher (rx (zero-or-more blank) "'';\n")
|
||||||
|
:head-mode 'host
|
||||||
|
:tail-mode 'host
|
||||||
|
:fallback-mode 'text-mode)
|
||||||
|
|
||||||
|
(define-innermode poly-elisp-expr-nix-innermode
|
||||||
|
:mode 'emacs-lisp-mode
|
||||||
|
:head-matcher (cons (rx (zero-or-more blank) "''\n" (submatch (zero-or-more blank) ";")) 1)
|
||||||
|
:tail-matcher (rx (zero-or-more blank) "'';\n")
|
||||||
|
:head-mode 'body
|
||||||
|
:tail-mode 'host)
|
||||||
|
|
||||||
|
(define-innermode poly-sh-expr-nix-innermode
|
||||||
|
:mode 'sh-mode
|
||||||
|
:head-matcher (cons (rx (zero-or-more blank) "''\n" (submatch (zero-or-more blank) "#")) 1)
|
||||||
|
:tail-matcher (rx (zero-or-more blank) "'';\n")
|
||||||
|
:head-mode 'body
|
||||||
|
:tail-mode 'host)
|
||||||
|
|
||||||
|
(define-polymode poly-nix-mode
|
||||||
|
:hostmode 'poly-nix-hostmode
|
||||||
|
:innermodes '(poly-any-expr-nix-innermode poly-sh-expr-nix-innermode poly-elisp-expr-nix-innermode))
|
||||||
|
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.nix$" . poly-nix-mode))
|
||||||
|
|
||||||
|
(add-to-list 'format-all-default-formatters '("Nix" alejandra))
|
||||||
|
|
||||||
(define-key nix-mode-map (kbd "C-c C-u") 'nix-update-fetch)
|
(define-key nix-mode-map (kbd "C-c C-u") 'nix-update-fetch)
|
||||||
|
|
||||||
|
@ -469,5 +493,8 @@ Opens in new window otherwise opens in current window."
|
||||||
|
|
||||||
(setq yas-snippet-dirs '((expand-file-name "snippets" org-directory)))
|
(setq yas-snippet-dirs '((expand-file-name "snippets" org-directory)))
|
||||||
|
|
||||||
|
;; Accept 'y' and 'n' rather than 'yes' and 'no'.
|
||||||
|
(defalias 'yes-or-no-p 'y-or-n-p)
|
||||||
|
|
||||||
(provide 'init)
|
(provide 'init)
|
||||||
;;; init.el ends here
|
;;; init.el ends here
|
||||||
|
|
Loading…
Add table
Reference in a new issue