Skip to content

Genio-The-Haiku-IDE/Genio

Repository files navigation

Genio

Build Codacy Security Scan Codacy Badge CodeFactor Screenshot Screenshot-Dark

Introduction

Genio is a native and fully functional IDE for the Haiku operating system

Some of the features of the Genio IDE are:

  • LSP Server support (autocompletion, signature help, go to definition/implementation/declaration, quick fix, format)
  • Multi-project browser
  • Integrated source control with GIT (including opening a remote project)
  • Find in files
  • Links to file and build errors in Build Log and Console I/O
  • Symbols outline view
  • "Problems" tab
  • Build on save / Save on build
  • User templates for quickly creating new files and projects
  • Rich editor with many features:
    • Multiple tabs
    • Syntax highlighting for many languages
    • Highlight/Trim whitespace
    • Comment/uncomment lines
    • Duplicate current line
    • Delete lines
    • Switch between source and header
  • Full screen and Focus mode

Genio started off as a fork of Ideam, and the editor is based on Scintilla for Haiku.

We also took inspiration and code from the editor Koder.

  • strongly recommended for full Genio experience (autocompletion, jump to definition, etc):
    • gcc_syslibs_devel
    • llvm17_clang
pkgman install gcc_syslibs_devel llvm17_clang

Goals and roadmap

Genio aims to be an easy, simple yet powerful IDE for Haiku inspired by VS Code and Nova.

  • Plug-in architecture
  • Bring the editor up-to-date and on par with other Haiku editors (Koder, Pe)
  • Compiler error parser

Configuring LSP

For more advanced IDE features, Genio implements the LSP protocol. (https://microsoft.github.io/language-server-protocol/)

Building Genio

Prerequirements

Genio requires Scintilla and Lexilla to implement various functionalities. It also requires libgit2 to implement Git features, libyaml_cpp to read yaml files and editorconfig_core_c to provide support for project wide .editorconfig settings. The needed development files are available in libgit2_devel, lexilla_devel, yaml_cpp0.8_devel, and editorconfig_core_c_devel respectively. Execute pkgman install libgit2_devel lexilla_devel yaml_cpp0.8_devel editorconfig_core_c_devel from Terminal.

If you would like to try a clang++ build:

  • Install llvm17_clang and llvm17_lld hpkgs from HaikuPorts
  • Set BUILD_WITH_CLANG to 1 in Makefile

Compiling

Execute make deps && make in Genio's top directory. The executable is created in app subdirectory.

Genio can also be built within Genio itself.

Contributions

We gladly accept contributions, especially for bug fixes. Feel free to submit PRs. For code contributions, prefer Haiku API over posix, where applicable. We (try to) stick to the Haiku style for code, although we are a bit less strict sometimes.

License

Genio is available under the MIT license. See License.md. Outline LSP icons are taken from Visual Studio Code and released under Creative Commons license. See Visual Studio Code - Icons