From edd17df3de3c840728cf7292ae3f59e919c44bab Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Thu, 20 Jul 2017 11:09:02 -0700 Subject: [PATCH] Normalize file watcher paths on Mac with NFC Fixes #29765 --- .../services/files/node/watcher/nsfw/nsfwWatcherService.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts b/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts index 218078a996d..c22b90f40b9 100644 --- a/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/nsfw/nsfwWatcherService.ts @@ -6,12 +6,14 @@ import * as glob from 'vs/base/common/glob'; import * as paths from 'vs/base/common/paths'; import * as path from 'path'; +import * as platform from "vs/base/common/platform"; import * as watcher from 'vs/workbench/services/files/node/watcher/common'; import * as nsfw from 'nsfw'; import { IWatcherService, IWatcherRequest } from 'vs/workbench/services/files/node/watcher/nsfw/watcher'; import { TPromise, ProgressCallback, TValueCallback } from 'vs/base/common/winjs.base'; import { ThrottledDelayer } from 'vs/base/common/async'; import { FileChangeType } from 'vs/platform/files/common/files'; +import { normalizeNFC } from "vs/base/common/strings"; const nsfwActionToRawChangeType: { [key: number]: number } = []; nsfwActionToRawChangeType[nsfw.actions.CREATED] = FileChangeType.ADDED; @@ -94,6 +96,11 @@ export class NsfwWatcherService implements IWatcherService { const events = undeliveredFileEvents; undeliveredFileEvents = []; + // Mac uses NFD unicode form on disk, but we want NFC + if (platform.isMacintosh) { + events.forEach(e => e.path = normalizeNFC(e.path)); + } + // Broadcast to clients normalized const res = watcher.normalize(events); this._progressCallback(res); -- GitLab