• Packages
  • Themes
  • Documentation
  • Blog
  • Discussions

Chapter 1: Getting Started

  • Why Atom?
  • Installing Atom
  • Atom Basics
  • Summary

Chapter 2: Using Atom

  • Atom Packages
  • Moving in Atom
  • Atom Selections
  • Editing and Deleting Text
  • Find and Replace
  • Snippets
  • Autocomplete
  • Folding
  • Panes
  • Pending Pane Items
  • Grammar
  • Version Control in Atom
  • GitHub package
  • Writing in Atom
  • Basic Customization
  • Summary

Chapter 3: Hacking Atom

  • Tools of the Trade
  • The Init File
  • Package: Word Count
  • Package: Modifying Text
  • Package: Active Editor Info
  • Creating a Theme
  • Creating a Grammar
  • Creating a Legacy TextMate Grammar
  • Publishing
  • Iconography
  • Debugging
  • Writing specs
  • Handling URIs
  • Cross-Platform Compatibility
  • Converting from TextMate
  • Hacking on Atom Core
  • Contributing to Official Atom Packages
  • Creating a Fork of a Core Package in atom/atom
  • Maintaining a Fork of a Core Package in atom/atom
  • Summary

Chapter 4: Behind Atom

  • Configuration API
  • Keymaps In-Depth
  • Scoped Settings, Scopes and Scope Descriptors
  • Serialization in Atom
  • Developing Node Modules
  • Interacting With Other Packages Via Services
  • Maintaining Your Packages
  • How Atom Uses Chromium Snapshots
  • Summary

Reference: API

  • AtomEnvironment
  • BufferedNodeProcess
  • BufferedProcess
  • Clipboard
  • Color
  • CommandRegistry
  • CompositeDisposable
  • Config
  • ContextMenuManager
  • Cursor
  • Decoration
  • DeserializerManager
  • Directory
  • DisplayMarker
  • DisplayMarkerLayer
  • Disposable
  • Dock
  • Emitter
  • File
  • GitRepository
  • Grammar
  • GrammarRegistry
  • Gutter
  • HistoryManager
  • KeymapManager
  • LayerDecoration
  • MarkerLayer
  • MenuManager
  • Notification
  • NotificationManager
  • Package
  • PackageManager
  • Pane
  • Panel
  • PathWatcher
  • Point
  • Project
  • Range
  • ScopeDescriptor
  • Selection
  • StyleManager
  • Task
  • TextBuffer
  • TextEditor
  • ThemeManager
  • TooltipManager
  • ViewRegistry
  • Workspace
  • WorkspaceCenter

Appendix A: Resources

  • Glossary

Appendix B: FAQ

  • Is Atom open source?
  • What does Atom cost?
  • What platforms does Atom run on?
  • How can I contribute to Atom?
  • Why does Atom collect usage data?
  • Atom in the cloud?
  • What's the difference between an IDE and an editor?
  • How can I tell if subpixel antialiasing is working?
  • Why is Atom deleting trailing whitespace? Why is there a newline at the end of the file?
  • What does Safe Mode do?
  • I have a question about a specific Atom community package. Where is the best place to ask it?
  • I’m using an international keyboard and keys that use AltGr or Ctrl+Alt aren’t working
  • I’m having a problem with Julia! What do I do?
  • I’m getting an error about a “self-signed certificate”. What do I do?
  • I’m having a problem with PlatformIO! What do I do?
  • How do I make Atom recognize a file with extension X as language Y?
  • How do I make the Welcome screen stop showing up?
  • How do I preview web page changes automatically?
  • How do I accept input from my program or script when using the script package?
  • I am unable to update to the latest version of Atom on macOS. How do I fix this?
  • I’m trying to change my syntax colors from styles.less, but it isn’t working!
  • How do I build or execute code I've written in Atom?
  • How do I uninstall Atom on macOS?
  • macOS Mojave font rendering change
  • Why does macOS say that Atom wants to access my calendar, contacts, photos, etc.?
  • How do I turn on line wrap?
  • The menu bar disappeared, how do I get it back?
  • How do I use a newline in the result of find and replace?
  • What is this line on the right in the editor view?

Appendix C: Shadow DOM

  • Removing Shadow DOM styles

Appendix D: Upgrading to 1.0 APIs

  • Upgrading Your Package
  • Upgrading Your UI Theme Or Package Selectors
  • Upgrading Your Syntax Theme

Appendix E: Atom server-side APIs

  • Atom package server API
  • Atom update server API

  • mac
  • windows
  • linux

