From c340b3634c93a8dbf1c40cf1d7f82f8101fe9200 Mon Sep 17 00:00:00 2001 From: Anthony Guo Date: Mon, 10 Aug 2015 16:40:09 -0700 Subject: [PATCH] Added typings for the CodeMirror showhint addon --- codemirror/showhint-tests.ts | 33 +++++++++++++++++++ codemirror/showhint.d.ts | 62 ++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 codemirror/showhint-tests.ts create mode 100644 codemirror/showhint.d.ts diff --git a/codemirror/showhint-tests.ts b/codemirror/showhint-tests.ts new file mode 100644 index 000000000..b7378e0d6 --- /dev/null +++ b/codemirror/showhint-tests.ts @@ -0,0 +1,33 @@ +/// +/// +var doc = new CodeMirror.Doc('text'); +var pos = new CodeMirror.Pos(2, 3); +CodeMirror.showHint(doc); +CodeMirror.showHint(doc, function (cm) { + return { + from: pos, + list: ["one", "two"], + to: pos + }; +}); +CodeMirror.showHint(doc, function (cm) { + return { + from: pos, + list: [ + { + text: "disp1", + render: function (el, self, data) { + ; + } + }, + { + className: "class2", + displayText: "disp2", + from: pos, + to: pos, + text: "sometext" + } + ], + to: pos + }; +}); diff --git a/codemirror/showhint.d.ts b/codemirror/showhint.d.ts new file mode 100644 index 000000000..340871db4 --- /dev/null +++ b/codemirror/showhint.d.ts @@ -0,0 +1,62 @@ +// Type definitions for CodeMirror +// Project: https://github.com/marijnh/CodeMirror +// Definitions by: jacqt +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module CodeMirror { + var commands : any; + + /** Provides a framework for showing autocompletion hints. Defines editor.showHint, which takes an optional + options object, and pops up a widget that allows the user to select a completion. Finding hints is done with + a hinting functions (the hint option), which is a function that take an editor instance and options object, + and return a {list, from, to} object, where list is an array of strings or objects (the completions), and + from and to give the start and end of the token that is being completed as {line, ch} objects. An optional + selectedHint property (an integer) can be added to the completion object to control the initially selected hint. */ + function showHint (cm: CodeMirror.Doc, hinter?: (doc : CodeMirror.Doc) => Hints, options?: IShowHintOptions) : void; + + + interface Hints { + from: Position; + to: Position; + list: Hint[] | string[]; + } + + /** Interface used by showHint.js Codemirror add-on + When completions aren't simple strings, they should be objects with the following properties: */ + interface Hint { + text: string; + className?: string; + displayText?: string; + from?: Position; + render?: (element: any, self: any, data: any) => void; + to?: Position; + } + + interface Editor { + /** An extension of the existing CodeMirror typings for the Editor.on("keyup", func) syntax */ + on(eventName: string, handler: (doc: CodeMirror.Doc, event : any ) => void ): void; + off(eventName: string, handler: (doc: CodeMirror.Doc, event : any) => void ): void; + } + + /** Extend CodeMirror.Doc with a state object, so that the Doc.state.completionActive property is reachable*/ + interface Doc { + state: any; + showHint: (options: IShowHintOptions) => void; + } + + interface IShowHintOptions { + completeSingle: boolean; + hint: (doc : CodeMirror.Doc) => Hints; + } + + /** The Handle used to interact with the autocomplete dialog box.*/ + interface Handle { + moveFocus(n: number, avoidWrap: boolean): void; + setFocus(n: number): void; + menuSize(): number; + length: number; + close(): void; + pick(): void; + data: any; + } +}