#+TITLE: Personal Emacs configurations #+AUTHOR: Franck Cuny #+EMAIL: franck@fcuny.net * Goals - keep it simple - do within Emacs only what makes sense * 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=). ** git *** forge The [[https://github.com/magit/forge][forge]] package helps managing git repositories that are part of a forge. The interaction with the forges is done through the forge's API. By default, GitHub is already configured, but for additional forges, we need some custom setup. First, we need to add the new forge to the list: #+begin_src elisp (with-eval-after-load 'forge (push '("github.rbxs.com" "github.rbx.com/api/v3" "github.rbx.com" forge-github-repository) forge-alist)) #+end_src Next, we need a token for the API: - https://github.com/settings/tokens - https://github.rbx.com/settings/tokens The tokens need the following access: - repo:* - user:* - admin:read:org The tokens need to be stored in =~./authinfo.gpg=, with the following format: #+begin_src machine api.github.com login fcuny-rbx^forge password machine github.rbx.com/api/v3 login fcuny^forge password #+end_src When pulling topics for a repository, by default, we're going to be prompted for the username to use for the API. The username can be set in the git configuration with =github.github.rbx.com/api/v3.user= (for github.rbx.com). This can be set per repository (with =git config github.github.rbx.com/api/v3.user fcuny=) or globally (with =git config --global github.github.rbx.com/api/v3.user fcuny=). To use the forge, get in a =magit= buffer, then hit =N=, which will present a transiant menue. From here, select the action you want.