From 7875f0c5303ca8d80cda57e01b4125a305c1c586 Mon Sep 17 00:00:00 2001 From: CeleritasCelery Date: Tue, 18 Jul 2017 15:54:00 -0600 Subject: [PATCH] create debug layer --- layers/+lang/c-c++/README.org | 18 --------- layers/+lang/c-c++/funcs.el | 9 ----- layers/+lang/c-c++/packages.el | 29 ++------------ layers/+lang/perl5/README.org | 8 ++-- layers/+lang/perl5/packages.el | 4 ++ layers/+tools/debug/README.org | 63 ++++++++++++++++++++++++++++++ layers/+tools/debug/config.el | 14 +++++++ layers/+tools/debug/funcs.el | 28 +++++++++++++ layers/+tools/debug/img/debug.png | Bin 0 -> 3378 bytes layers/+tools/debug/packages.el | 45 +++++++++++++++++++++ layers/LAYERS.org | 1 + 11 files changed, 163 insertions(+), 56 deletions(-) create mode 100644 layers/+tools/debug/README.org create mode 100644 layers/+tools/debug/config.el create mode 100644 layers/+tools/debug/funcs.el create mode 100644 layers/+tools/debug/img/debug.png create mode 100644 layers/+tools/debug/packages.el diff --git a/layers/+lang/c-c++/README.org b/layers/+lang/c-c++/README.org index b318a668345a..2ecfe1425b5f 100644 --- a/layers/+lang/c-c++/README.org +++ b/layers/+lang/c-c++/README.org @@ -13,7 +13,6 @@ - [[#clang-format][clang-format]] - [[#company-clang-and-flycheck][Company-clang and flycheck]] - [[#key-bindings][Key Bindings]] - - [[#debugger-realgud][Debugger (realgud)]] * Description This layer adds configuration for C/C++ language as well support for [[https://cmake.org/][CMake]] @@ -114,20 +113,3 @@ doesn't complain about missing header files. | ~SPC m r~ | srefactor: refactor thing at point. | *Note:* [[https://github.com/tuhdo/semantic-refactor][semantic-refactor]] is only available for Emacs 24.4+ - -** Debugger (realgud) - - | Key Binding | Description | - |-------------+-----------------| - | ~SPC m d d~ | open cmd buffer | - | ~SPC m d e~ | eval variable | - | ~s~ | step over | - | ~i~ | step into | - | ~b~ | set break | - | ~B~ | unset break | - | ~o~ | step out | - | ~c~ | continue | - | ~e~ | eval variable | - | ~r~ | restart | - | ~q~ | quit debug | - | ~S~ | goto cmd buffer | diff --git a/layers/+lang/c-c++/funcs.el b/layers/+lang/c-c++/funcs.el index 5c5d0e183a9b..8f27f9c195d6 100644 --- a/layers/+lang/c-c++/funcs.el +++ b/layers/+lang/c-c++/funcs.el @@ -69,12 +69,3 @@ and the arguments for flyckeck-clang based on a project-specific text file." (append '("/usr/include" "/usr/local/include") dirs)) (setq-local flycheck-clang-args flags)))) - - -;; realgud - -(defun spacemacs//short-key-state (modeon) - "Set evil-evilified-state explicitly." - (if modeon - (evil-evilified-state) - (evil-normal-state))) diff --git a/layers/+lang/c-c++/packages.el b/layers/+lang/c-c++/packages.el index 495b70607431..fa551a1f5739 100644 --- a/layers/+lang/c-c++/packages.el +++ b/layers/+lang/c-c++/packages.el @@ -109,32 +109,9 @@ (dolist (mode c-c++-modes) (spacemacs/helm-gtags-define-keys-for-mode mode))) -(defun c-c++/init-realgud() - (use-package realgud - :defer t - :commands (realgud:gdb) - :init - (progn - (dolist (mode c-c++-modes) - (spacemacs/set-leader-keys-for-major-mode mode - "dd" 'realgud:gdb - "de" 'realgud:cmd-eval-dwim)) - (advice-add 'realgud-short-key-mode-setup - :before #'spacemacs//short-key-state) - (evilified-state-evilify-map realgud:shortkey-mode-map - :eval-after-load realgud - :mode realgud-short-key-mode - :bindings - "s" 'realgud:cmd-next - "i" 'realgud:cmd-step - "b" 'realgud:cmd-break - "B" 'realgud:cmd-clear - "o" 'realgud:cmd-finish - "c" 'realgud:cmd-continue - "e" 'realgud:cmd-eval - "r" 'realgud:cmd-restart - "q" 'realgud:cmd-quit - "S" 'realgud-window-cmd-undisturb-src)))) +(defun c-c++/pre-init-realgud() + (dolist (mode c-c++-modes) + (spacemacs|add-realgud-debugger mode "gdb"))) (defun c-c++/post-init-semantic () (spacemacs/add-to-hooks 'semantic-mode c-c++-mode-hooks)) diff --git a/layers/+lang/perl5/README.org b/layers/+lang/perl5/README.org index 32a549709ad7..99111c3d836b 100644 --- a/layers/+lang/perl5/README.org +++ b/layers/+lang/perl5/README.org @@ -4,7 +4,7 @@ * Table of Contents :TOC_4_gh:noexport: - [[#description][Description]] - - [[#features][Features]] + - [[#features][Features:]] - [[#install][Install]] - [[#layer][Layer]] - [[#key-bindings][Key Bindings]] @@ -15,8 +15,10 @@ * Description This layer adds support for the Perl5 language. -** Features -- syntactic and semantic checking using [[https://github.com/flycheck/flycheck][flycheck]] +** Features: +- syntactic and semantic checking via flycheck with =perl -c= and =perlcritic= +- jump to symbol via dump jump +- interactive debug via [[https://github.com/realgud/realgud][realgud]] with [[http://search.cpan.org/~rocky/Devel-Trepan-0.73/lib/Devel/Trepan.pm][trepan.pl]] * Install ** Layer diff --git a/layers/+lang/perl5/packages.el b/layers/+lang/perl5/packages.el index 21f36c3a6e7f..db0508925f54 100644 --- a/layers/+lang/perl5/packages.el +++ b/layers/+lang/perl5/packages.el @@ -14,6 +14,7 @@ (cperl-mode :location built-in) smartparens flycheck + realgud )) (defun perl5/init-cperl-mode () @@ -114,3 +115,6 @@ (defun perl5/post-init-flycheck () (spacemacs/enable-flycheck 'cperl-mode)) + +(defun perl5/pre-init-realgud() + (spacemacs|add-realgud-debugger 'cperl-mode "trepan.pl")) diff --git a/layers/+tools/debug/README.org b/layers/+tools/debug/README.org new file mode 100644 index 000000000000..bd8bbd59b53e --- /dev/null +++ b/layers/+tools/debug/README.org @@ -0,0 +1,63 @@ +#+TITLE: debug layer + +[[file:img/debug.png]] + +* Table of Contents :TOC_4_gh:noexport: +- [[#description][Description]] + - [[#features][Features:]] +- [[#install][Install]] + - [[#enable-additional-debuggers][enable additional debuggers]] +- [[#key-bindings][Key bindings]] + - [[#leader][Leader]] + - [[#shortkey-mode][shortkey-mode]] + +* Description +This layer adds interactive debuggers for mulitple languages using [[https://github.com/realgud/realgud][realgud]]. + +** Features: +- modern rewrite of the Emacs GUD debugger family +- visual interface including breakpoint and line indicators +- advanced features like stack frame navigation and mouse support +- extensible framework for [[https://github.com/realgud/realgud/wiki/How-to-add-a-new-debugger][adding]] your own external debuggers + +* Install +To use this configuration layer, add it to your =~/.spacemacs=. You will need to +add =debug= to the existing =dotspacemacs-configuration-layers= list in this +file. + +** enable additional debuggers +Language specific debuggers are added by the respective layers. If you want to +add additional debuggers, add them to the =debug-use-debuggers= variable. +Make sure that your debugger is compatible by checking [[https://github.com/realgud/realgud/wiki/Debuggers-Supported][here]]. + +#+BEGIN_SRC emacs-lisp + (setq-default dotspacemacs-configuration-layers + '((debug :variables debug-use-debuggers '("remake")))) +#+END_SRC + +* Key bindings + +** Leader + + | Key Binding | Description | + |-------------+-----------------| + | ~SPC m d d~ | open cmd buffer | + +** shortkey-mode + + | Key Binding | Description | + |-------------+----------------------| + | ~s~ | step over | + | ~i~ | step into | + | ~o~ | step out | + | ~c~ | continue | + | ~J~ | jump to current line | + | ~e~ | eval variable | + | ~r~ | restart | + | ~q~ | quit debug | + | ~S~ | goto cmd buffer | + | ~bb~ | set break | + | ~bc~ | clear break | + | ~bd~ | delete break | + | ~bs~ | disable break | + | ~be~ | enable break | diff --git a/layers/+tools/debug/config.el b/layers/+tools/debug/config.el new file mode 100644 index 000000000000..a795bbcf723d --- /dev/null +++ b/layers/+tools/debug/config.el @@ -0,0 +1,14 @@ +;;; config.el --- Debug Layer Configuration File for Spacemacs +;; +;; Copyright (c) 2012-2017 Sylvain Benner & Contributors +;; +;; Author: troy.j.hinckley +;; URL: https://github.com/syl20bnr/spacemacs +;; +;; This file is not part of GNU Emacs. +;; +;;; License: GPLv3 + +(defvar debug-use-debuggers '() + "realgud debuggers to be autoloaded. + This variable must be populated before debug layers is loaded.") diff --git a/layers/+tools/debug/funcs.el b/layers/+tools/debug/funcs.el new file mode 100644 index 000000000000..842a117444cd --- /dev/null +++ b/layers/+tools/debug/funcs.el @@ -0,0 +1,28 @@ +;;; funcs.el --- Debug layer function file for Spacemacs. +;; +;; Copyright (c) 2012-2017 Sylvain Benner & Contributors +;; +;; Author: troy.j.hinckley +;; URL: https://github.com/syl20bnr/spacemacs +;; +;; This file is not part of GNU Emacs. +;; +;;; License: GPLv3 + +(defun debug-short-key-state (modeon) + "Set evil-evilified-state explicitly." + (if modeon + (evil-evilified-state) + (evil-normal-state))) + +(defun debug-generate-symbol (debugger) + "create realgud interactive function name from debugger" + (intern (concat "realgud:" debugger))) + +(defun spacemacs|add-realgud-debugger (mode debugger) + "add a deubbger to major mode. +Note that this function MUST be called BEFORE init-realgud. +Therefore you should add it to a pre-init-realgud definition" + (add-to-list 'debug-use-debuggers debugger) + (spacemacs/set-leader-keys-for-major-mode mode + "dd" (debug-generate-symbol debugger))) diff --git a/layers/+tools/debug/img/debug.png b/layers/+tools/debug/img/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..bc6520726ede765b76c6a646fad025eb7adb3544 GIT binary patch literal 3378 zcmZWsc{~%2`=6O(?juJe%-nZ~%rP374Y{v`9I43g$($J}XJT%d9F@v3S2hhxB3JG{ z#pWgz=E%rV{d`{EKY!2bd7k(Cc|Wh$`}zAxyKH-jmrH^R008hJtq=|;*!N$7SWmil zWOLmKNM1%eS)Aax{}(zsIwzVN>s;K)n&Te_TStIAI?0zfSKkn84*>8`kq9%VsOcg1 z5B0)k0=mUjEP`1wi#bXLK!_9)n1zF5psrH=pPukC7~8{9qV1e=V@Lk8k9Xcg8WyBX z{SETWBEYbBOpdBs?Er6eniGPm;Q~S?BY%ns$dGAzc35;KT!59WE4egxX;@Ihm_~CM(#`Q1+RDCPTRY!`<1;aAksdsAC!@CUgGy- z%Z~4bB$SM$!v5Vc6zHk;xXN)a0COF|YcQJd1!?97@kcG=)1ID=L$Tk>fK?)ET6>AXz#k^5eJj#jb7hP-0u6|9< zEdsQ7;3=%%kPz*IMrr5Fx`rXI0IDY3v@?=pG?z?!NG$o}<>9ucsxOW{kib#v=>_mh zLg3~dMh3o*O#r%OYIab<2FMBZ#Dik6{cAO{Q|41!eoSwH9ID|;yDZoT`npQon?!pY zY;#v?sAsSSs!)aG?Z2%YTY>H%qskwxbOGKNPLIa(rY}GZ<3c5&FL>>9UM1M z^l{B32mYBbLD_Wu>LzY~V0~AR2eA9hu#cY=Zff^#aL#qQ{S>c--=YS9^!$xCXsbdl zI#2&I)H!u3g96%lc?%Dk-EX>t&k06E215y_Cg(hHF|0-2G;3s%a=ep53Q|oIC0tz+!m{`?4;&M{*cht}CP;2vg>D z_!Poc#N1QjxV(aV(>#9t>oC`ooZ(HJKX<2L9!s30EyMF<>D{jtBqH7MsKlj?l_$Cb1Cke+>9%Ri|&$*uN*Er#sUvi!#sr~ph~U;iBdn0b3$y=9-yI=RRR`DsRx7`vSx1^A=11=&_q#IhBkE3INBjoV<&MANpK!)a-9MmgF~ z5o;IN%z6SZ57)(@M|WF78J)J>m&NTooy6s~mHfm&euAu-JTlrq^K0sAzE64UjK^a& ze;rRLt>zf?H%g(VUJ&8?d%C~Zmp*HH)1}FyW9+M41nu;Q>!{%GU)s3cWA=niXwUd` ze=Wt4S$oHGi4r0H;&*&ZYN@TMfCcGtxl23)Yjfh7w;>eO0uzKBp``U!b6F`y$Nn#9z zml~{*A(iA}{3qw{e2isuxxPqDsx(LmdlUp?Rm+A}3&;Mb7KgQ$kBYRE&lfqdvhl8e zy{NWu=DetzgsMe`0Xri3Ukxq*(W@v>-6uUAu_b5L${F{NtM#l}!N0CoVD&6M`DAuC zd3lVvDlZEyTj-VJ0D_GJEZWsAGR&F6QX*(Hn<@Is*$D2tuFD9$%YD-mYIi!;$0GUa zmO{>wYRlVaZkTHgk|iGVTI}V_F)cJJZ>|eS{|uk5J9~K#C=aLnctL4mh9#2cbC+)k z?;j5KTVp2QC@GuExSnKIuL@As@+iQCgycBi3v}ioKXlXP@esW62Y6Esz-!wMv}EaY z_B4voSK55JxdIXt3EFKXm{u<>7cN{^#vU)GN*v$dXw0!!gVfId`q0Of{<^4LPXg^Z zv2o1pqhSHkBAzNw*yZcn62lBb8npy+L*q4u-e-uh0`N(+rj6sd7`D^eoIZzp;fr6|RA28?K=d1W zo}A45nfXQSgn#XD?-y)8;M0@#LR{TvbraZ(s>JDRZriL5Pv(Y>*6C8fXPFgB8=U%|2{*U+5Duu?XGm#kgMjXj)=5zaUUz zM6#!>Fa;Pt&Uq+Tnm7(Hab7@h=;p3bEBhwLS`h6d{k;!Xg>KlZEI#k zKK?QqVM}}Z5c%J%p}(M;d+hN15mcL*e|G0W(ZLbzF$+`upm9CGMX+_Z^`4F(b@fy< zZgQ0gHuWiW_7BPY9?~jeTrl%dxe0>WTvumiiO2OemB()x{Nf7n8uFN(- +;; URL: https://github.com/syl20bnr/spacemacs +;; +;; This file is not part of GNU Emacs. +;; +;;; License: GPLv3 + +(defconst debug-packages + '(realgud)) + +(defun debug/init-realgud() + (eval + `(use-package realgud + + :commands + ,(mapcar 'debug-generate-symbol + debug-use-debuggers) + + :init + (advice-add 'realgud-short-key-mode-setup + :before #'debug-short-key-state) + (evilified-state-evilify-map realgud:shortkey-mode-map + :eval-after-load realgud + :mode realgud-short-key-mode + :bindings + "s" 'realgud:cmd-next + "i" 'realgud:cmd-step + "o" 'realgud:cmd-finish + "c" 'realgud:cmd-continue + "J" 'realgud:cmd-jump + + "bb" 'realgud:cmd-break + "bc" 'realgud:cmd-clear + "bd" 'realgud:cmd-delete + "bs" 'realgud:cmd-disable + "be" 'realgud:cmd-enable + + "e" 'realgud:cmd-eval-dwim + "r" 'realgud:cmd-restart + "q" 'realgud:cmd-quit + "S" 'realgud-window-cmd-undisturb-src)))) diff --git a/layers/LAYERS.org b/layers/LAYERS.org index adf9b9f807df..97036cdde192 100644 --- a/layers/LAYERS.org +++ b/layers/LAYERS.org @@ -159,6 +159,7 @@ - [[file:+tools/chrome/README.org][chrome]] - [[file:+tools/command-log/README.org][command-log]] - [[file:+tools/dash/README.org][dash]] +- [[file:+tools/debug/README.org][debug]] - [[file:+tools/deft/README.org][deft]] - [[file:+tools/docker/README.org][docker]] - [[file:+tools/fasd/README.org][fasd]]