phi/BUILDING.md

2.6 KiB

building

requirements

You will need the go compiler installed. In addition you will need the following libraries:

  • sdl2
  • sdl2_image
  • sdl2_ttf

If you're on Linux, you will need:

  • xclip
  • xsel

Either works. This is for copying/pasting.

linux

Here's an example for Ubuntu:

$ sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev xclip
$ go get github.com/felixangell/phi
$ cd $GOPATH/src/github.com/felixangell/phi
$ go build
$ ./phi

macOS

If you're on macOS, you can do something like this, using homebrew:

$ brew install sdl2 sdl2_image sdl2_ttf pkg-config
$ go get github.com/felixangell/phi
$ cd $GOPATH/src/github.com/felixangell/phi
$ go build
$ ./phi

windows

Building on Windows is a bit more involved. It's the same process, though you will need a bit more software:

  • Install mingw-w64 from mingw-builds
    • Version: latest (e.g. 7.3.0);
    • Architecture: x86_64;
    • Threads: win32;
    • Exceptions: seh;
    • Build Revision: latest;
    • Destination folder: any folder your user owns, e.g. C:/Users/yourname/documents
  • Install SDL2, SDL2_img, and SDL2_ttf from here: sdl2, sdl2_image, sdl2_ttf
    • Extract these zip files;
    • Copy the x86_64-w64-mingw32 into your mingw folder specified when installing mingw-w64.
  • Add the mingw bin folder to the PATH

Once this is complete, open up a terminal and type the following:

$ go get github.com/felixangell/phi
$ cd $GOPATH/src/github.com/felixangell/phi
$ go build
$ ./phi

Note that you should run go install so that the dependencies aren't being rebuilt for faster compile times.

configuration

Configuration files are stored in $HOME/.phi-editor/config.toml. Note that this directory is created on first startup by the editor, as well as the configuration files in the 'cfg/' directory are pre-loaded dependening on platform: see 'cfg/linuxconfig.go', for example.

Below is an incomplete configuration file to give you an idea of what the config files are like:

[editor]
tab_size = 4
hungry_backspace = true
tabs_are_spaces = true
match_braces = false
maintain_indentation = true
highlight_line = true

[render]
aliased = true
accelerated = true
throttle_cpu_usage = true
always_render = true

[theme]
background = 0x002649
foreground = 0xf2f4f6
cursor = 0xf2f4f6
cursor_invert = 0x000000

[cursor]
flash_rate = 400
reset_delay = 400
draw = true
flash = true

[commands]
[commands.save]
shortcut = "super+s"

[commands.delete_line]
shortcut = "super+d"