Skip to content
This repository has been archived by the owner on Apr 1, 2020. It is now read-only.

Commit

Permalink
Move API out (#2459)
Browse files Browse the repository at this point in the history
Thanks, @Akin909 :)
  • Loading branch information
TalAmuyal committed Jul 25, 2018
1 parent ecbd4af commit c667874
Show file tree
Hide file tree
Showing 16 changed files with 104 additions and 220 deletions.
17 changes: 8 additions & 9 deletions browser/src/Editor/Editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,10 @@ import * as types from "vscode-languageserver-types"

import { Disposable } from "./../Utility"

export interface IEditor extends Oni.Editor {
// Methods
init(filesToOpen: string[]): void
render(): JSX.Element

setSelection(selectionRange: types.Range): Promise<void>
}

/**
* Base class for Editor implementations
*/
export class Editor extends Disposable implements Oni.Editor {
export abstract class Editor extends Disposable implements Oni.Editor {
private _currentMode: string
private _onBufferEnterEvent = new Event<Oni.EditorBufferEventArgs>()
private _onBufferLeaveEvent = new Event<Oni.EditorBufferEventArgs>()
Expand All @@ -44,7 +36,10 @@ export class Editor extends Disposable implements Oni.Editor {
return this._onCursorMoved
}

public abstract init(filesToOpen: string[]): void

// Events

public get onModeChanged(): IEvent<Oni.Vim.Mode> {
return this._onModeChangedEvent
}
Expand Down Expand Up @@ -90,6 +85,10 @@ export class Editor extends Disposable implements Oni.Editor {
return Promise.reject("Not implemented")
}

public abstract render(): JSX.Element

public abstract setSelection(selectionRange: types.Range): Promise<void>

protected setMode(mode: Oni.Vim.Mode): void {
if (mode !== this._currentMode) {
this._currentMode = mode
Expand Down
6 changes: 3 additions & 3 deletions browser/src/Editor/NeovimEditor/NeovimEditor.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* NeovimEditor.ts
*
* IEditor implementation for Neovim
* Editor implementation for Neovim
*/

import * as os from "os"
Expand Down Expand Up @@ -66,7 +66,7 @@ import { IThemeMetadata, ThemeManager } from "./../../Services/Themes"
import { TypingPredictionManager } from "./../../Services/TypingPredictionManager"
import { Workspace } from "./../../Services/Workspace"

import { Editor, IEditor } from "./../Editor"
import { Editor } from "./../Editor"

import { BufferManager, IBuffer } from "./../BufferManager"
import { CompletionMenu } from "./CompletionMenu"
Expand Down Expand Up @@ -99,7 +99,7 @@ import { CanvasRenderer } from "../../Renderer/CanvasRenderer"
import { WebGLRenderer } from "../../Renderer/WebGL/WebGLRenderer"
import { getInstance as getNotificationsInstance } from "./../../Services/Notifications"

export class NeovimEditor extends Editor implements IEditor {
export class NeovimEditor extends Editor implements Oni.Editor {
private _bufferManager: BufferManager
private _neovimInstance: NeovimInstance
private _renderer: INeovimRenderer
Expand Down
6 changes: 2 additions & 4 deletions browser/src/Editor/OniEditor/OniEditor.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* OniEditor.ts
*
* IEditor implementation for Oni
* Editor implementation for Oni
*
* Extends the capabilities of the NeovimEditor
*/
Expand Down Expand Up @@ -41,8 +41,6 @@ import { ThemeManager } from "./../../Services/Themes"
import { TokenColors } from "./../../Services/TokenColors"
import { Workspace } from "./../../Services/Workspace"

import { IEditor } from "./../Editor"

import { BufferScrollBarContainer } from "./containers/BufferScrollBarContainer"
import { DefinitionContainer } from "./containers/DefinitionContainer"
import { ErrorsContainer } from "./containers/ErrorsContainer"
Expand All @@ -64,7 +62,7 @@ const wrapReactComponentWithLayer = (id: string, component: JSX.Element): Oni.Bu
}
}

export class OniEditor extends Utility.Disposable implements IEditor {
export class OniEditor extends Utility.Disposable implements Oni.Editor {
private _neovimEditor: NeovimEditor

public get mode(): string {
Expand Down
40 changes: 5 additions & 35 deletions browser/src/Plugins/Api/Oni.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,7 @@ import { inputManager } from "./../../Services/InputManager"
import * as LanguageManager from "./../../Services/Language"
import { getTutorialManagerInstance } from "./../../Services/Learning"
import { getInstance as getAchievementsInstance } from "./../../Services/Learning/Achievements"
import {
getInstance as getMenuManagerInstance,
IMenuOptionWithHighlights,
} from "./../../Services/Menu"
import { getInstance as getMenuManagerInstance } from "./../../Services/Menu"
import { getInstance as getFiltersInstance } from "./../../Services/Menu/Filter"
import { getInstance as getNotificationsInstance } from "./../../Services/Notifications"
import { getInstance as getOverlayInstance } from "./../../Services/Overlay"
Expand All @@ -47,35 +44,8 @@ import { Search } from "./../../Services/Search/SearchProvider"

import * as throttle from "lodash/throttle"

import { ISearch } from "./Search" // TODO: Move to oni-api

const react = require("react") // tslint:disable-line no-var-requires

// TODO: Move to oni-api
export interface QuickFixEntry {
filename: string
lnum: number
col: number
text: string
}

// TODO: Move to oni-api under `menu`
export type IMenuFilter = (options: any[], searchString: string) => IMenuOptionWithHighlights[]

// TODO: Move to oni-api under `menu`
export interface IMenuFilters {
getDefault(): IMenuFilter
getByName(name: string): IMenuFilter
}

export interface ApiNext {
search: ISearch
ui: Ui
filter: IMenuFilters // TODO: Move to oni-api under menu

populateQuickFix(entries: QuickFixEntry[]): void
}

export class Dependencies {
public get React(): any {
return react
Expand All @@ -89,7 +59,7 @@ const helpers = {
/**
* API instance for interacting with OniApi (and vim)
*/
export class Oni implements OniApi.Plugin.Api, ApiNext {
export class Oni implements OniApi.Plugin.Api {
private _dependencies: Dependencies
private _ui: Ui
private _services: Services
Expand Down Expand Up @@ -158,7 +128,7 @@ export class Oni implements OniApi.Plugin.Api, ApiNext {
return getMenuManagerInstance()
}

public get filter(): IMenuFilters {
public get filter(): OniApi.Menu.IMenuFilters {
return getFiltersInstance("") // TODO: Pass either "core" or plugin's name
}

Expand Down Expand Up @@ -218,7 +188,7 @@ export class Oni implements OniApi.Plugin.Api, ApiNext {
return helpers
}

public get search(): ISearch {
public get search(): OniApi.Search.ISearch {
return new Search()
}

Expand All @@ -228,7 +198,7 @@ export class Oni implements OniApi.Plugin.Api, ApiNext {
this._services = new Services()
}

public populateQuickFix(entries: QuickFixEntry[]): void {
public populateQuickFix(entries: OniApi.QuickFixEntry[]): void {
const neovim: any = editorManager.activeEditor.neovim
neovim.quickFix.setqflist(entries, "Search Results")
neovim.command(":copen")
Expand Down
32 changes: 0 additions & 32 deletions browser/src/Plugins/Api/Search.ts

This file was deleted.

4 changes: 3 additions & 1 deletion browser/src/Plugins/Api/Ui.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import * as Oni from "oni-api"

import { getFileIcon } from "../../Services/FileIcon"
import { getInstance } from "../../Services/IconThemes"
import { Icon, IconProps, IconSize } from "../../UI/Icon"

export class Ui {
export class Ui implements Oni.Ui.IUi {
constructor(private _react: any) {}

public createIcon(props: IconProps): any {
Expand Down
26 changes: 26 additions & 0 deletions browser/src/Services/EditorManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import * as Oni from "oni-api"
import { Event, IDisposable, IEvent } from "oni-types"

import * as types from "vscode-languageserver-types"

import { remote } from "electron"

export class EditorManager implements Oni.EditorManager {
Expand Down Expand Up @@ -123,6 +125,14 @@ class AnyEditorProxy implements Oni.Editor {
return this._activeEditor.activeBuffer
}

public init(filesToOpen: string[]): void {
if (!this._activeEditor) {
return
}

this._activeEditor.init(filesToOpen)
}

public get neovim(): Oni.NeovimEditorCapability {
if (!this._activeEditor) {
return null
Expand Down Expand Up @@ -181,6 +191,22 @@ class AnyEditorProxy implements Oni.Editor {
return this._activeEditor.setTextOptions(options)
}

public render(): JSX.Element {
if (!this._activeEditor) {
return null
}

return this._activeEditor.render()
}

public setSelection(selectionRange: types.Range): Promise<void> {
if (!this._activeEditor) {
return null
}

return this._activeEditor.setSelection(selectionRange)
}

/**
* Internal methods
*/
Expand Down
13 changes: 6 additions & 7 deletions browser/src/Services/Menu/Filter/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
// import * as Oni from "oni-api"
import * as OniNext from "../../../Plugins/Api/Oni"
import * as Oni from "oni-api"

import { filter as fuseFilter } from "./FuseFilter"
import { filter as noFilter } from "./NoFilter"
import { filter as RegExFilter } from "./RegExFilter"
import { filter as vscodeFilter } from "./VSCodeFilter"

class Filters implements OniNext.IMenuFilters {
private _filters = new Map<string, OniNext.IMenuFilter>()
class Filters implements Oni.Menu.IMenuFilters {
private _filters = new Map<string, Oni.Menu.IMenuFilter>()

constructor() {
this._filters
Expand All @@ -18,11 +17,11 @@ class Filters implements OniNext.IMenuFilters {
.set("vscode", vscodeFilter)
}

public getDefault(): OniNext.IMenuFilter {
public getDefault(): Oni.Menu.IMenuFilter {
return this.getByName("default")
}

public getByName(name: string): OniNext.IMenuFilter {
public getByName(name: string): Oni.Menu.IMenuFilter {
return this._filters.has(name) ? this._filters.get(name) : this.getDefault()
}

Expand All @@ -31,6 +30,6 @@ class Filters implements OniNext.IMenuFilters {

const _instance = new Filters()

export function getInstance(owner: string): OniNext.IMenuFilters {
export function getInstance(owner: string): Oni.Menu.IMenuFilters {
return _instance
}
5 changes: 2 additions & 3 deletions browser/src/Services/Search/SearchPaneView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* Entry point for search-related features
*/

import * as Oni from "oni-api"
import * as React from "react"

import { IDisposable, IEvent } from "oni-types"
Expand All @@ -12,8 +13,6 @@ import { Workspace } from "./../Workspace"

export * from "./SearchProvider"

import * as SearchApi from "./../../Plugins/Api/Search" // TODO: Import oni-api instead

import styled from "styled-components"
import { SearchTextBox } from "./SearchTextBox"

Expand All @@ -31,7 +30,7 @@ export interface ISearchPaneViewProps {
onFocus: IEvent<void>
focusImmediately?: boolean

onSearchOptionsChanged: (opts: SearchApi.Options) => void
onSearchOptionsChanged: (opts: Oni.Search.Options) => void
}

export interface ISearchPaneViewState {
Expand Down
Loading

0 comments on commit c667874

Please sign in to comment.