How does vscode handle file path when executing a language server remotely - visual-studio-code

I'm running a remote language server on with vscode via an extension I'm developping. Both client and server have access to the code via a mounted shared folder. The issue is that this folder is located on different places on the client and on the server. (/home/username/myproject on the client, /mnt/shared_folder/myproject on the server)
My question is can I configure the vscode language client so that it translates the path from the local location to the remote location and vice-versa?
If I'm running the language client from a project with a workspace, can I configure it so that it send file URI relative to the workspace root rather than sending the absolute file path? Doing so I can simply reconstruct the file uri on the server side with the path of the shared folder mount point.
I heard of Middlewares or uriConverters but I'm not sure if this the purpose they are intended to be used for.
Thank you!

It's expected by the Language Server Protocol that the URIs to reference files are the same on both server and client side.
I think the best is to place on the server (which after all is the one that has the "clone" of the files and not the orginal ones) the logic to turn the client URIs "/home/username/myproject" into server URIs "/mnt/shared_folder/myproject" when trying to access the files. Accessing the file is part of your implementation, so it's not something that's part of the LSP API, and conversion should happen inside your implementation.

Related

where can i find the sap-ui-cachebuster-info.json file

I'm new to openui5 and i'm trying to understand how the openui5 cache buster works by reading through the documentation. I don't understand where I can find the generated sap-ui-cachebuster-info.json, am I supposed to be able to find it in my server (after build)?? or can I access it and read its content in some way? Am I supposed to see it in the list of files my browser receives in the network tab? Can I read it at all?
'sap-ui-cachebuster-info.json' file is generated on the server and usually located in the server root directory.
it's contains information about the version of the OpenUI5 library in use and the corresponding file names,
file content is not accessible to the client, it is read by the server when serving the library files. You can inspect it using browser development tools

Where is JupyterLite notebook located locally on Windows?

I am using jupyterlite which is JupyterLab distribution that runs entirely in the browser.
However, after clearing the browser history, the files are no more visible.
Please let me know how can I retrieve the *ipynb files from my windows machine.
I have already checked %AppData% and I don't see any *ipynb files.
The files are stored in well... the browser. Specifically in the IndexDB or localStorage. This means that the physical location on the disk will depend entirely on the browser that you use, rather than on the operating system, and will likely be inaccessible (for an average user) without decoding binary blobs.
For example, in Chrome you can check the path to the application data using chrome://version/ (under Profile Path) and in that directory there should be IndexedDB folder. Then you need to find a sub-folder depending on the domain in which you accessed JupyterLite, for example https_jupyterlite.readthedocs.io_0.indexeddb.leveldb, and there you will find a LevelDB database file with .ldb extension and a MANIFEST file (with the pointer to the current version in the CURRENT file. The details of how to extract the blobs are outside of scope for this answer, but have a look at How to access Google Chrome's IndexedDB/LevelDB files?.
However, you can use files from your file system directly in JupyterLite without worrying about in-browser technologies with the jupyterlab-filesystem-access extension which uses File System Access API however this API is not available on Firefox yet.
As noted by #Wayne all of this is still quite experimental (both as in "using the newest browser APIs" and "the team of developers is still figuring way forward, please help by providing kind feedback and contributing").

How can an extension obtain remote URL of file in currently connected remote server?

I'm writing an extension targeted for VSCode Remote environment.
In this setup, one extension (UI extension) runs in client and another (workspace extension) runs in remote server.
Now, here's a question - is there any way to generate an URL that can be used by UI extension to access file on the server?
I know I can use vscode-remote://ssh-remote+<hostname>/file/on/server syntax to express this type of remote URL, but the issue here is that I cannot find any way for extension to discover one. Using vscode.Uri.file() API only generates file: URL, which is meaningless for UI extension running in client environment.
Since vscode-remote: scheme is fixed and ssh-remote part can be extracted from vscode.env.remoteName variable, the last piece I need is the hostname that was used to open current VSCode Remote session. Is there any API/variable to discover this?

How To Sync Visual Studio Code Local Files With Mapped File Server?

