From 33b3f7b7fb6bf564857e96e46d291a6709962918 Mon Sep 17 00:00:00 2001 From: Daniel <89086143+BardofSprites@users.noreply.github.com> Date: Sat, 26 Oct 2024 15:15:11 -0400 Subject: compile settings --- bard-elisp/bard-compile.el | 53 +++++++++++++++++++++++++++++++++++ bard-emacs-modules/bard-emacs-prog.el | 13 ++++++--- 2 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 bard-elisp/bard-compile.el diff --git a/bard-elisp/bard-compile.el b/bard-elisp/bard-compile.el new file mode 100644 index 0000000..5c4d20f --- /dev/null +++ b/bard-elisp/bard-compile.el @@ -0,0 +1,53 @@ +;; Stolen from (http://endlessparentheses.com/ansi-colors-in-the-compilation-buffer-output.html) +(require 'ansi-color) +(defun endless/colorize-compilation () + "Colorize from `compilation-filter-start' to `point'." + (let ((inhibit-read-only t)) + (ansi-color-apply-on-region + compilation-filter-start (point)))) + +(add-hook 'compilation-filter-hook + #'endless/colorize-compilation) + +;; Stolen from (https://oleksandrmanzyuk.wordpress.com/2011/11/05/better-emacs-shell-part-i/) +(defun regexp-alternatives (regexps) + "Return the alternation of a list of regexps." + (mapconcat (lambda (regexp) + (concat "\\(?:" regexp "\\)")) + regexps "\\|")) + +(defvar non-sgr-control-sequence-regexp nil + "Regexp that matches non-SGR control sequences.") + +(setq non-sgr-control-sequence-regexp + (regexp-alternatives + '(;; icon name escape sequences + "\033\\][0-2];.*?\007" + ;; non-SGR CSI escape sequences + "\033\\[\\??[0-9;]*[^0-9;m]" + ;; noop + "\012\033\\[2K\033\\[1F" + ))) + +(defun filter-non-sgr-control-sequences-in-region (begin end) + (save-excursion + (goto-char begin) + (while (re-search-forward + non-sgr-control-sequence-regexp end t) + (replace-match "")))) + +(defun filter-non-sgr-control-sequences-in-output (ignored) + (let ((start-marker + (or comint-last-output-start + (point-min-marker))) + (end-marker + (process-mark + (get-buffer-process (current-buffer))))) + (filter-non-sgr-control-sequences-in-region + start-marker + end-marker))) + +(add-hook 'comint-output-filter-functions + 'filter-non-sgr-control-sequences-in-output) + +(provide 'bard-compile) diff --git a/bard-emacs-modules/bard-emacs-prog.el b/bard-emacs-modules/bard-emacs-prog.el index e84b39a..cdda570 100644 --- a/bard-emacs-modules/bard-emacs-prog.el +++ b/bard-emacs-modules/bard-emacs-prog.el @@ -1,9 +1,5 @@ (use-package haskell-mode :ensure t - :hook - ((haskell-mode . interactive-haskell-mode) - (haskell-mode . haskell-doc-mode) - (haskell-mode . haskell-indent-mode)) :config (setq haskell-interactive-popup-errors nil)) @@ -81,6 +77,15 @@ (when (derived-mode-p 'c-mode 'c++-mode 'java-mode) (ggtags-mode 1))))) +(use-package compile + :ensure nil + :defer 2 + :config + (require 'bard-compile) + (setq compilation-scroll-output t + compilation-auto-jump-to-first-error t) + ) + ;; Version control (define-key global-map (kbd "C-c g") #'magit-status) (setq magit-repository-directories -- cgit v1.2.3