Skip to content

Commit

Permalink
Merge pull request #770 from microsoft/undoUpwardsWalking
Browse files Browse the repository at this point in the history
Revert a0d393a to avoid potentially loading from C:/
  • Loading branch information
DanielRosenwasser authored Feb 23, 2021
2 parents 70f8ede + b97a02d commit e45e059
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 64 deletions.
17 changes: 0 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,6 @@ This plugin can be configured to load an alternate version of TypeScript. This i
"typescript_tsdk": "<path to your folder>/node_modules/typescript/lib"
```

The path may be relative. In such case the plugin will look in the following locations in this order:

```
/foo/project_folder_1/<typescript_tsdk>
/foo/<typescript_tsdk>
/<typescript_tsdk>
/bar/project_folder_2/<typescript_tsdk>
/bar/<typescript_tsdk>
/baz/open_file_1_folder/<typescript_tsdk>
/baz/<typescript_tsdk>
/baz/open_file_2_folder/<typescript_tsdk>
```

In case of Yarn 2, just [install its editor SDK](https://yarnpkg.com/advanced/editor-sdks) using `yarn dlx @yarnpkg/pnpify --sdk base` and set `typescript_tsdk` to `.yarn/sdks/typescript/lib`.

**Note.** The plugin isn't reloaded when switching projects or updating settings at the moment, so you must restart Sublime Text when doing so, unfortunately. When in doubt, check the console for "Path of tsserver.js" and "Path of tsc.js", and see if they point where you expect them to point.

Installation
------------
If using [Package Control](https://packagecontrol.io/) for Sublime Text, simply install the `TypeScript` package.
Expand Down
60 changes: 13 additions & 47 deletions typescript/libs/editor_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,53 +52,19 @@ def initialize(self):
initialized during loading time
"""

# Default to and fall back to the bundled SDK
tsdk_location_default = os.path.join(PLUGIN_DIR, "tsserver")
tsdk_location = tsdk_location_default

is_tsdk_location_good = lambda x: (
os.path.isfile(os.path.join(x, "tsserver.js"))
and os.path.isfile(os.path.join(x, "tsc.js"))
)

active_window = sublime.active_window()
settings = active_window.active_view().settings()
typescript_tsdk_setting = settings.get("typescript_tsdk")
if typescript_tsdk_setting:
if os.path.isabs(typescript_tsdk_setting):
if is_tsdk_location_good(typescript_tsdk_setting):
tsdk_location = typescript_tsdk_setting
else:
def look_for_tsdk(x):
x_appended = os.path.join(x, typescript_tsdk_setting)
if is_tsdk_location_good(x_appended):
return x_appended
parent = os.path.dirname(x)
if parent == x:
return None # We have reached the root
return look_for_tsdk(parent)

# list(OrderedDict.fromkeys(x)) = deduped x, order preserved
folders = active_window.folders() + list(
collections.OrderedDict.fromkeys(
[
os.path.dirname(x.file_name())
for x in active_window.views()
if x.file_name() # It's None for unsaved files
]
)
)
for folder in folders:
x = look_for_tsdk(folder)
if x != None:
tsdk_location = x
break

proc_file = os.path.join(tsdk_location, "tsserver.js")
global_vars._tsc_path = os.path.join(tsdk_location, "tsc.js")

log.warn("Path of tsserver.js: " + proc_file)
log.warn("Path of tsc.js: " + get_tsc_path())
# retrieve the path to tsserver.js
# first see if user set the path to the file
settings = sublime.load_settings("Preferences.sublime-settings")
tsdk_location = settings.get("typescript_tsdk")
if tsdk_location:
proc_file = os.path.join(tsdk_location, "tsserver.js")
global_vars._tsc_path = os.path.join(tsdk_location, "tsc.js")
else:
# otherwise, get tsserver.js from package directory
proc_file = os.path.join(PLUGIN_DIR, "tsserver", "tsserver.js")
global_vars._tsc_path = os.path.join(PLUGIN_DIR, "tsserver", "tsc.js")
log.debug("Path of tsserver.js: " + proc_file)
log.debug("Path of tsc.js: " + get_tsc_path())

self.node_client = ServerClient(proc_file)
self.worker_client = WorkerClient(proc_file)
Expand Down

0 comments on commit e45e059

Please sign in to comment.