forked from Mirrors/helix
Remove the merge stuff
parent
6723d8b3db
commit
cfe575764d
@ -1,139 +0,0 @@
|
||||
name: Build
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '00 01 * * *'
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: Check
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
rust: [stable, msrv]
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Use MSRV rust toolchain
|
||||
if: matrix.rust == 'msrv'
|
||||
run: cp .github/workflows/msrv-rust-toolchain.toml rust-toolchain.toml
|
||||
|
||||
- name: Install stable toolchain
|
||||
uses: helix-editor/rust-toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
override: true
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Run cargo check
|
||||
run: cargo check
|
||||
|
||||
test:
|
||||
name: Test Suite
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
RUST_BACKTRACE: 1
|
||||
HELIX_LOG_LEVEL: info
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install stable toolchain
|
||||
uses: helix-editor/rust-toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
override: true
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Cache test tree-sitter grammar
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: runtime/grammars
|
||||
key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-tree-sitter-grammars-${{ hashFiles('languages.toml') }}
|
||||
restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-tree-sitter-grammars-
|
||||
|
||||
- name: Run cargo test
|
||||
run: cargo test --workspace
|
||||
|
||||
- name: Run cargo integration-test
|
||||
run: cargo integration-test
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
|
||||
lints:
|
||||
name: Lints
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install stable toolchain
|
||||
uses: helix-editor/rust-toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
override: true
|
||||
components: rustfmt, clippy
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Run cargo fmt
|
||||
run: cargo fmt --all -- --check
|
||||
|
||||
- name: Run cargo clippy
|
||||
run: cargo clippy --workspace --all-targets -- -D warnings
|
||||
|
||||
- name: Run cargo doc
|
||||
run: cargo doc --no-deps --workspace --document-private-items
|
||||
env:
|
||||
RUSTDOCFLAGS: -D warnings
|
||||
|
||||
docs:
|
||||
name: Docs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install stable toolchain
|
||||
uses: helix-editor/rust-toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
override: true
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Generate docs
|
||||
run: cargo xtask docgen
|
||||
|
||||
- name: Check uncommitted documentation changes
|
||||
run: |
|
||||
git diff
|
||||
git diff-files --quiet \
|
||||
|| (echo "Run 'cargo xtask docgen', commit the changes and push again" \
|
||||
&& exit 1)
|
||||
|
||||
queries:
|
||||
name: Tree-sitter queries
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install stable toolchain
|
||||
uses: helix-editor/rust-toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
override: true
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Generate docs
|
||||
run: cargo xtask query-check
|
@ -1,281 +0,0 @@
|
||||
name: Release
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
|
||||
env:
|
||||
# Preview mode: Publishes the build output as a CI artifact instead of creating
|
||||
# a release, allowing for manual inspection of the output. This mode is
|
||||
# activated if the CI run was triggered by events other than pushed tags, or
|
||||
# if the repository is a fork.
|
||||
preview: ${{ !startsWith(github.ref, 'refs/tags/')}}
|
||||
|
||||
jobs:
|
||||
fetch-grammars:
|
||||
name: Fetch Grammars
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install stable toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Fetch tree-sitter grammars
|
||||
run: cargo run --package=helix-loader --bin=hx-loader
|
||||
|
||||
- name: Bundle grammars
|
||||
run: tar cJf grammars.tar.xz -C runtime/grammars/sources .
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: grammars
|
||||
path: grammars.tar.xz
|
||||
|
||||
dist:
|
||||
name: Dist
|
||||
needs: [fetch-grammars]
|
||||
env:
|
||||
# For some builds, we use cross to test on 32-bit and big-endian
|
||||
# systems.
|
||||
CARGO: cargo
|
||||
# When CARGO is set to CROSS, this is set to `--target matrix.target`.
|
||||
TARGET_FLAGS:
|
||||
# When CARGO is set to CROSS, TARGET_DIR includes matrix.target.
|
||||
TARGET_DIR: ./target
|
||||
# Emit backtraces on panics.
|
||||
RUST_BACKTRACE: 1
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false # don't fail other jobs if one fails
|
||||
matrix:
|
||||
build: [x86_64-linux, x86_64-macos, x86_64-windows] #, x86_64-win-gnu, win32-msvc
|
||||
include:
|
||||
- build: x86_64-linux
|
||||
os: ubuntu-latest
|
||||
rust: stable
|
||||
target: x86_64-unknown-linux-gnu
|
||||
cross: false
|
||||
- build: aarch64-linux
|
||||
os: ubuntu-latest
|
||||
rust: stable
|
||||
target: aarch64-unknown-linux-gnu
|
||||
cross: true
|
||||
- build: riscv64-linux
|
||||
os: ubuntu-latest
|
||||
rust: stable
|
||||
target: riscv64gc-unknown-linux-gnu
|
||||
cross: true
|
||||
- build: x86_64-macos
|
||||
os: macos-latest
|
||||
rust: stable
|
||||
target: x86_64-apple-darwin
|
||||
cross: false
|
||||
- build: x86_64-windows
|
||||
os: windows-latest
|
||||
rust: stable
|
||||
target: x86_64-pc-windows-msvc
|
||||
cross: false
|
||||
- build: aarch64-macos
|
||||
os: macos-latest
|
||||
rust: stable
|
||||
target: aarch64-apple-darwin
|
||||
cross: false
|
||||
skip_tests: true # x86_64 host can't run aarch64 code
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Download grammars
|
||||
uses: actions/download-artifact@v3
|
||||
|
||||
- name: Move grammars under runtime
|
||||
if: "!startsWith(matrix.os, 'windows')"
|
||||
run: |
|
||||
mkdir -p runtime/grammars/sources
|
||||
tar xJf grammars/grammars.tar.xz -C runtime/grammars/sources
|
||||
|
||||
- name: Install ${{ matrix.rust }} toolchain
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: ${{ matrix.rust }}
|
||||
target: ${{ matrix.target }}
|
||||
|
||||
# Install a pre-release version of Cross
|
||||
# TODO: We need to pre-install Cross because we need cross-rs/cross#591 to
|
||||
# get a newer C++ compiler toolchain. Remove this step when Cross
|
||||
# 0.3.0, which includes cross-rs/cross#591, is released.
|
||||
- name: Install Cross
|
||||
if: "matrix.cross"
|
||||
run: |
|
||||
cargo install cross --git https://github.com/cross-rs/cross.git --rev 47df5c76e7cba682823a0b6aa6d95c17b31ba63a
|
||||
echo "CARGO=cross" >> $GITHUB_ENV
|
||||
# echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV
|
||||
# echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Show command used for Cargo
|
||||
run: |
|
||||
echo "cargo command is: ${{ env.CARGO }}"
|
||||
echo "target flag is: ${{ env.TARGET_FLAGS }}"
|
||||
|
||||
<<<<<<< HEAD
|
||||
||||||| f0f295a6
|
||||
- name: Run cargo test
|
||||
uses: actions-rs/cargo@v1
|
||||
if: "!matrix.skip_tests"
|
||||
with:
|
||||
use-cross: ${{ matrix.cross }}
|
||||
command: test
|
||||
args: --release --locked --target ${{ matrix.target }} --workspace
|
||||
|
||||
=======
|
||||
- name: Run cargo test
|
||||
if: "!matrix.skip_tests"
|
||||
run: ${{ env.CARGO }} test --release --locked --target ${{ matrix.target }} --workspace
|
||||
|
||||
>>>>>>> origin/master
|
||||
- name: Set profile.release.strip = true
|
||||
shell: bash
|
||||
run: |
|
||||
cat >> .cargo/config.toml <<EOF
|
||||
[profile.release]
|
||||
strip = true
|
||||
EOF
|
||||
|
||||
- name: Build release binary
|
||||
run: ${{ env.CARGO }} build --release --locked --target ${{ matrix.target }}
|
||||
|
||||
- name: Build AppImage
|
||||
shell: bash
|
||||
if: matrix.build == 'aarch64-linux' || matrix.build == 'x86_64-linux'
|
||||
run: |
|
||||
mkdir dist
|
||||
|
||||
name=dev
|
||||
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
||||
name=${GITHUB_REF:10}
|
||||
fi
|
||||
|
||||
build="${{ matrix.build }}"
|
||||
|
||||
export VERSION="$name"
|
||||
export ARCH=${build%-linux}
|
||||
export APP=helix
|
||||
export OUTPUT="helix-$VERSION-$ARCH.AppImage"
|
||||
export UPDATE_INFORMATION="gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|helix|latest|$APP-*-$ARCH.AppImage.zsync"
|
||||
|
||||
mkdir -p "$APP.AppDir"/usr/{bin,lib/helix}
|
||||
|
||||
cp "target/${{ matrix.target }}/release/hx" "$APP.AppDir/usr/bin/hx"
|
||||
rm -rf runtime/grammars/sources
|
||||
cp -r runtime "$APP.AppDir/usr/lib/helix/runtime"
|
||||
|
||||
cat << 'EOF' > "$APP.AppDir/AppRun"
|
||||
#!/bin/sh
|
||||
|
||||
APPDIR="$(dirname "$(readlink -f "${0}")")"
|
||||
HELIX_RUNTIME="$APPDIR/usr/lib/helix/runtime" exec "$APPDIR/usr/bin/hx" "$@"
|
||||
EOF
|
||||
chmod 755 "$APP.AppDir/AppRun"
|
||||
|
||||
curl -Lo linuxdeploy-x86_64.AppImage \
|
||||
https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
||||
chmod +x linuxdeploy-x86_64.AppImage
|
||||
|
||||
./linuxdeploy-x86_64.AppImage \
|
||||
--appdir "$APP.AppDir" -d contrib/Helix.desktop \
|
||||
-i contrib/helix.png --output appimage
|
||||
|
||||
mv "$APP-$VERSION-$ARCH.AppImage" \
|
||||
"$APP-$VERSION-$ARCH.AppImage.zsync" dist
|
||||
|
||||
- name: Build archive
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p dist
|
||||
if [ "${{ matrix.os }}" = "windows-2019" ]; then
|
||||
cp "target/${{ matrix.target }}/release/hx.exe" "dist/"
|
||||
else
|
||||
cp "target/${{ matrix.target }}/release/hx" "dist/"
|
||||
fi
|
||||
if [ -d runtime/grammars/sources ]; then
|
||||
rm -rf runtime/grammars/sources
|
||||
fi
|
||||
cp -r runtime dist
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: bins-${{ matrix.build }}
|
||||
path: dist
|
||||
|
||||
publish:
|
||||
name: Publish
|
||||
needs: [dist]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
|
||||
- name: Build archive
|
||||
shell: bash
|
||||
run: |
|
||||
set -ex
|
||||
|
||||
source="$(pwd)"
|
||||
mkdir -p runtime/grammars/sources
|
||||
tar xJf grammars/grammars.tar.xz -C runtime/grammars/sources
|
||||
rm -rf grammars
|
||||
|
||||
cd "$(mktemp -d)"
|
||||
mv $source/bins-* .
|
||||
mkdir dist
|
||||
|
||||
for dir in bins-* ; do
|
||||
platform=${dir#"bins-"}
|
||||
if [[ $platform =~ "windows" ]]; then
|
||||
exe=".exe"
|
||||
fi
|
||||
pkgname=helix-$GITHUB_REF_NAME-$platform
|
||||
mkdir $pkgname
|
||||
cp $source/LICENSE $source/README.md $pkgname
|
||||
mkdir $pkgname/contrib
|
||||
cp -r $source/contrib/completion $pkgname/contrib
|
||||
mv bins-$platform/runtime $pkgname/
|
||||
mv bins-$platform/hx$exe $pkgname
|
||||
chmod +x $pkgname/hx$exe
|
||||
|
||||
if [[ "$platform" = "aarch64-linux" || "$platform" = "x86_64-linux" ]]; then
|
||||
mv bins-$platform/helix-*.AppImage* dist/
|
||||
fi
|
||||
|
||||
if [ "$exe" = "" ]; then
|
||||
tar cJf dist/$pkgname.tar.xz $pkgname
|
||||
else
|
||||
7z a -r dist/$pkgname.zip $pkgname
|
||||
fi
|
||||
done
|
||||
|
||||
tar cJf dist/helix-$GITHUB_REF_NAME-source.tar.xz -C $source .
|
||||
mv dist $source/
|
||||
|
||||
- name: Upload binaries to release
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
if: env.preview == 'false'
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: dist/*
|
||||
file_glob: true
|
||||
tag: ${{ github.ref_name }}
|
||||
overwrite: true
|
||||
|
||||
- name: Upload binaries as artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
if: env.preview == 'true'
|
||||
with:
|
||||
name: release
|
||||
path: dist/*
|
@ -1,178 +0,0 @@
|
||||
<<<<<<< HEAD
|
||||
# Helix Plus
|
||||
|
||||
<h1 style="color:red">This is an unstable fork of helix with some PRs merged and some merge conflicts resolved </h1>
|
||||
|
||||
# Merged PRs
|
||||
|
||||
- [File explorer and tree helper](https://github.com/helix-editor/helix/pull/2377)
|
||||
- [with Icons](https://github.com/r0l1/helix/tree/tree_explorer_icons)
|
||||
- [Add LSP workspace command picker](https://github.com/helix-editor/helix/pull/3140)
|
||||
- [completion fix](https://github.com/helix-editor/helix/pull/1819)
|
||||
- [Add rainbow indentation guides](https://github.com/helix-editor/helix/pull/4056)
|
||||
- [Improve sorting for inline menu (codeaction + completion)](https://github.com/helix-editor/helix/pull/4134)
|
||||
|
||||
And others I forgot about...
|
||||
|
||||
|
||||
# Applied Changes
|
||||
|
||||
- Changed opening the window popup from `ctrl + w` to `ctrl + v`
|
||||
- Added an auto highlight for files in the tree explorer when jumping through opened buffers
|
||||
- Changed some default settings (enabling bufferline, indent guides, the embedded explorer, cursor modes etc.)
|
||||
- Added a `--show-explorer` cli flag to open the file explorer on startup (useful for embedded explorer mode)
|
||||
- Added a `delete` (aliases `rm`, `del`) command to delete the file associated with the current buffer
|
||||
- Changed keybind `<space> E` to close the explorer instead of toggling the recursion one
|
||||
- Added a completion chars setting that triggers autocomplete when typing one of those chars
|
||||
|
||||
- - -
|
||||
||||||| f0f295a6
|
||||
# Helix
|
||||
=======
|
||||
<div align="center">
|
||||
|
||||
<h1>
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="logo_dark.svg">
|
||||
<source media="(prefers-color-scheme: light)" srcset="logo_light.svg">
|
||||
<img alt="Helix" height="128" src="logo_light.svg">
|
||||
</picture>
|
||||
</h1>
|
||||
>>>>>>> origin/master
|
||||
|
||||
[![Build status](https://github.com/helix-editor/helix/actions/workflows/build.yml/badge.svg)](https://github.com/helix-editor/helix/actions)
|
||||
[![GitHub Release](https://img.shields.io/github/v/release/helix-editor/helix)](https://github.com/helix-editor/helix/releases/latest)
|
||||
[![Documentation](https://shields.io/badge/-documentation-452859)](https://docs.helix-editor.com/)
|
||||
[![GitHub contributors](https://img.shields.io/github/contributors/helix-editor/helix)](https://github.com/helix-editor/helix/graphs/contributors)
|
||||
[![Matrix Space](https://img.shields.io/matrix/helix-community:matrix.org)](https://matrix.to/#/#helix-community:matrix.org)
|
||||
|
||||
</div>
|
||||
|
||||
![Screenshot](./screenshot.png)
|
||||
|
||||
A Kakoune / Neovim inspired editor, written in Rust.
|
||||
|
||||
The editing model is very heavily based on Kakoune; during development I found
|
||||
myself agreeing with most of Kakoune's design decisions.
|
||||
|
||||
For more information, see the [website](https://helix-editor.com) or
|
||||
[documentation](https://docs.helix-editor.com/).
|
||||
|
||||
All shortcuts/keymaps can be found [in the documentation on the website](https://docs.helix-editor.com/keymap.html).
|
||||
|
||||
[Troubleshooting](https://github.com/helix-editor/helix/wiki/Troubleshooting)
|
||||
|
||||
# Features
|
||||
|
||||
- Vim-like modal editing
|
||||
- Multiple selections
|
||||
- Built-in language server support
|
||||
- Smart, incremental syntax highlighting and code editing via tree-sitter
|
||||
|
||||
It's a terminal-based editor first, but I'd like to explore a custom renderer
|
||||
(similar to Emacs) in wgpu or skulpin.
|
||||
|
||||
Note: Only certain languages have indentation definitions at the moment. Check
|
||||
`runtime/queries/<lang>/` for `indents.scm`.
|
||||
|
||||
# Installation
|
||||
|
||||
Packages are available for various distributions (see [Installation docs](https://docs.helix-editor.com/install.html)).
|
||||
|
||||
If you would like to build from source:
|
||||
|
||||
```shell
|
||||
git clone https://github.com/helix-editor/helix
|
||||
cd helix
|
||||
cargo install --path helix-term
|
||||
```
|
||||
|
||||
This will install the `hx` binary to `$HOME/.cargo/bin` and build tree-sitter grammars in `./runtime/grammars`.
|
||||
|
||||
Helix needs its runtime files so make sure to copy/symlink the `runtime/` directory into the
|
||||
config directory (for example `~/.config/helix/runtime` on Linux/macOS, or `%AppData%/helix/runtime` on Windows).
|
||||
|
||||
| OS | Command |
|
||||
| -------------------- | ------------------------------------------------ |
|
||||
| Windows (Cmd) | `xcopy /e /i runtime %AppData%\helix\runtime` |
|
||||
| Windows (PowerShell) | `xcopy /e /i runtime $Env:AppData\helix\runtime` |
|
||||
| Linux / macOS | `ln -s $PWD/runtime ~/.config/helix/runtime` |
|
||||
|
||||
Starting with Windows Vista you can also create symbolic links on Windows. Note that this requires
|
||||
elevated privileges - i.e. PowerShell or Cmd must be run as administrator.
|
||||
|
||||
**PowerShell:**
|
||||
|
||||
```powershell
|
||||
New-Item -ItemType SymbolicLink -Target "runtime" -Path "$Env:AppData\helix\runtime"
|
||||
```
|
||||
|
||||
**Cmd:**
|
||||
|
||||
```cmd
|
||||
cd %appdata%\helix
|
||||
mklink /D runtime "<helix-repo>\runtime"
|
||||
```
|
||||
|
||||
The runtime location can be overridden via the `HELIX_RUNTIME` environment variable.
|
||||
|
||||
> NOTE: if `HELIX_RUNTIME` is set prior to calling `cargo install --path helix-term`,
|
||||
> tree-sitter grammars will be built in `$HELIX_RUNTIME/grammars`.
|
||||
|
||||
If you plan on keeping the repo locally, an alternative to copying/symlinking
|
||||
runtime files is to set `HELIX_RUNTIME=/path/to/helix/runtime`
|
||||
(`HELIX_RUNTIME=$PWD/runtime` if you're in the helix repo directory).
|
||||
|
||||
Packages already solve this for you by wrapping the `hx` binary with a wrapper
|
||||
that sets the variable to the install dir.
|
||||
|
||||
> NOTE: running via cargo also doesn't require setting explicit `HELIX_RUNTIME` path, it will automatically
|
||||
> detect the `runtime` directory in the project root.
|
||||
|
||||
If you want to customize your `languages.toml` config,
|
||||
tree-sitter grammars may be manually fetched and built with `hx --grammar fetch` and `hx --grammar build`.
|
||||
|
||||
In order to use LSP features like auto-complete, you will need to
|
||||
[install the appropriate Language Server](https://github.com/helix-editor/helix/wiki/How-to-install-the-default-language-servers)
|
||||
for a language.
|
||||
|
||||
[![Packaging status](https://repology.org/badge/vertical-allrepos/helix.svg)](https://repology.org/project/helix/versions)
|
||||
|
||||
## Adding Helix to your desktop environment
|
||||
|
||||
If installing from source, to use Helix in desktop environments that supports [XDG desktop menu](https://specifications.freedesktop.org/menu-spec/menu-spec-latest.html), including Gnome and KDE, copy the provided `.desktop` file to the correct folder:
|
||||
|
||||
```bash
|
||||
cp contrib/Helix.desktop ~/.local/share/applications
|
||||
```
|
||||
|
||||
To use another terminal than the default, you will need to modify the `.desktop` file. For example, to use `kitty`:
|
||||
|
||||
```bash
|
||||
sed -i "s|Exec=hx %F|Exec=kitty hx %F|g" ~/.local/share/applications/Helix.desktop
|
||||
sed -i "s|Terminal=true|Terminal=false|g" ~/.local/share/applications/Helix.desktop
|
||||
```
|
||||
|
||||
Please note: there is no icon for Helix yet, so the system default will be used.
|
||||
|
||||
## macOS
|
||||
|
||||
Helix can be installed on macOS through homebrew:
|
||||
|
||||
```
|
||||
brew install helix
|
||||
```
|
||||
|
||||
# Contributing
|
||||
|
||||
Contributing guidelines can be found [here](./docs/CONTRIBUTING.md).
|
||||
|
||||
# Getting help
|
||||
|
||||
Your question might already be answered on the [FAQ](https://github.com/helix-editor/helix/wiki/FAQ).
|
||||
|
||||
Discuss the project on the community [Matrix Space](https://matrix.to/#/#helix-community:matrix.org) (make sure to join `#helix-editor:matrix.org` if you're on a client that doesn't support Matrix Spaces yet).
|
||||
|
||||
# Credits
|
||||
|
||||
Thanks to [@JakeHL](https://github.com/JakeHL) for designing the logo!
|
@ -1,84 +0,0 @@
|
||||
| Name | Description |
|
||||
| --- | --- |
|
||||
| `:quit`, `:q` | Close the current view. |
|
||||
| `:quit!`, `:q!` | Force close the current view, ignoring unsaved changes. |
|
||||
| `:open`, `:o` | Open a file from disk into the current view. |
|
||||
| `:buffer-close`, `:bc`, `:bclose` | Close the current buffer. |
|
||||
| `:buffer-close!`, `:bc!`, `:bclose!` | Close the current buffer forcefully, ignoring unsaved changes. |
|
||||
| `:buffer-close-others`, `:bco`, `:bcloseother` | Close all buffers but the currently focused one. |
|
||||
| `:buffer-close-others!`, `:bco!`, `:bcloseother!` | Force close all buffers but the currently focused one. |
|
||||
| `:buffer-close-all`, `:bca`, `:bcloseall` | Close all buffers without quitting. |
|
||||
| `:buffer-close-all!`, `:bca!`, `:bcloseall!` | Force close all buffers ignoring unsaved changes without quitting. |
|
||||
| `:buffer-next`, `:bn`, `:bnext` | Goto next buffer. |
|
||||
| `:buffer-previous`, `:bp`, `:bprev` | Goto previous buffer. |
|
||||
| `:write`, `:w` | Write changes to disk. Accepts an optional path (:write some/path.txt) |
|
||||
| `:write!`, `:w!` | Force write changes to disk creating necessary subdirectories. Accepts an optional path (:write some/path.txt) |
|
||||
| `:new`, `:n` | Create a new scratch buffer. |
|
||||
| `:format`, `:fmt` | Format the file using the LSP formatter. |
|
||||
| `:indent-style` | Set the indentation style for editing. ('t' for tabs or 1-8 for number of spaces.) |
|
||||
| `:line-ending` | Set the document's default line ending. Options: crlf, lf. |
|
||||
| `:earlier`, `:ear` | Jump back to an earlier point in edit history. Accepts a number of steps or a time span. |
|
||||
| `:later`, `:lat` | Jump to a later point in edit history. Accepts a number of steps or a time span. |
|
||||
| `:write-quit`, `:wq`, `:x` | Write changes to disk and close the current view. Accepts an optional path (:wq some/path.txt) |
|
||||
| `:write-quit!`, `:wq!`, `:x!` | Write changes to disk and close the current view forcefully. Accepts an optional path (:wq! some/path.txt) |
|
||||
| `:write-all`, `:wa` | Write changes from all buffers to disk. |
|
||||
| `:write-quit-all`, `:wqa`, `:xa` | Write changes from all buffers to disk and close all views. |
|
||||
| `:write-quit-all!`, `:wqa!`, `:xa!` | Write changes from all buffers to disk and close all views forcefully (ignoring unsaved changes). |
|
||||
| `:quit-all`, `:qa` | Close all views. |
|
||||
| `:quit-all!`, `:qa!` | Force close all views ignoring unsaved changes. |
|
||||
| `:cquit`, `:cq` | Quit with exit code (default 1). Accepts an optional integer exit code (:cq 2). |
|
||||
| `:cquit!`, `:cq!` | Force quit with exit code (default 1) ignoring unsaved changes. Accepts an optional integer exit code (:cq! 2). |
|
||||
| `:theme` | Change the editor theme (show current theme if no name specified). |
|
||||
| `:clipboard-yank` | Yank main selection into system clipboard. |
|
||||
| `:clipboard-yank-join` | Yank joined selections into system clipboard. A separator can be provided as first argument. Default value is newline. |
|
||||
| `:primary-clipboard-yank` | Yank main selection into system primary clipboard. |
|
||||
| `:primary-clipboard-yank-join` | Yank joined selections into system primary clipboard. A separator can be provided as first argument. Default value is newline. |
|
||||
| `:clipboard-paste-after` | Paste system clipboard after selections. |
|
||||
| `:clipboard-paste-before` | Paste system clipboard before selections. |
|
||||
| `:clipboard-paste-replace` | Replace selections with content of system clipboard. |
|
||||
| `:primary-clipboard-paste-after` | Paste primary clipboard after selections. |
|
||||
| `:primary-clipboard-paste-before` | Paste primary clipboard before selections. |
|
||||
| `:primary-clipboard-paste-replace` | Replace selections with content of system primary clipboard. |
|
||||
| `:show-clipboard-provider` | Show clipboard provider name in status bar. |
|
||||
| `:change-current-directory`, `:cd` | Change the current working directory. |
|
||||
| `:show-directory`, `:pwd` | Show the current working directory. |
|
||||
| `:encoding` | Set encoding. Based on `https://encoding.spec.whatwg.org`. |
|
||||
| `:reload` | Discard changes and reload from the source file. |
|
||||
| `:reload-all` | Discard changes and reload all documents from the source files. |
|
||||
| `:update` | Write changes only if the file has been modified. |
|
||||
| `:lsp-workspace-command` | Open workspace command picker |
|
||||
| `:lsp-restart` | Restarts the Language Server that is in use by the current doc |
|
||||
| `:tree-sitter-scopes` | Display tree sitter scopes, primarily for theming and development. |
|
||||
| `:debug-start`, `:dbg` | Start a debug session from a given template with given parameters. |
|
||||
| `:debug-remote`, `:dbg-tcp` | Connect to a debug adapter by TCP address and start a debugging session from a given template with given parameters. |
|
||||
| `:debug-eval` | Evaluate expression in current debug context. |
|
||||
| `:vsplit`, `:vs` | Open the file in a vertical split. |
|
||||
| `:vsplit-new`, `:vnew` | Open a scratch buffer in a vertical split. |
|
||||
| `:hsplit`, `:hs`, `:sp` | Open the file in a horizontal split. |
|
||||
| `:hsplit-new`, `:hnew` | Open a scratch buffer in a horizontal split. |
|
||||
| `:tutor` | Open the tutorial. |
|
||||
| `:goto`, `:g` | Goto line number. |
|
||||
| `:set-language`, `:lang` | Set the language of current buffer. |
|
||||
| `:set-option`, `:set` | Set a config option at runtime.<br>For example to disable smart case search, use `:set search.smart-case false`. |
|
||||
| `:get-option`, `:get` | Get the current value of a config option. |
|
||||
| `:sort` | Sort ranges in selection. |
|
||||
| `:rsort` | Sort ranges in selection in reverse order. |
|
||||
| `:reflow` | Hard-wrap the current selection of lines to a given width. |
|
||||
| `:tree-sitter-subtree`, `:ts-subtree` | Display tree sitter subtree under cursor, primarily for debugging queries. |
|
||||
| `:config-reload` | Refresh user config. |
|
||||
| `:config-open` | Open the user config.toml file. |
|
||||
| `:log-open` | Open the helix log file. |
|
||||
| `:insert-output` | Run shell command, inserting output before each selection. |
|
||||
| `:append-output` | Run shell command, appending output after each selection. |
|
||||
| `:pipe` | Pipe each selection to the shell command. |
|
||||
<<<<<<< HEAD
|
||||
<<<<<<< HEAD
|
||||
||||||| f0f295a6
|
||||
=======
|
||||
| `:pipe-to` | Pipe each selection to the shell command, ignoring output. |
|
||||
>>>>>>> origin/master
|
||||
| `:run-shell-command`, `:sh` | Run a shell command |
|
||||
||||||| 4b1fe367
|
||||
=======
|
||||
| `:lsp-restart` | Restarts the LSP server of the current buffer |
|
||||
>>>>>>> lsp-restart
|
File diff suppressed because it is too large
Load Diff
@ -1,84 +0,0 @@
|
||||
# Author : Sebastian Zivota <loewenheim@mailbox.org>
|
||||
"comment" = { fg = "comment" }
|
||||
"constant" = { fg = "purple" }
|
||||
"constant.character.escape" = { fg = "pink" }
|
||||
"function" = { fg = "green" }
|
||||
"keyword" = { fg = "pink" }
|
||||
"operator" = { fg = "pink" }
|
||||
"punctuation" = { fg = "foreground" }
|
||||
"string" = { fg = "yellow" }
|
||||
"string.regexp" = { fg = "red" }
|
||||
"tag" = { fg = "pink" }
|
||||
"type" = { fg = "cyan", modifiers = ["italic"] }
|
||||
"type.enum.variant" = { fg = "foreground", modifiers = ["italic"] }
|
||||
"variable" = { fg = "foreground" }
|
||||
"variable.builtin" = { fg = "cyan", modifiers = ["italic"] }
|
||||
"variable.parameter" = { fg ="orange", modifiers = ["italic"] }
|
||||
|
||||
"diff.plus" = { fg = "green" }
|
||||
"diff.delta" = { fg = "orange" }
|
||||
"diff.minus" = { fg = "red" }
|
||||
|
||||
"ui.background" = { fg = "foreground", bg = "background" }
|
||||
"ui.cursor" = { fg = "background", bg = "orange", modifiers = ["dim"] }
|
||||
"ui.cursor.match" = { fg = "green", modifiers = ["underlined"] }
|
||||
"ui.cursor.primary" = { fg = "background", bg = "cyan", modifiers = ["dim"] }
|
||||
"ui.cursorline.primary" = { bg = "background_dark" }
|
||||
"ui.help" = { fg = "foreground", bg = "background_dark" }
|
||||
"ui.linenr" = { fg = "comment" }
|
||||
"ui.linenr.selected" = { fg = "foreground" }
|
||||
"ui.menu" = { fg = "foreground", bg = "background_dark" }
|
||||
"ui.menu.selected" = { fg = "cyan", bg = "background_dark" }
|
||||
"ui.popup" = { fg = "foreground", bg = "background_dark" }
|
||||
"ui.selection" = { bg = "secondary_highlight" }
|
||||
"ui.selection.primary" = { bg = "primary_highlight" }
|
||||
"ui.statusline" = { fg = "foreground", bg = "background_dark" }
|
||||
"ui.statusline.inactive" = { fg = "comment", bg = "background_dark" }
|
||||
"ui.statusline.normal" = { fg = "background_dark", bg = "cyan" }
|
||||
"ui.statusline.insert" = { fg = "background_dark", bg = "green" }
|
||||
"ui.statusline.select" = { fg = "background_dark", bg = "purple" }
|
||||
"ui.text" = { fg = "foreground" }
|
||||
"ui.text.focus" = { fg = "cyan" }
|
||||
"ui.window" = { fg = "foreground" }
|
||||
"ui.virtual.whitespace" = { fg = "comment" }
|
||||
"ui.virtual.ruler" = { bg = "background_dark"}
|
||||
|
||||
"error" = { fg = "red" }
|
||||
"warning" = { fg = "cyan" }
|
||||
|
||||
"markup.heading" = { fg = "purple", modifiers = ["bold"] }
|
||||
"markup.list" = "cyan"
|
||||
"markup.bold" = { fg = "orange", modifiers = ["bold"] }
|
||||
"markup.italic" = { fg = "yellow", modifiers = ["italic"] }
|
||||
"markup.link.url" = "cyan"
|
||||
"markup.link.text" = "pink"
|
||||
"markup.quote" = { fg = "yellow", modifiers = ["italic"] }
|
||||
"markup.raw" = { fg = "foreground" }
|
||||
|
||||
<<<<<<< HEAD
|
||||
"ui.explorer.file" = { fg = "foreground" }
|
||||
"ui.explorer.dir" = { fg = "cyan" }
|
||||
"ui.explorer.exe" = { fg = "foreground" }
|
||||
"ui.explorer.focus" = { modifiers = ["reversed"] }
|
||||
"ui.explorer.unfocus" = { bg = "secondary_highlight" }
|
||||
|
||||
||||||| f0f295a6
|
||||
=======
|
||||
"diagnostic".underline = { color = "orange", style = "curl" }
|
||||
"diagnostic.error".underline = { color = "red", style = "curl" }
|
||||
|
||||
>>>>>>> origin/master
|
||||
[palette]
|
||||
background = "#282a36"
|
||||
background_dark = "#21222c"
|
||||
primary_highlight = "#800049"
|
||||
secondary_highlight = "#4d4f66"
|
||||
foreground = "#f8f8f2"
|
||||
comment = "#6272a4"
|
||||
red = "#ff5555"
|
||||
orange = "#ffb86c"
|
||||
yellow = "#f1fa8c"
|
||||
green = "#50fa7b"
|
||||
purple = "#bd93f9"
|
||||
cyan = "#8be9fd"
|
||||
pink = "#ff79c6"
|
@ -1,84 +0,0 @@
|
||||
# Author : Ingrid Rebecca Abraham <git@ingrids.email>
|
||||
|
||||
"attribute" = "#839A53"
|
||||
"keyword" = { fg = "#D74E50", modifiers = ["bold"] }
|
||||
"keyword.directive" = "#6F873E"
|
||||
"namespace" = "#839A53"
|
||||
"punctuation" = "#C97270"
|
||||
"punctuation.delimiter" = "#C97270"
|
||||
"operator" = { fg = "#D74E50", modifiers = ["bold"] }
|
||||
"special" = "#D68482"
|
||||
"variable.other.member" = "#89BEB7"
|
||||
"variable" = "#A6B6CE"
|
||||
"variable.parameter" = "#89BEB7"
|
||||
"type" = { fg = "#A6B6CE", modifiers = ["bold"] }
|
||||
"type.builtin" = "#839A53"
|
||||
"constructor" = { fg = "#839A53", modifiers = ["bold"] }
|
||||
"function" = { fg = "#89BEB7", modifiers = ["bold"] }
|
||||
"function.macro" = { fg = "#D4A520", modifiers = ["bold"] }
|
||||
"function.builtin" = "#89BEB7"
|
||||
"comment" = "#A6B6CE"
|
||||
"variable.builtin" = "#D4A520"
|
||||
"constant" = "#D4A520"
|
||||
"constant.builtin" = "#D4A520"
|
||||
"string" = "#D74E50"
|
||||
"constant.numeric" = "#D74E50"
|
||||
"constant.character.escape" = { fg = "#D74E50", modifiers = ["bold"] }
|
||||
"label" = "#D68482"
|
||||
|
||||
"module" = "#839A53"
|
||||
|
||||
# TODO
|
||||
"markup.heading" = "blue"
|
||||
"markup.list" = "red"
|
||||
"markup.bold" = { fg = "yellow", modifiers = ["bold"] }
|
||||
"markup.italic" = { fg = "magenta", modifiers = ["italic"] }
|
||||
"markup.link.url" = { fg = "yellow", modifiers = ["underlined"] }
|
||||
"markup.link.text" = "red"
|
||||
"markup.quote" = "cyan"
|
||||
"markup.raw" = "green"
|
||||
|
||||
"diff.plus" = "#839A53"
|
||||
"diff.delta" = "#D4A520"
|
||||
"diff.minus" = "#D74E50"
|
||||
|
||||
"ui.background" = { bg = "#FFFCFD" }
|
||||
"ui.linenr" = { fg = "#bbbbbb" }
|
||||
"ui.linenr.selected" = { fg = "#ED5466", modifiers = ["bold"] }
|
||||
"ui.cursorline" = { bg = "#F3EAE9" }
|
||||
"ui.statusline" = { fg = "#250E07", bg = "#F3EAE9" }
|
||||
"ui.statusline.inactive" = { fg = "#7b91b3", bg = "#F3EAE9" }
|
||||
"ui.popup" = { fg = "#7B91b3", bg = "#F3E8E9" }
|
||||
"ui.window" = { bg = "#D8B8B3" }
|
||||
"ui.help" = { bg = "#D8B8B3", fg = "#250E07" }
|
||||
|
||||
"ui.text" = { fg = "#7B91B3" }
|
||||
"ui.text.focus" = { fg = "#250E07", modifiers= ["bold"] }
|
||||
"ui.virtual.whitespace" = "#A6B6CE"
|
||||
"ui.virtual.ruler" = { bg = "#F3EAE9" }
|
||||
|
||||
"ui.selection" = { bg = "#F3EAE9" }
|
||||
"ui.cursor.primary" = { bg = "#ED5466", fg = "#FFFCFD", modifiers = ["bold"] }
|
||||
"ui.cursor.match" = { bg = "#F3EAE9", fg = "#ED5466", modifiers = ["bold"] }
|
||||
"ui.menu" = { fg = "#7B91B3", bg = "#F3EAE9" }
|
||||
"ui.menu.selected" = { fg = "#D74E50", bg = "#F3EAE9" }
|
||||
|
||||
"warning" = "#D4A520"
|
||||
"error" = "#D74E50"
|
||||
"info" = "#839A53"
|
||||
"hint" = "#A6B6CE"
|
||||
<<<<<<< HEAD
|
||||
|
||||
"ui.explorer.file" = { fg = "#7B91B3" }
|
||||
"ui.explorer.dir" = { fg = "#89BEB7" }
|
||||
"ui.explorer.exe" = { fg = "#7B91B3" }
|
||||
"ui.explorer.focus" = { modifiers = ["reversed"] }
|
||||
"ui.explorer.unfocus" = { bg = "#F3EAE9" }
|
||||
||||||| 7ac72a39
|
||||
=======
|
||||
|
||||
"diagnostic.warning" = { underline = { color = "#D4A520", style = "curl" } }
|
||||
"diagnostic.error" = { underline = { color = "#D74E50", style = "curl" } }
|
||||
"diagnostic.info" = { underline = { color = "#839A53", style = "curl" } }
|
||||
"diagnostic.hint" = { underline = { color = "#A6B6CE", style = "curl" } }
|
||||
>>>>>>> master
|
@ -1,114 +0,0 @@
|
||||
# Serika (Light)
|
||||
# Author: VuiMuich
|
||||
|
||||
# Original Author:
|
||||
# URL: https://github.com/arturoalviar/serika-syntax
|
||||
# Author: arturoalviar
|
||||
# License: MIT License
|
||||
|
||||
"escape" = "orange"
|
||||
"type" = "yellow"
|
||||
"constant" = "purple"
|
||||
"number" = "purple"
|
||||
"string" = "fg"
|
||||
"comment" = "grey2"
|
||||
"variable" = "yellow"
|
||||
"variable.builtin" = "blue"
|
||||
"variable.parameter" = "yellow"
|
||||
"variable.property" = "yellow"
|
||||
"label" = "aqua"
|
||||
"punctuation" = "grey0"
|
||||
"punctuation.delimiter" = "grey2"
|
||||
"punctuation.bracket" = "fg"
|
||||
"keyword" = "red"
|
||||
"operator" = "grey0"
|
||||
"function" = "green"
|
||||
"function.builtin" = "blue"
|
||||
"function.macro" = "aqua"
|
||||
"tag" = "yellow"
|
||||
"namespace" = "fg"
|
||||
"attribute" = "aqua"
|
||||
"constructor" = "yellow"
|
||||
"module" = "blue"
|
||||
"special" = "orange"
|
||||
|
||||
"ui.background" = { bg = "bg0" }
|
||||
"ui.cursor" = { fg = "bg0", bg = "fg" }
|
||||
"ui.cursor.match" = { fg = "grey1", bg = "grey2" }
|
||||
"ui.cursor.insert" = { fg = "bg0", bg = "bg_yellow" }
|
||||
"ui.cursor.select" = { fg = "bg0", bg = "bg_yellow" }
|
||||
"ui.linenr" = "yellow"
|
||||
"ui.linenr.selected" = { fg = "fg", modifiers = ["bold", "underlined"] }
|
||||
"ui.cursorline" = { bg = "bg01" }
|
||||
"ui.statusline" = { fg = "grey1", bg = "bg5" }
|
||||
"ui.statusline.inactive" = { fg = "grey2", bg = "bg1" }
|
||||
"ui.popup" = { fg = "bg0", bg = "bg5" }
|
||||
"ui.window" = { fg = "bg0", bg = "bg5" }
|
||||
"ui.help" = { fg = "bg0", bg = "bg5" }
|
||||
"ui.text" = "fg"
|
||||
"ui.text.focus" = "yellow"
|
||||
"ui.menu" = { fg = "bg0", bg = "bg3" }
|
||||
"ui.menu.selected" = { fg = "bg0", bg = "bg_yellow" }
|
||||
"ui.selection" = { fg = "bg0", bg = "bg3" }
|
||||
"ui.virtual.whitespace" = { fg = "bg2" }
|
||||
"ui.virtual.ruler" = { bg = "bg01" }
|
||||
|
||||
"hint" = "blue"
|
||||
"info" = "aqua"
|
||||
"warning" = "yellow"
|
||||
"error" = "nasty-red"
|
||||
"diagnostic" = { fg = "nasty-red", modifiers = ["underlined"] }
|
||||
|
||||
"diff.plus" = { fg = "bg_green" }
|
||||
"diff.delta" = { fg = "bg_blue" }
|
||||
"diff.minus" = { fg = "nasty-red" }
|
||||
|
||||
"markup.heading" = { fg = "purple", modifiers = ["bold"] }
|
||||
"markup.list" = "cyan"
|
||||
"markup.bold" = { fg = "orange", modifiers = ["bold"] }
|
||||
"markup.italic" = { fg = "yellow", modifiers = ["italic"] }
|
||||
"markup.link.url" = "cyan"
|
||||
"markup.link.text" = "pink"
|
||||
"markup.quote" = { fg = "yellow", modifiers = ["italic"] }
|
||||
"markup.raw" = { fg = "fg" }
|
||||
|
||||
<<<<<<< HEAD
|
||||
"ui.explorer.file" = { fg = "fg" }
|
||||
"ui.explorer.dir" = { fg = "blue" }
|
||||
"ui.explorer.exe" = { fg = "fg" }
|
||||
"ui.explorer.focus" = { modifiers = ["reversed"] }
|
||||
"ui.explorer.unfocus" = { bg = "bg3" }
|
||||
|
||||
||||||| f0f295a6
|
||||
|
||||
=======
|
||||
>>>>>>> origin/master
|
||||
[palette]
|
||||
|
||||
bg0 = "#e1e1e3"
|
||||
bg01 = "#eaeaec"
|
||||
bg1 = "#494c50"
|
||||
bg2 = "#55585e"
|
||||
bg3 = "#61656b"
|
||||
bg4 = "#6d7278"
|
||||
bg5 = "#797e86"
|
||||
bg_visual = "#646669"
|
||||
bg_red = "#7e2a33"
|
||||
bg_green = "#86b365"
|
||||
bg_blue = "#6a89af"
|
||||
bg_yellow = "#e2b714"
|
||||
|
||||
fg = "#323437"
|
||||
red = "#621d28"
|
||||
nasty-red = "#da3333"
|
||||
dark-red = "#791717"
|
||||
orange = "#57320f"
|
||||
yellow = "#9a7d0e"
|
||||
green = "#3f4b34"
|
||||
aqua = "#455054"
|
||||
blue = "#3f5673"
|
||||
purple = "#534059"
|
||||
grey0 = "#aaaeb3"
|
||||
grey1 = "#e1e1e3"
|
||||
grey2 = "#646669"
|
||||
pink = "#e06c75"
|
Loading…
Reference in New Issue