GithubHelp home page GithubHelp logo

imhanhan / chime Goto Github PK

View Code? Open in Web Editor NEW

This project forked from chimehq/chime

0.0 0.0 0.0 334 KB

An editor for macOS

Home Page: https://www.chimehq.com

License: BSD 3-Clause "New" or "Revised" License

Shell 0.21% Swift 99.79%

chime's Introduction

Chime

An editor for macOS

Download the latest release on the website.

Goals:

  • develop modular, open source components
  • be an editor people enjoy using
  • support cool extensions

Features:

  • completions
  • command line tool
  • document/project-scoped search
  • editorconfig
  • extensions
  • file navigator
  • syntax highlighting (driven by tree-sitter and LSP)
  • structure highlighting
  • semantic symbol information
  • textual/symbolic quick open
  • UI theming

Project State

The code in this repo should be considered non-functional right now. If you want to use Chime, you can download the currently released version.

Chime used to be commercial, but is now free. It built up some pretty significant cruft over time. In particular, the core UI application architecture is just in a bad state. It is also quite complex to build. So, I've opted to re-implement that core and pull in parts as appropriate. I'll be putting an emphasis on extracting components into packages as I go. A fitting rebirth, I would say.

Contributing

It is always a good idea to discuss before taking on a significant task. That said, I have a strong bias towards enthusiasm. If you are excited about doing something, I'll do my best to get out of your way.

The project is internally documented with DocC. The docs contains details about getting started, structure, and internal systems/behaviors.

There are a few areas that would make for excellent targets though, if you really feel so inclined.

  • It would be really interesting to explore the TreeSitterDocument concept
  • I'd love to expand on more universal theme support
  • The text search system is bad and I'd love to build something better
  • The view-based extension system could really use some more attention
  • I'd like to finish migrating the preferences to SwiftUI
  • Support for the Debug Adapter Protocol
  • The autocomplete result window isn't very pretty

By participating in this project you agree to abide by the Contributor Code of Conduct.

Building

Note: requires Xcode 15 and macOS 14

  • clone the repo
  • git submodule update --init --recursive
  • cp User.xcconfig.template User.xcconfig
  • update User.xcconfig with your personal information
  • build/run with Xcode

Why are their submodules you ask? Chime embeds many of its extensions inside the application itself for ease of installation. However, because of limitations in how you can influence the linking process with SPM, I cannot figure out how to use SPM and also link against the included ChimeKit.framework.

Guidelines

  • SwiftUI where possible, AppKit where useful
  • using packages is a wonderful way to support open source software
  • supporting older versions of macOS is nice, not critical

Conventions

  • tabs for indentation
  • configuration in xcconfig files
  • project resources are sorted alphabetically
  • imports are sorted by alphabetically, but partitioned to system/non-system

Significant Issues

Chime is a reasonably complex project. It's bound to run into bugs in Apple frameworks, Xcode, and other systems that present a real problem to its development. This is a list of the most serious issues, which have a major impact on either the user or developer experience.

  • FB12094161: System Settings extension approval system does not appear to work
  • FB11716027: EXAppExtensionBrowserViewController duplicate apps
  • FB11748287: Static metadata for extension available in AppExtensionIdentity
  • FB13384096: Package with non-Swift target fails to build unless explicitly linked
  • Add macOS 14 (Sonoma) Runner Image

Other Notable Projects

chime's People

Contributors

icanzilb avatar mattmassicotte avatar radmakr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.