Range Essential

Represents a region in a buffer in row/column coordinates.

Every public method that takes a range also accepts a range-compatible Array. This means a 2-element array containing Points or point-compatible arrays. So the following are equivalent:

Examples

new Range(new Point(0, 1), new Point(2, 3))
new Range([0, 1], [2, 3])
[[0, 1], [2, 3]] # Range compatible array

Properties

::start

A Point representing the start of the Range.

::end

A Point representing the end of the Range.

Construction

.fromObject(object, copy)

Convert any range-compatible object to a Range.

Argument Description

object

This can be an object that’s already a Range, in which case it’s simply returned, or an array containing two Points or point-compatible arrays.

copy

An optional boolean indicating whether to force the copying of objects that are already ranges.

Return values

Returns: A Range based on the given object.

::constructor(pointA, pointB)

Construct a Range object

Argument Description

pointA

Point or Point compatible Array (default: [0,0])

pointB

Point or Point compatible Array (default: [0,0])

::copy()

Return values

Returns a new range with the same start and end positions.

::negate()

Return values

Returns a new range with the start and end positions negated.

Serialization and Deserialization

.deserialize(array)

Call this with the result of Range::serialize to construct a new Range.

Argument Description

array

Array of params to pass to the ::constructor

::serialize()

Return values

Returns a plain javascript object representation of the range.

Range Details

::isEmpty()

Is the start position of this range equal to the end position?

Return values

Returns a Boolean.

::isSingleLine()

Return values

Returns a Boolean indicating whether this range starts and ends on the same row.

::getRowCount()

Get the number of rows in this range.

Return values

Returns a Number.

::getRows()

Return values

Returns an array of all rows in the range.

Operations

::freeze()

Freezes the range and its start and end point so it becomes immutable and returns itself.

Return values

Returns an immutable version of this Range

::union(otherRange)

Argument Description

otherRange

A Range or range-compatible Array

Return values

Returns a new range that contains this range and the given range.

::translate(startDelta, endDelta)

Build and return a new range by translating this range’s start and end points by the given delta(s).

Argument Description

startDelta

A Point by which to translate the start of this range.

endDelta

optional

A Point to by which to translate the end of this range. If omitted, the startDelta will be used instead.

Return values

Returns a Range.

::traverse(delta)

Build and return a new range by traversing this range’s start and end points by the given delta.

See Point::traverse for details of how traversal differs from translation.

Argument Description

delta

A Point containing the rows and columns to traverse to derive the new range.

Return values

Returns a Range.

Comparison

::compare(otherRange)

Compare two Ranges

Argument Description

otherRange

A Range or range-compatible Array.

Return values

Returns -1 if this range starts before the argument or contains it.

Returns 0 if this range is equivalent to the argument.

Returns 1 if this range starts after the argument or is contained by it.

::isEqual(otherRange)

Argument Description

otherRange

A Range or range-compatible Array.

Return values

Returns a Boolean indicating whether this range has the same start and end points as the given Range or range-compatible Array.

::coversSameRows(otherRange)

Argument Description

otherRange

A Range or range-compatible Array.

Return values

Returns a Boolean indicating whether this range starts and ends on the same row as the argument.

::intersectsWith(otherRange, exclusive)

Determines whether this range intersects with the argument.

Argument Description

otherRange

A Range or range-compatible Array

exclusive

optional

Boolean indicating whether to exclude endpoints when testing for intersection. Defaults to false.

Return values

Returns a Boolean.

::containsRange(otherRange, exclusive)

Argument Description

otherRange

A Range or range-compatible Array

exclusive

optional

Boolean including that the containment should be exclusive of endpoints. Defaults to false.

Return values

Returns a Boolean indicating whether this range contains the given range.

::containsPoint(point, exclusive)

Argument Description

point

A Point or point-compatible Array

exclusive

optional

Boolean including that the containment should be exclusive of endpoints. Defaults to false.

Return values

Returns a Boolean indicating whether this range contains the given point.

::intersectsRow(row)

Argument Description

row

Row Number

Return values

Returns a Boolean indicating whether this range intersects the given row Number.

::intersectsRowRange(startRow, endRow)

Argument Description

startRow

Number start row

endRow

Number end row

Return values

Returns a Boolean indicating whether this range intersects the row range indicated by the given startRow and endRow Numbers.

Conversion

::toString()

Return values

Returns a string representation of the range.

  • Terms of Use
  • Privacy
  • Code of Conduct
  • Releases
  • FAQ
  • Contact
  • Contribute!
with by