#+TITLE: Personal configurations, scripts and tools. * goals - keep it simple - configurations work the same way, everywhere * emacs ** go *** compile You can compile a go binary using =M-x compile= inside a go buffer. *** debugging We need to install =dlv= first: #+begin_src sh go install github.com/go-delve/delve/cmd/dlv@latest #+end_src For =dap-mode= you also need to install =nodejs=. On arch you do this with #+begin_src sh sudo pacman -Syu nodejs #+end_src Then from emacs =M-x dap-go-set= to install the dependencies. It's unclear as to why =node= is still in the picture since it looks like =dlv= seems to support =dap= directly (see [[https://github.com/go-delve/delve/issues/1515][delve/issues/1515]]). To debug a program, you can set breakpoints where you need with =M-x dap-breakpoint-add=. To start the debugger hit =M-x dap-debug=. If the program you debug needs argument, call =M-x dap-debug-edit-template=. Add the argument(s) you need to the program and evaluate the buffer (=C-c C-e=). Next time you call the debugger, the argument(s) will be passed to the program. You can also set environment variables if you need. The binding =C-c d= will bring an hydra menu for debugging. The REPL is not brought on by default when starting a debugging session, but =M-x dap-ui-repl= will start a REPL (the position is controlled by the variable =dap-ui-buffer-configurations=).