|
2 | 2 | * Copyright (C) Microsoft Corporation. All rights reserved. |
3 | 3 | *--------------------------------------------------------*/ |
4 | 4 |
|
5 | | -import vscode = require("vscode"); |
6 | 5 | import { IFeature } from "../feature"; |
7 | | -import { TextDocumentChangeEvent, workspace, Disposable, Position } from "vscode"; |
| 6 | +import { TextDocumentChangeEvent, workspace, Disposable, Position, window, Range, EndOfLine } from "vscode"; |
8 | 7 | import { LanguageClient, RequestType } from "vscode-languageclient"; |
9 | 8 |
|
10 | 9 | export namespace CommentHelpRequest { |
@@ -53,6 +52,7 @@ export class HelpCompletionFeature implements IFeature { |
53 | 52 | } |
54 | 53 |
|
55 | 54 | onEvent(changeEvent: TextDocumentChangeEvent): void { |
| 55 | + // todo split this method into logical components |
56 | 56 | let text = changeEvent.contentChanges[0].text; |
57 | 57 | switch (this.searchState) { |
58 | 58 | case SearchState.Searching: |
@@ -103,16 +103,24 @@ export class HelpCompletionFeature implements IFeature { |
103 | 103 | return; |
104 | 104 | } |
105 | 105 |
|
106 | | - // todo get the eol character programmatically or let the server return one whole string |
107 | 106 | // todo add indentation level to the help content |
108 | | - let editor = vscode.window.activeTextEditor; |
109 | | - let replaceRange = new vscode.Range(triggerStartPos.translate(0, -1), triggerStartPos.translate(0, 1)); |
| 107 | + let editor = window.activeTextEditor; |
| 108 | + let replaceRange = new Range(triggerStartPos.translate(0, -1), triggerStartPos.translate(0, 1)); |
110 | 109 |
|
111 | 110 | // Trim the last empty line and join the strings. |
112 | | - let text = content.slice(0, -1).join("\r\n"); |
| 111 | + let text = content.slice(0, -1).join(this.getEOL(doc.eol)); |
113 | 112 | editor.edit(editBuilder => editBuilder.replace(replaceRange, text)); |
114 | 113 | }); |
115 | 114 | } |
116 | 115 | } |
117 | 116 | } |
| 117 | + |
| 118 | + private getEOL(eol: EndOfLine): string { |
| 119 | + // there are only two type of EndOfLine types. |
| 120 | + if (eol === EndOfLine.CRLF) { |
| 121 | + return "\r\n"; |
| 122 | + } |
| 123 | + |
| 124 | + return "\n"; |
| 125 | + } |
118 | 126 | } |
0 commit comments