Atom currently sets the `value` of the input on every `textInput` event, in an effort to appropriately handle changes made via the OSX diacritic menu (for accents, umlauts, etc). The drawback of this is approach is that updating the value of the input will trigger layout and a subsequent layer tree update. To resolve this, here is my proposal: - Track a flag for `keypress` events. When the diacritic menu is used, there are two `textInput` events, with no `keypress` in between. Therefore, when no `keypress` has occurred just prior to a `textInput`, the editor model can select the previous character to be replaced by the new accented character. - Track a flag for `compositionstart` events. When a user is in IME mode, the diacritic menu cannot be used, so the editor can skip the backward selection. Test Plan: Tested in a plaintext file. - Type Latin characters, verify proper character insertion. - Press and hold <kbd>a</kbd>. Diacritic menu appears. Select an option using the keyboard or mouse. Verify that the `a` is replaced by an accented `a`, with no extra characters. - Type test strings in Katakana, 2-Set Korean, Telex (Vietnamese), Simplified Pinyin. Verify that characters are inserted correctly while composing, and after committing strings.
Atom is a hackable text editor for the 21st century, built on Electron, and based on everything we love about our favorite editors. We designed it to be deeply customizable, but still approachable using the default configuration.
Visit atom.io to learn more or visit the Atom forum.
Follow @AtomEditor on Twitter for important announcements.
This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to atom@github.com.
Documentation
If you want to read about using Atom or developing packages in Atom, the Atom Flight Manual is free and available online, along with ePub, PDF and mobi versions. You can find the source to the manual in atom/docs.
The API reference for developing packages is also documented on Atom.io.
Installing
Prerequisites
OS X
Download the latest Atom release.
Atom will automatically update when a new release is available.
Windows
Download the latest AtomSetup.exe installer.
Atom will automatically update when a new release is available.
You can also download an atom-windows.zip file from the releases page.
The .zip version will not automatically update.
Using chocolatey? Run cinst Atom to install
the latest version of Atom.
Debian Linux (Ubuntu)
Currently only a 64-bit version is available.
- Download
atom-amd64.debfrom the Atom releases page. - Run
sudo dpkg --install atom-amd64.debon the downloaded package. - Launch Atom using the installed
atomcommand.
The Linux version does not currently automatically update so you will need to repeat these steps to upgrade to future releases.
Red Hat Linux (Fedora 21 and under, CentOS, Red Hat)
Currently only a 64-bit version is available.
- Download
atom.x86_64.rpmfrom the Atom releases page. - Run
sudo yum localinstall atom.x86_64.rpmon the downloaded package. - Launch Atom using the installed
atomcommand.
The Linux version does not currently automatically update so you will need to repeat these steps to upgrade to future releases.
Fedora 22+
Currently only a 64-bit version is available.
- Download
atom.x86_64.rpmfrom the Atom releases page. - Run
sudo dnf install ./atom.x86_64.rpmon the downloaded package. - Launch Atom using the installed
atomcommand.
The Linux version does not currently automatically update so you will need to repeat these steps to upgrade to future releases.
