Release 5 Final Update

Release 5 Another Update

In this update, I’m just going to provide an update on Release 5. Last time, I mentioned that my Join Lines PR was failing. I made a couple of minor changes to VSCode like having it grab the first non white space character and making minor selections changes. It now passes VSCode tests.

Here is a couple of gifs showing how Join Lines now works:

JoinLines-1Cursor-3Select

JoinLines-3Cursor

JoinLines-Merge-Merge

I plan on continuing my work in open source and hopefully will have a guide soon detailing how to contribute to VSCode.

Release 6

This week I have a ton of updates to give about my previous releases. First of all, Release 4 managed to get merged in. Also, after a suggestion from Alex I commented on Release 3 saying that my change might not have made it in and he should check insiders. Additionally, this week I got to mentor a fellow student. The initial issue he was working on was in my opinion a harder one and I directed him to this issue. I pointed him to findWidget.ts and I helped him land the PR. In addition, I got a update for this issue were someone recommend using shopt -s globstar to fix the issue.

Now for release 5, I asked a VSCode maintainer if Join Lines merge by 2 lines was intentional. He said that it wasn’t and said I could ask rebornix for advice. With that information I decided to push my PR that fixed the issue of Join Lines.

For release 6, I decided to change course to this bug. It is a bug where VSCode doesn’t copy blank lines. I made a PR that fixed the editor.emptySelectionClipboard so that it now is able to properly copy.

Open Source Adventures

In this release, I’ll go over my open source adventures over the last year. I was first introduced to open source during my OSD600 class where we had to make contributions to open source projects. My first real PR was to VSCode and it was a great first experience for me.

After OSD600, I made this blog post detailing how I want to grow and continue contributing to open source projects. I made a goal of making 40 PRs in total before OSD700 started. I had 12 PRs after completing OSD600. During the following months, I made contributions to multiple repository which included Yarn, VSCode and Typescript. The highlight for me was my PR to W3C CSS spec and another to WHATWG HTML spec. It was great that I got to make a change(albeit a small one) to HTML and CSS. However, I ran into issues in the fall semester which prevented me from completing my goal.

In the end, I submitted 34 PRs by December 2018. I was disappointed but at the same time I got a chance to improve my knowledge of VSCode and have a huge portfolio of work to showcase.

Release 5 Update

This week I started working on this issue for VSCode[https://github.com/Microsoft/vscode/issues/64655]. It was to update Join Lines to interact with multi cursor better. Also, I have a couple of updates for previous releases. My release 4 PR got reassigned to another VSCode member. In addition, someone commented on my release 3 saying my fix didn’t work for him. I intent to look at his concern and figure out what is wrong.

When first starting, I found a place reference to start looking was here.It was a VSCode extension that had the desirable results I wanted to have.

While doing some debugging, I realized what the problem was with Join Line mutlicusor. What VSCode does is merge the line below and repeats this process. That action looks like this:
JoinLines-TheIssue

It is arbitrarily joins 2 lines without considering other selections.

My version will join multiple lines and does not have the 2 line join problem:
JoinLines-Kinda

I still need to fix a couple of issue in my code but I believe my version works better.

It seems like I will need more time to fix this issue. Hopefully next week, I will finish this issue.

Release 5

For my release 5, I decided to go and work with multiple cursors again. I found this bug that had to do with how VSCode cannot handle multiple cursors with the command. The result of join lines would not produce the desired result.

With my previous knowledge, I am able to start investigating sooner. Going to line 659 in linesOperations.ts shows where the code for join lines exists.

For next week, I’ll continue working on this bug.

Release 4 Update

This week I was working on my release 4. For a recap, I initially looked into doing this PR but switched over to this PR. But while looking into the bug, I found another issue that got my attention. While looking at issues, I found this issue which had to do with how regex validation should be applied to the terminal find widget. Using the advice given, I was able to get the terminal find widget working. All I had to do was add this part of code to simple terminal widget:


validation: (value: string): InputBoxMessage | null => {
	if (value.length === 0) {
		return null;
	}
	if (!this._findInput.getRegex()) {
		return null;
	}
	try {
		/* tslint:disable:no-unused-expression */
		new RegExp(value);
		/* tslint:enable:no-unused-expression */
		return null;
	} catch (e) {
		return { content: e.message };
	}
}

It is currently waiting for review.

For next week, I need to do more research on Typescript and working on more VSCode.

Release 4 Update

This week I got a response back from my Release 3. It was approved and merged in.

Also, for release 4 I decided to choose this bug instead of the other one I mentioned in my previous blog post. It has to do with how the autoCloseBefore setting does not work properly. I narrowed down what line of code causes this problem:


if (!isBeforeCloseBrace && !shouldAutoCloseBefore(characterAfter)) {
	return false;
}

shouldAutoCloseBefore is returning false when it should be returning true.

The line of code returns this: ;:.,=}])> \n\t instead of this: ;.

The next step I need to take is figuring out how VSCode reads this setting.