88import { Disposable , Uri , workspace } from 'vscode' ;
99import { OmniSharpServer } from '../omnisharp/server' ;
1010import * as serverUtils from '../omnisharp/utils' ;
11+ import { FileChangeType } from '../omnisharp/protocol' ;
1112
1213function forwardDocumentChanges ( server : OmniSharpServer ) : Disposable {
1314
@@ -31,25 +32,30 @@ function forwardDocumentChanges(server: OmniSharpServer): Disposable {
3132
3233function forwardFileChanges ( server : OmniSharpServer ) : Disposable {
3334
34- function onFileSystemEvent ( uri : Uri ) : void {
35- if ( ! server . isRunning ( ) ) {
36- return ;
37- }
38-
39- let req = { FileName : uri . fsPath } ;
40-
41- serverUtils . filesChanged ( server , [ req ] ) . catch ( err => {
42- console . warn ( `[o] failed to forward file change event for ${ uri . fsPath } ` , err ) ;
43- return err ;
44- } ) ;
35+ function onFileSystemEvent ( changeType : FileChangeType ) : ( Uri ) => void {
36+ return function ( uri : Uri )
37+ {
38+ if ( ! server . isRunning ( ) ) {
39+ return ;
40+ }
41+
42+ let req = { FileName : uri . fsPath , changeType} ;
43+
44+ serverUtils . filesChanged ( server , [ req ] ) . catch ( err => {
45+ console . warn ( `[o] failed to forward file change event for ${ uri . fsPath } ` , err ) ;
46+ return err ;
47+ } ) ;
48+ } ;
4549 }
4650
4751 const watcher = workspace . createFileSystemWatcher ( '**/*.*' ) ;
48- let d1 = watcher . onDidCreate ( onFileSystemEvent ) ;
49- let d2 = watcher . onDidChange ( onFileSystemEvent ) ;
50- let d3 = watcher . onDidDelete ( onFileSystemEvent ) ;
52+ let d1 = watcher . onDidCreate ( onFileSystemEvent ( FileChangeType . Create ) ) ;
53+ let d2 = watcher . onDidDelete ( onFileSystemEvent ( FileChangeType . Delete ) ) ;
54+
55+ // In theory we don't need to subscribe to "change" notifications
56+ // because we already get them through the buffer update request
5157
52- return Disposable . from ( watcher , d1 , d2 , d3 ) ;
58+ return Disposable . from ( watcher , d1 , d2 ) ;
5359}
5460
5561export default function forwardChanges ( server : OmniSharpServer ) : Disposable {
0 commit comments