diff options
author | Jeff Valk <jv@jeffvalk.com> | 2014-05-15 23:10:32 -0400 |
---|---|---|
committer | Jeff Valk <jv@jeffvalk.com> | 2014-05-16 13:07:18 -0400 |
commit | 941bc9daa8aace26346cfc24df36cf2c064867ec (patch) | |
tree | df3a2f8dd6645d37f33267839a2de72c626ac2c6 /cider-stacktrace.el | |
parent | bb6c5ba40859daaba8a5b27648128057c0e150bf (diff) |
Make stacktrace a major mode; disable electric-indent in it.
Diffstat (limited to 'cider-stacktrace.el')
-rw-r--r-- | cider-stacktrace.el | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/cider-stacktrace.el b/cider-stacktrace.el index c39f88b4..43c84dbf 100644 --- a/cider-stacktrace.el +++ b/cider-stacktrace.el @@ -27,6 +27,7 @@ (require 'button) (require 'dash) +(require 'easymenu) ;; Variables @@ -94,6 +95,7 @@ If nil, messages will not be wrapped. If truthy but non-numeric, (defvar cider-stacktrace-mode-map (let ((map (make-sparse-keymap))) (define-key map (kbd "M-.") 'cider-stacktrace-jump) + (define-key map "q" 'cider-popup-buffer-quit-function) (define-key map "j" 'cider-stacktrace-toggle-java) (define-key map "c" 'cider-stacktrace-toggle-clj) (define-key map "r" 'cider-stacktrace-toggle-repl) @@ -102,13 +104,23 @@ If nil, messages will not be wrapped. If truthy but non-numeric, (define-key map "a" 'cider-stacktrace-show-all) map)) -(define-minor-mode cider-stacktrace-mode - "CIDER Stacktrace Buffer Mode." - nil - (" CIDER Stacktrace") - cider-stacktrace-mode-map +(easy-menu-define cider-stacktrace-mode-menu cider-stacktrace-mode-map + "Menu for CIDER's stacktrace mode" + '("Stacktrace" + ["Show/hide Java frames" cider-stacktrace-toggle-java] + ["Show/hide Clojure frames" cider-stacktrace-toggle-clj] + ["Show/hide REPL frames" cider-stacktrace-toggle-repl] + ["Show/hide tooling frames" cider-stacktrace-toggle-tooling] + ["Show/hide duplicate frames" cider-stacktrace-toggle-duplicates] + ["Show/hide all frames" cider-stacktrace-show-all])) + +(define-derived-mode cider-stacktrace-mode fundamental-mode "Stacktrace" + "Major mode for filtering and navigating CIDER stacktraces + +\\{cider-stacktrace-mode-map}" (setq buffer-read-only t) (setq-local truncate-lines t) + (setq-local electric-indent-functions (list (lambda (x) 'no-indent))) (setq-local cider-stacktrace-hidden-frame-count 0) (setq-local cider-stacktrace-filters cider-stacktrace-default-filters)) @@ -299,6 +311,7 @@ This associates text properties to enable filtering and source navigation." (defun cider-stacktrace-render (buffer causes frames) "Emit into BUFFER useful stacktrace information for the CAUSES and FRAMES." (with-current-buffer buffer + (cider-stacktrace-mode) (let ((inhibit-read-only t)) ;; Exceptions (cider-stacktrace-render-cause buffer (first causes) "Unhandled") @@ -320,8 +333,7 @@ This associates text properties to enable filtering and source navigation." ;; Stacktrace frames (dolist (frame frames) (cider-stacktrace-render-frame buffer frame))) - ;; Set mode, apply filters, move point to first stacktrace frame. - (cider-stacktrace-mode 1) + ;; Apply filters, move point to first stacktrace frame, and fontify. (cider-stacktrace-apply-filters cider-stacktrace-filters) (goto-char (next-single-property-change (point-min) 'flags)) (font-lock-refresh-defaults))) |