Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert a0d393a to avoid potentially loading from C:/ #770

Merged
merged 1 commit into from Feb 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
17 changes: 0 additions & 17 deletions README.md
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
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