;;;; Place this file in one of the directories on your emacs load-path
;;;; In .emacs, if you use use-package:
;; (use-package sailfish-mode
;; :mode
;; ("\\.stpl\\'" . poly-sailfish-fundamental-mode)
;; ("\\.stpl\\.rs\\'" . poly-sailfish-rust-mode)
;; ("\\.stpl\\.html\\'" . poly-sailfish-html-mode))
;;;; If you have LSP mode set up to run automatically in
;;;; prog-mode-hook or the like, you might want to make it
;;;; conditional:
;; (if (and buffer-file-name
;; (not (string-match "\\.stpl\\(\\.\\|\\'\\)" buffer-file-name)))
;; (lsp))
(require 'polymode-core)
(require 'polymode-base)
(define-hostmode poly-sailfish-rust-hostmode
:mode 'rust-mode)
(define-innermode poly-sailfish-rust-innermode
:mode 'rust-mode
:head-matcher "<%[=+-]?"
:tail-matcher "%>")
(define-innermode poly-sailfish-comment-innermode
:mode 'fundamental-mode
:head-matcher "<%#"
:tail-matcher "%>")
(define-innermode poly-sailfish-js-innermode
:mode 'javascript-mode
:head-matcher ""
:head-mode 'host
:tail-mode 'host)
(define-innermode poly-sailfish-css-innermode
:mode 'css-mode
:head-matcher ""
:head-mode 'host
:tail-mode 'host)
(define-polymode poly-sailfish-html-mode
:hostmode 'poly-html-hostmode
:innermodes '(poly-sailfish-rust-innermode poly-sailfish-comment-innermode poly-sailfish-js-innermode poly-sailfish-css-innermode))
(define-polymode poly-sailfish-rust-mode
:hostmode 'poly-sailfish-rust-hostmode
:innermodes '(poly-sailfish-rust-innermode poly-sailfish-comment-innermode))
(define-polymode poly-sailfish-fundamental-mode
:hostmode 'poly-fundamental-hostmode
:innermodes '(poly-sailfish-rust-innermode poly-sailfish-comment-innermode))
(add-to-list 'auto-mode-alist '("\\.html\\.stpl\\'" . poly-sailfish-html-mode))
(add-to-list 'auto-mode-alist '("\\.stpl\\.html\\'" . poly-sailfish-html-mode))
(add-to-list 'auto-mode-alist '("\\.rs\\.stpl\\'" . poly-sailfish-rust-mode))
(add-to-list 'auto-mode-alist '("\\.stpl\\.rs\\'" . poly-sailfish-rust-mode))
(add-to-list 'auto-mode-alist '("\\.stpl\\'" . poly-sailfish-fundamental-mode))
(add-to-list 'auto-mode-alist '("\\.html\\.st\\'" . poly-sailfish-html-mode))
(add-to-list 'auto-mode-alist '("\\.html\\.st\\'" . poly-sailfish-html-mode))
(add-to-list 'auto-mode-alist '("\\.st\\.rs\\'" . poly-sailfish-rust-mode))
(add-to-list 'auto-mode-alist '("\\.st\\.rs\\'" . poly-sailfish-rust-mode))
(add-to-list 'auto-mode-alist '("\\.st\\'" . poly-sailfish-fundamental-mode))