diff --git a/init.example.el b/init.example.el index d796af67b..86187556b 100644 --- a/init.example.el +++ b/init.example.el @@ -129,6 +129,7 @@ (sh +fish) ; she sells (ba|z|fi)sh shells on the C xor ;;solidity ; do you need a blockchain? No. ;;swift ; who asked for emoji variables? + ;;terra ; Earth and Moon in alignment for performance. ;;web ; the tubes ;;vala ; GObjective-C diff --git a/modules/lang/terra/autoload.el b/modules/lang/terra/autoload.el new file mode 100644 index 000000000..0920c3e08 --- /dev/null +++ b/modules/lang/terra/autoload.el @@ -0,0 +1,8 @@ +;;; lang/terra/autoload.el -*- lexical-binding: t; -*- + +;;;###autoload +(defun +terra/open-repl () + "Open Terra REPL." + (interactive) + (terra-start-process "terra" "terra") + (pop-to-buffer terra-process-buffer)) diff --git a/modules/lang/terra/config.el b/modules/lang/terra/config.el new file mode 100644 index 000000000..27515edb6 --- /dev/null +++ b/modules/lang/terra/config.el @@ -0,0 +1,12 @@ +;;; lang/lua/config.el -*- lexical-binding: t; -*- + +;; +;; Major modes + +(def-package! terra-mode + :defer t + :config + (set-lookup-handlers! 'terra-mode :documentation 'terra-search-documentation) + (set-electric! 'terra-mode :words '("else" "end")) + (set-repl-handler! 'terra-mode #'+terra/open-repl) + (set-company-backend! 'terra-mode '(company-lua company-yasnippet))) diff --git a/modules/lang/terra/packages.el b/modules/lang/terra/packages.el new file mode 100644 index 000000000..90115f396 --- /dev/null +++ b/modules/lang/terra/packages.el @@ -0,0 +1,8 @@ +;; -*- no-byte-compile: t; -*- +;;; lang/lua/packages.el + +(package! terra-mode :recipe (:fetcher github :repo "StanfordLegion/terra-mode")) + +(when (featurep! :completion company) + (package! company-lua)) +