summary refs log tree commit diff
path: root/README.org
blob: cdbe67f44182995df40c882a8696b57d929c148a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#+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 <TOKEN>
machine github.rbx.com/api/v3 login fcuny^forge password <TOKEN>
#+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.