diff --git a/.gitignore b/.gitignore index aaf0cae5..877caa7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ micro +binaries/ diff --git a/Makefile b/Makefile index 45a96f7b..0fda6ec1 100644 --- a/Makefile +++ b/Makefile @@ -7,4 +7,4 @@ install: syn-files build syn-files: mkdir -p ~/.micro/syntax - cp syntax_files/* ~/.micro/syntax + cp -r runtime ~/.micro diff --git a/runtime/README.md b/runtime/README.md new file mode 100644 index 00000000..7be55f6e --- /dev/null +++ b/runtime/README.md @@ -0,0 +1,3 @@ +# Runtime files for Micro + +The contents of this directory should be put in `~/.micro`. diff --git a/syntax_files/Dockerfile.micro b/runtime/syntax/Dockerfile.micro similarity index 100% rename from syntax_files/Dockerfile.micro rename to runtime/syntax/Dockerfile.micro diff --git a/runtime/syntax/README.md b/runtime/syntax/README.md new file mode 100644 index 00000000..5d4b2cb7 --- /dev/null +++ b/runtime/syntax/README.md @@ -0,0 +1,12 @@ +# Micro syntax highlighting files + +These are the syntax highlighting files for micro. To install them, just +put all the syntax files in `~/.micro/syntax`. + +They are taken from Nano, specifically from [this repository](https://github.com/scopatz/nanorc). +Micro syntax files are almost identical to Nano's, except for some key differences: + +* Micro does not use `icolor`. Instead, for a case insensitive match, use the case insensitive flag (`i`) in the regular expression + * For example, `icolor green ".*"` would become `color green (i) ".*"` +* Micro does not support `start="..." end="..."`. Instead use the `s` flag to match newlines and put `.*?` in the middle + * For example `color green start="hello" end="world"` would become `color green (s) "hello.*?world"` diff --git a/syntax_files/apacheconf.micro b/runtime/syntax/apacheconf.micro similarity index 100% rename from syntax_files/apacheconf.micro rename to runtime/syntax/apacheconf.micro diff --git a/syntax_files/arduino.micro b/runtime/syntax/arduino.micro similarity index 100% rename from syntax_files/arduino.micro rename to runtime/syntax/arduino.micro diff --git a/syntax_files/asciidoc.micro b/runtime/syntax/asciidoc.micro similarity index 100% rename from syntax_files/asciidoc.micro rename to runtime/syntax/asciidoc.micro diff --git a/syntax_files/asm.micro b/runtime/syntax/asm.micro similarity index 100% rename from syntax_files/asm.micro rename to runtime/syntax/asm.micro diff --git a/syntax_files/awk.micro b/runtime/syntax/awk.micro similarity index 100% rename from syntax_files/awk.micro rename to runtime/syntax/awk.micro diff --git a/syntax_files/c.micro b/runtime/syntax/c.micro similarity index 100% rename from syntax_files/c.micro rename to runtime/syntax/c.micro diff --git a/syntax_files/cmake.micro b/runtime/syntax/cmake.micro similarity index 100% rename from syntax_files/cmake.micro rename to runtime/syntax/cmake.micro diff --git a/syntax_files/coffeescript.micro b/runtime/syntax/coffeescript.micro similarity index 100% rename from syntax_files/coffeescript.micro rename to runtime/syntax/coffeescript.micro diff --git a/syntax_files/colortest.micro b/runtime/syntax/colortest.micro similarity index 100% rename from syntax_files/colortest.micro rename to runtime/syntax/colortest.micro diff --git a/syntax_files/conf.micro b/runtime/syntax/conf.micro similarity index 100% rename from syntax_files/conf.micro rename to runtime/syntax/conf.micro diff --git a/syntax_files/conky.micro b/runtime/syntax/conky.micro similarity index 100% rename from syntax_files/conky.micro rename to runtime/syntax/conky.micro diff --git a/syntax_files/csharp.micro b/runtime/syntax/csharp.micro similarity index 100% rename from syntax_files/csharp.micro rename to runtime/syntax/csharp.micro diff --git a/syntax_files/css.micro b/runtime/syntax/css.micro similarity index 100% rename from syntax_files/css.micro rename to runtime/syntax/css.micro diff --git a/syntax_files/cython.micro b/runtime/syntax/cython.micro similarity index 100% rename from syntax_files/cython.micro rename to runtime/syntax/cython.micro diff --git a/syntax_files/d.micro b/runtime/syntax/d.micro similarity index 100% rename from syntax_files/d.micro rename to runtime/syntax/d.micro diff --git a/syntax_files/dot.micro b/runtime/syntax/dot.micro similarity index 100% rename from syntax_files/dot.micro rename to runtime/syntax/dot.micro diff --git a/syntax_files/erb.micro b/runtime/syntax/erb.micro similarity index 100% rename from syntax_files/erb.micro rename to runtime/syntax/erb.micro diff --git a/syntax_files/fish.micro b/runtime/syntax/fish.micro similarity index 100% rename from syntax_files/fish.micro rename to runtime/syntax/fish.micro diff --git a/syntax_files/fortran.micro b/runtime/syntax/fortran.micro similarity index 100% rename from syntax_files/fortran.micro rename to runtime/syntax/fortran.micro diff --git a/syntax_files/gentoo.micro b/runtime/syntax/gentoo.micro similarity index 100% rename from syntax_files/gentoo.micro rename to runtime/syntax/gentoo.micro diff --git a/syntax_files/git.micro b/runtime/syntax/git.micro similarity index 100% rename from syntax_files/git.micro rename to runtime/syntax/git.micro diff --git a/syntax_files/glsl.micro b/runtime/syntax/glsl.micro similarity index 100% rename from syntax_files/glsl.micro rename to runtime/syntax/glsl.micro diff --git a/syntax_files/go.micro b/runtime/syntax/go.micro similarity index 100% rename from syntax_files/go.micro rename to runtime/syntax/go.micro diff --git a/syntax_files/groff.micro b/runtime/syntax/groff.micro similarity index 100% rename from syntax_files/groff.micro rename to runtime/syntax/groff.micro diff --git a/syntax_files/haml.micro b/runtime/syntax/haml.micro similarity index 100% rename from syntax_files/haml.micro rename to runtime/syntax/haml.micro diff --git a/syntax_files/haskell.micro b/runtime/syntax/haskell.micro similarity index 100% rename from syntax_files/haskell.micro rename to runtime/syntax/haskell.micro diff --git a/syntax_files/html.micro b/runtime/syntax/html.micro similarity index 100% rename from syntax_files/html.micro rename to runtime/syntax/html.micro diff --git a/syntax_files/ini.micro b/runtime/syntax/ini.micro similarity index 100% rename from syntax_files/ini.micro rename to runtime/syntax/ini.micro diff --git a/syntax_files/inputrc.micro b/runtime/syntax/inputrc.micro similarity index 100% rename from syntax_files/inputrc.micro rename to runtime/syntax/inputrc.micro diff --git a/syntax_files/java.micro b/runtime/syntax/java.micro similarity index 100% rename from syntax_files/java.micro rename to runtime/syntax/java.micro diff --git a/syntax_files/javascript.micro b/runtime/syntax/javascript.micro similarity index 100% rename from syntax_files/javascript.micro rename to runtime/syntax/javascript.micro diff --git a/syntax_files/json.micro b/runtime/syntax/json.micro similarity index 100% rename from syntax_files/json.micro rename to runtime/syntax/json.micro diff --git a/syntax_files/keymap.micro b/runtime/syntax/keymap.micro similarity index 100% rename from syntax_files/keymap.micro rename to runtime/syntax/keymap.micro diff --git a/syntax_files/kickstart.micro b/runtime/syntax/kickstart.micro similarity index 100% rename from syntax_files/kickstart.micro rename to runtime/syntax/kickstart.micro diff --git a/syntax_files/ledger.micro b/runtime/syntax/ledger.micro similarity index 100% rename from syntax_files/ledger.micro rename to runtime/syntax/ledger.micro diff --git a/syntax_files/lisp.micro b/runtime/syntax/lisp.micro similarity index 100% rename from syntax_files/lisp.micro rename to runtime/syntax/lisp.micro diff --git a/syntax_files/lua.micro b/runtime/syntax/lua.micro similarity index 100% rename from syntax_files/lua.micro rename to runtime/syntax/lua.micro diff --git a/syntax_files/makefile.micro b/runtime/syntax/makefile.micro similarity index 100% rename from syntax_files/makefile.micro rename to runtime/syntax/makefile.micro diff --git a/syntax_files/man.micro b/runtime/syntax/man.micro similarity index 100% rename from syntax_files/man.micro rename to runtime/syntax/man.micro diff --git a/syntax_files/markdown.micro b/runtime/syntax/markdown.micro similarity index 100% rename from syntax_files/markdown.micro rename to runtime/syntax/markdown.micro diff --git a/syntax_files/mpdconf.micro b/runtime/syntax/mpdconf.micro similarity index 100% rename from syntax_files/mpdconf.micro rename to runtime/syntax/mpdconf.micro diff --git a/syntax_files/nanorc.micro b/runtime/syntax/nanorc.micro similarity index 100% rename from syntax_files/nanorc.micro rename to runtime/syntax/nanorc.micro diff --git a/syntax_files/nginx.micro b/runtime/syntax/nginx.micro similarity index 100% rename from syntax_files/nginx.micro rename to runtime/syntax/nginx.micro diff --git a/syntax_files/ocaml.micro b/runtime/syntax/ocaml.micro similarity index 100% rename from syntax_files/ocaml.micro rename to runtime/syntax/ocaml.micro diff --git a/syntax_files/patch.micro b/runtime/syntax/patch.micro similarity index 100% rename from syntax_files/patch.micro rename to runtime/syntax/patch.micro diff --git a/syntax_files/peg.micro b/runtime/syntax/peg.micro similarity index 100% rename from syntax_files/peg.micro rename to runtime/syntax/peg.micro diff --git a/syntax_files/perl.micro b/runtime/syntax/perl.micro similarity index 100% rename from syntax_files/perl.micro rename to runtime/syntax/perl.micro diff --git a/syntax_files/perl6.micro b/runtime/syntax/perl6.micro similarity index 100% rename from syntax_files/perl6.micro rename to runtime/syntax/perl6.micro diff --git a/syntax_files/php.micro b/runtime/syntax/php.micro similarity index 100% rename from syntax_files/php.micro rename to runtime/syntax/php.micro diff --git a/syntax_files/pkg-config.micro b/runtime/syntax/pkg-config.micro similarity index 100% rename from syntax_files/pkg-config.micro rename to runtime/syntax/pkg-config.micro diff --git a/syntax_files/pkgbuild.micro b/runtime/syntax/pkgbuild.micro similarity index 100% rename from syntax_files/pkgbuild.micro rename to runtime/syntax/pkgbuild.micro diff --git a/syntax_files/po.micro b/runtime/syntax/po.micro similarity index 100% rename from syntax_files/po.micro rename to runtime/syntax/po.micro diff --git a/syntax_files/pov.micro b/runtime/syntax/pov.micro similarity index 100% rename from syntax_files/pov.micro rename to runtime/syntax/pov.micro diff --git a/syntax_files/privoxy.micro b/runtime/syntax/privoxy.micro similarity index 100% rename from syntax_files/privoxy.micro rename to runtime/syntax/privoxy.micro diff --git a/syntax_files/puppet.micro b/runtime/syntax/puppet.micro similarity index 100% rename from syntax_files/puppet.micro rename to runtime/syntax/puppet.micro diff --git a/syntax_files/python.micro b/runtime/syntax/python.micro similarity index 100% rename from syntax_files/python.micro rename to runtime/syntax/python.micro diff --git a/syntax_files/reST.micro b/runtime/syntax/reST.micro similarity index 100% rename from syntax_files/reST.micro rename to runtime/syntax/reST.micro diff --git a/syntax_files/rpmspec.micro b/runtime/syntax/rpmspec.micro similarity index 100% rename from syntax_files/rpmspec.micro rename to runtime/syntax/rpmspec.micro diff --git a/syntax_files/ruby.micro b/runtime/syntax/ruby.micro similarity index 100% rename from syntax_files/ruby.micro rename to runtime/syntax/ruby.micro diff --git a/syntax_files/rust.micro b/runtime/syntax/rust.micro similarity index 100% rename from syntax_files/rust.micro rename to runtime/syntax/rust.micro diff --git a/syntax_files/scala.micro b/runtime/syntax/scala.micro similarity index 100% rename from syntax_files/scala.micro rename to runtime/syntax/scala.micro diff --git a/syntax_files/sed.micro b/runtime/syntax/sed.micro similarity index 100% rename from syntax_files/sed.micro rename to runtime/syntax/sed.micro diff --git a/syntax_files/sh.micro b/runtime/syntax/sh.micro similarity index 100% rename from syntax_files/sh.micro rename to runtime/syntax/sh.micro diff --git a/syntax_files/sls.micro b/runtime/syntax/sls.micro similarity index 100% rename from syntax_files/sls.micro rename to runtime/syntax/sls.micro diff --git a/syntax_files/sql.micro b/runtime/syntax/sql.micro similarity index 100% rename from syntax_files/sql.micro rename to runtime/syntax/sql.micro diff --git a/syntax_files/swift.micro b/runtime/syntax/swift.micro similarity index 100% rename from syntax_files/swift.micro rename to runtime/syntax/swift.micro diff --git a/syntax_files/systemd.micro b/runtime/syntax/systemd.micro similarity index 100% rename from syntax_files/systemd.micro rename to runtime/syntax/systemd.micro diff --git a/syntax_files/tcl.micro b/runtime/syntax/tcl.micro similarity index 100% rename from syntax_files/tcl.micro rename to runtime/syntax/tcl.micro diff --git a/syntax_files/tex.micro b/runtime/syntax/tex.micro similarity index 100% rename from syntax_files/tex.micro rename to runtime/syntax/tex.micro diff --git a/syntax_files/vala.micro b/runtime/syntax/vala.micro similarity index 100% rename from syntax_files/vala.micro rename to runtime/syntax/vala.micro diff --git a/syntax_files/vi.micro b/runtime/syntax/vi.micro similarity index 100% rename from syntax_files/vi.micro rename to runtime/syntax/vi.micro diff --git a/syntax_files/xml.micro b/runtime/syntax/xml.micro similarity index 100% rename from syntax_files/xml.micro rename to runtime/syntax/xml.micro diff --git a/syntax_files/xresources.micro b/runtime/syntax/xresources.micro similarity index 100% rename from syntax_files/xresources.micro rename to runtime/syntax/xresources.micro diff --git a/syntax_files/yaml.micro b/runtime/syntax/yaml.micro similarity index 100% rename from syntax_files/yaml.micro rename to runtime/syntax/yaml.micro diff --git a/syntax_files/yum.micro b/runtime/syntax/yum.micro similarity index 100% rename from syntax_files/yum.micro rename to runtime/syntax/yum.micro diff --git a/syntax_files/zsh.micro b/runtime/syntax/zsh.micro similarity index 100% rename from syntax_files/zsh.micro rename to runtime/syntax/zsh.micro diff --git a/src/highlighter.go b/src/highlighter.go index 0613f52f..70fcc394 100644 --- a/src/highlighter.go +++ b/src/highlighter.go @@ -149,9 +149,9 @@ func Match(rules string, buf *Buffer, v *View) map[int]tcell.Style { color := string(submatch[1]) var regexStr string if len(submatch) == 4 { - regexStr = "(?m" + string(submatch[2]) + ")" + string(submatch[3]) + regexStr = "(?m" + string(submatch[2]) + ")" + JoinRule(string(submatch[3])) } else if len(submatch) == 3 { - regexStr = "(?m)" + string(submatch[2]) + regexStr = "(?m)" + JoinRule(string(submatch[2])) } regex, err := regexp.Compile(regexStr) if err != nil { diff --git a/src/view.go b/src/view.go index 4d9631b7..3ff15dd3 100644 --- a/src/view.go +++ b/src/view.go @@ -268,7 +268,7 @@ func (v *View) HandleEvent(event tcell.Event) int { v.ScrollDown(1) y = v.height + v.topline - 1 } - if y > len(v.buf.lines) { + if y >= len(v.buf.lines) { y = len(v.buf.lines) - 1 } if x < 0 { diff --git a/syntax_files/README.md b/syntax_files/README.md deleted file mode 100644 index b1c720fb..00000000 --- a/syntax_files/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Micro syntax highlighting files - -These are the syntax highlighting files for micro. To install them, just -put them all in `~/.micro/syntax`. - -They are taken from Nano, specifically from [this repository](https://github.com/scopatz/nanorc). -Micro syntax files are almost identical to Nano's, except for some key differences: - -* Micro does not use `icolor`. Instead, for a case insensitive match, use the case insensitive flag (`(i)`) in the regular expression diff --git a/tools/cross-compile.sh b/tools/cross-compile.sh new file mode 100755 index 00000000..10b889f0 --- /dev/null +++ b/tools/cross-compile.sh @@ -0,0 +1,46 @@ +cd .. + +mkdir -p binaries +mkdir -p micro/bin +cp -r runtime micro/ + +echo 'mv runtime ~/.micro' >> micro/install.sh +chmod +x micro/install.sh + +# Mac +echo "OSX 64" +GOOS=darwin GOARCH=amd64 go build -o micro/bin/micro ./src +tar -czf micro-osx.tar.gz micro +mv micro-osx.tar.gz binaries + +# Linux +echo "Linux 64" +GOOS=linux GOARCH=amd64 go build -o micro/bin/micro ./src +tar -czf micro-linux64.tar.gz micro +mv micro-linux64.tar.gz binaries +echo "Linux 32" +GOOS=linux GOARCH=386 go build -o micro/bin/micro ./src +tar -czf micro-linux32.tar.gz micro +mv micro-linux32.tar.gz binaries +echo "Linux arm" +GOOS=linux GOARCH=arm go build -o micro/bin/micro ./src +tar -czf micro-linux-arm.tar.gz micro +mv micro-linux-arm.tar.gz binaries + +rm micro/bin/micro +rm micro/install.sh + +echo 'move runtime %HOMEPATH%\.micro' >> micro/install.bat +chmod +x micro/install.bat + +# Windows +echo "Windows 64" +GOOS=windows GOARCH=amd64 go build -o micro/bin/micro.exe ./src +zip -r -q -T micro-win64.zip micro +mv micro-win64.zip binaries +echo "Windows 32" +GOOS=windows GOARCH=386 go build -o micro/bin/micro.exe ./src +zip -r -q -T micro-win32.zip micro +mv micro-win32.zip binaries + +rm -rf micro