diff options
| author | Daniel <[email protected]> | 2024-10-26 15:15:11 -0400 |
|---|---|---|
| committer | Daniel <[email protected]> | 2024-10-26 15:17:30 -0400 |
| commit | 33b3f7b7fb6bf564857e96e46d291a6709962918 (patch) | |
| tree | 35b5030282fb36344f13c3555ec484d276f31a31 /bard-elisp/bard-compile.el | |
| parent | d7505cb3b10cd8134bf6207b1625c4afabdce439 (diff) | |
compile settings
Diffstat (limited to 'bard-elisp/bard-compile.el')
| -rw-r--r-- | bard-elisp/bard-compile.el | 53 |
1 files changed, 53 insertions, 0 deletions
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) |
