doomemacs/modules/lang/gdscript/config.el
Henrik Lissner 3d99fbf525
tweak(gdscript): open godot log buffers in popup
Includes an advice to prevent the log buffer from being focused. This
way, the user can return to their work faster when in their play-debug
loop, as well as kill the game/Godot by killing the log buffer
remotely (with its process) with C-g/ESC.
2024-07-13 19:38:20 -04:00

53 lines
2 KiB
EmacsLisp

;;; lang/gdscript/config.el -*- lexical-binding: t; -*-
(after! projectile
(add-to-list 'projectile-project-root-files "project.godot"))
;;
;;; Packages
(use-package! gdscript-mode
:defer t
:config
(set-lookup-handlers! 'gdscript-mode
:documentation '(gdscript-docs-browse-symbol-at-point :async t))
(set-formatter! 'gdformat '("gdformat" "-") :modes '(gdscript-mode))
(set-popup-rule! "^\\*godot " :ttl 0 :quit t)
(defadvice! +gdscript--dont-focus-output-buffer-a (fn &rest args)
"Don't move cursor into gdscript compilation window."
:around #'gdscript-comint--run
(save-selected-window (apply fn args)))
;; eww is clumsy and slow. Best that `gdscript-docs-browse-symbol-at-point'
;; simply use the browser.
;; REVIEW: Maybe it's permissible if `gdscript-docs-local-path' is set?
(setq gdscript-docs-use-eww nil)
(when (modulep! +lsp)
(add-hook 'gdscript-mode-local-vars-hook #'lsp! 'append))
(map! :localleader
:map gdscript-mode-map
(:prefix ("r" . "run")
:desc "Open project in Godot" "e" #'gdscript-godot-open-project-in-editor
:desc "Run project" "p" #'gdscript-godot-run-project
:desc "Run debug" "d" #'gdscript-godot-run-project-debug
:desc "Run current scene" "s" #'gdscript-godot-run-current-scene)
(:prefix ("d" . "debug")
:desc "Toggle breakpoint" "d" #'gdscript-debug-toggle-breakpoint
:desc "Display breakpoint buffer" "b" #'gdscript-debug-display-breakpoint-buffer
:desc "Continue execution" "c" #'gdscript-debug-continue
:desc "Next" "n" #'gdscript-debug-next
:desc "Step" "s" #'gdscript-debug-step)
(:prefix ("h" . "help")
:desc "Browse online API" "b" #'gdscript-docs-browse-api
:desc "Browse API at point" "f" #'gdscript-docs-browse-symbol-at-point)
(:prefix ("f" . "format")
:desc "Format buffer" "b" #'gdscript-format-buffer
:desc "Format region" "r" #'gdscript-format-region)))