Here is a simple description of my problem. If you need more information please inquire.
I am not seeing any way that you would be able to sync files from my local computer to another file server. Is there a way that this would be possible using Visual Studio Code and a mapped network drive file server?
https://marketplace.visualstudio.com/search?term=sync&target=VSCode&category=All%20categories&sortBy=Relevance
You can sync files to another machine via a plugin called 'ftp-sync' this will allow you to send files to a destination via the FTP or SFTP protocol. This plugin also allows automatic upload on save (which is awesome).
See Url: https://marketplace.visualstudio.com/items?itemName=lukasz-wronski.ftp-sync

Configuring SVN from PKCS12 files

When I started my current job, I was told to install the Subversive plugin for Eclipse, and given the URL of the repository to pull projects down from. My username and password were/are the same as my Active Directory credentials. So I installed the plugin, created a new repository (don't remember how, but it was easy to do), and have never looked back.
I am now being transitioned to a different team, who also use SVN for source control, but have it set up on a completely different server. I was asked to put in a ticket with the systems people to request access to this SVN server so I could access this other team's code.
The systems person assigned to my ticket just sent me the following email:
Attached are the pkcs12 files that are needed for your access to SVN on [svn.someserver.com]. You’ll need to put these files on your local systems and then add the following configuration to the ~/.subversion/servers file, for your SVN client. I just use the svn command on linux, so my home directory contains the .subversion directory and the servers file is in that directory. I will send your password separately.
Note: I have a Windows machine, so a part of my confusion may stem from the fact that the tech is on Linux and I am on Windows 7.
The attachment was a ZIP file that extracted two separate files:
foo.pem - a PEM file (?)
atannon - a "Personal Information Exchange" file (?); same as my username
The tech followed up with an email giving me my password in cleartext.
I checked my home directory and do not see a .subversion or .svn hidden directory anywhere. I am wondering if I need to follow his directions, but using my Program Files/eclipse/ directory instead.
So I have several questions here, all relating to how to configure SVN access in the manner prescribed by this systems tech:
Why was it so easy for me to get set up with the first SVN server when I started my job (just install the plugin and find the repo through Eclipse's Repo Explorer), and why does this server require so much configuration? I assume there are multiple methods for gaining access to a SVN server, and this 2nd team just uses a more lengthy setup method?
Can someone give me a super-quick rundown of what each of these files are and what purpose they serve? And why I need to install them locally on my system?
Where should I install these files? The tech wanted me to put them in my ~/.subversion directory, but I never created one because they only SVN client I ever installed was Subversive (through Eclipse)
I tried creating a new repository for [svn.someserver.com] in Eclipse. I supplied my username and the cleartext password the tech sent me and now it is giving me a dialog stating I need to "Provide authentication information", asking for SSL settings, and specifically a File and a Passphrase for the Client Certificate...would the files he sent me suffice for this? If so, perhaps the answer to my question above just requires knowing which files to point Eclipse to, and I don't have to install these files anywhere
I usually don't like to ask multiple questions inside of one giant question, but these are all so similatrly in nature, I didn't want to clutter SO with too many closely-related questionss.
Thanks in advance for any help here!
Why was it so easy for me to get set up with the first SVN server when I started my job (just install the plugin and find the repo through Eclipse's Repo Explorer), and why does this server require so much configuration?
First server have less paranoid (if have any at all) security settings, second was configured by Real Admin. Client-certificate authorization is most bullet-proof method
Can someone give me a super-quick rundown of what each of these files
are and what purpose they serve? And why I need to install them
locally on my system?
foo.pem is your Personal S/MIME certificate, which used for client authentication, which you have storelocally and link with repo's server. atannon (I think) contain password for certificate privatekey, which will be asked (TBT) at first operation with repo (or with all, if you don't cache password)
Where should I install these files? The tech wanted me to put them in my ~/.subversion directory
For Windows, $HOME-dir (~ in Tux-world) is C:\Users\<Your Username>\ (Win7) or c:\Documents and Settings\<Your Username>\ (WinXP). You have to find inside this tree servers file (and remember it's location for future). In case of my XP (with TortoiseSVN only, no any Eclipse)
Directory of c:\Documents and Settings\Badger\Application Data\Subversion
30.06.2010 09:02 <DIR> auth
02.01.2012 19:11 6 712 config
30.06.2010 09:02 4 400 README.txt
30.06.2010 09:02 7 832 servers
"Provide authentication information", asking for SSL settings, and specifically a File and a Passphrase for the Client Certificate...would the files he sent me suffice for this?
Yes, pem-file is certificate in PKCS12-format, atannon (I hope) - contain password for it