Question:
VSCode Version:0.10.13 alpha OS Version:Windows 10 Steps to Reproduce: an variable to your ex. ${env.PATH} "command": "echo", "isShellCommand": true, "args": ["${env.PATH}"], the task. This will expand correctly on Linux and OS X but not Windows since the expansion is case sensitive and PATH on Windows is "Path". Env Var expansion shouldn't be case sensitive so that the same task can run on all platform. This bug was requested by in vscode-docs issue
this is done by the resolver service. IMO env variables on all OSes are case insensitive. Should we address this.
Let's keep it open and if some user is passionate he can tackle it
On linux and macOS environment variables are case sensitive, so "Path" and "PATH" are different variables on linux and macOS (but not on Windows). So your statement from above "IMO env variables on all OSes are case insensitive." is not correct, right? so you are asking for making env var lookup case insensitive on Windows only, correct?
I thought they are always case insensitive. So it should be case insensitive then on Windows only
I'm actually about done with a change for this if you want to take a look.
thanks, I will review the PR.
did you want me to squash it or anything (fixed a broken test because I forgot the existing code returned an empty string for missing environment variables)? Different projects have different requirements and I didn't see anything about squashing in your contrib docs.
no need to squash, I will add the comments to the PR directly if something is needed. Thanks

let service = new ConfigurationResolverService(envVariables, new TestEditorService(), TestEnvironmentService, configurationService, mockCommandService); if (platform.isWindows) { <del> assert.strictEqual(service.resolve(workspace, '${config:editor.fontFamily} ${config:terminal.integrated.fontFamily} ${workspaceFolder} - ${workspaceFolder} ${env:key1} - ${env:key2}'), 'foo bar VSCodeworkspaceLocation - VSCodeworkspaceLocation Value for Key1 - Value for Key2'); </del> <ins> assert.strictEqual(service.resolve(workspace, '${config:editor.fontFamily} ${config:terminal.integrated.fontFamily} ${workspaceFolder} - ${workspaceFolder} ${env:key1} - ${env:key2}'), 'foo bar VSCodeworkspaceLocation - VSCodeworkspaceLocation Value for key1 - Value for key2'); </ins> } else { <del> assert.strictEqual(service.resolve(workspace, '${config:editor.fontFamily} ${config:terminal.integrated.fontFamily} ${workspaceFolder} - ${workspaceFolder} ${env:key1} - ${env:key2}'), 'foo bar /VSCode/workspaceLocation - /VSCode/workspaceLocation Value for Key1 - Value for Key2'); </del> <ins> assert.strictEqual(service.resolve(workspace, '${config:editor.fontFamily} ${config:terminal.integrated.fontFamily} ${workspaceFolder} - ${workspaceFolder} ${env:key1} - ${env:key2}'), 'foo bar /VSCode/workspaceLocation - /VSCode/workspaceLocation Value for key1 - Value for key2'); </ins> } });


Question:
VSCode Version: 1.0.0 OS Version: OSX 10.11.3 I noticed that we can set to a keybinding. Which creates a nice input field in the sidebar to create the directory at the current selected position. ! But there is no possibility to do this for a file. Yes you can bind but it does not do the same thing. It just creates a new and when pressing <kbdcmd</kbd+ <kbds</kbdyou have to choose the destination in a picker. So, is it possible to add something for a new file as well? It would really improve my speed because I don't have to touch my mouse anymore to create a new named file in a specific directory.
sounds like a good example for a PR?
Yes I looked into it but to be honest, I have to clue where to start :). So if you can point me in the right direction, I would be very happy to do one :).
I would start by fulltext search for the action id () and that brings you here: From there you can get a feeling how this global action works and maybe add the new one. You will also see the one on top for creating an untitled file (which is not what you want). When you find the references of that action you will see where it is being registered to the system:
Alright, awesome. Thank you very much Will see what I can do :).

import {ActionItem, BaseActionItem, Separator} from 'vs/base/browser/ui/actionbar/actionbar'; import {Scope, IActionBarRegistry, Extensions as ActionBarExtensions, ActionBarContributor} from 'vs/workbench/browser/actionBarRegistry'; import {IEditorInputActionContext, IEditorInputAction, EditorInputActionContributor} from 'vs/workbench/browser/parts/editor/baseEditor'; <del> import {AddToWorkingFiles, FocusWorkingFiles, FocusFilesExplorer, OpenPreviousWorkingFile, OpenNextWorkingFile, CloseAllFilesAction, CloseFileAction, CloseOtherFilesAction, GlobalCompareResourcesAction, GlobalNewFolderAction, RevertFileAction, SaveFilesAction, SaveAllAction, SaveFileAction, keybindingForAction, MoveFileToTrashAction, TriggerRenameFileAction, PasteFileAction, CopyFileAction, SelectResourceForCompareAction, CompareResourcesAction, NewFolderAction, NewFileAction, OpenToSideAction, ShowActiveFileInExplorer} from 'vs/workbench/parts/files/browser/fileActions'; </del> <ins> import {AddToWorkingFiles, FocusWorkingFiles, FocusFilesExplorer, OpenPreviousWorkingFile, OpenNextWorkingFile, CloseAllFilesAction, CloseFileAction, CloseOtherFilesAction, GlobalCompareResourcesAction, GlobalNewFileAction, GlobalNewFolderAction, RevertFileAction, SaveFilesAction, SaveAllAction, SaveFileAction, keybindingForAction, MoveFileToTrashAction, TriggerRenameFileAction, PasteFileAction, CopyFileAction, SelectResourceForCompareAction, CompareResourcesAction, NewFolderAction, NewFileAction, OpenToSideAction, ShowActiveFileInExplorer} from 'vs/workbench/parts/files/browser/fileActions'; </ins> import {RevertLocalChangesAction, AcceptLocalChangesAction, ConflictResolutionDiffEditorInput} from 'vs/workbench/parts/files/browser/saveErrorHandler'; import {SyncActionDescriptor} from 'vs/platform/actions/common/actions'; import {IWorkbenchActionRegistry, Extensions as ActionExtensions} from 'vs/workbench/common/actionRegistry';


Question:
VSCode Version: 1.0.0 OS Version: OSX 10.11.3 I noticed that we can set to a keybinding. Which creates a nice input field in the sidebar to create the directory at the current selected position. ! But there is no possibility to do this for a file. Yes you can bind but it does not do the same thing. It just creates a new and when pressing <kbdcmd</kbd+ <kbds</kbdyou have to choose the destination in a picker. So, is it possible to add something for a new file as well? It would really improve my speed because I don't have to touch my mouse anymore to create a new named file in a specific directory.
sounds like a good example for a PR?
Yes I looked into it but to be honest, I have to clue where to start :). So if you can point me in the right direction, I would be very happy to do one :).
I would start by fulltext search for the action id () and that brings you here: From there you can get a feeling how this global action works and maybe add the new one. You will also see the one on top for creating an untitled file (which is not what you want). When you find the references of that action you will see where it is being registered to the system:
Alright, awesome. Thank you very much Will see what I can do :).

registry.registerWorkbenchAction(new SyncActionDescriptor(SaveAllAction, SaveAllAction.ID, SaveAllAction.LABEL), category, ['save', 'all', 'files']); registry.registerWorkbenchAction(new SyncActionDescriptor(SaveFilesAction, SaveFilesAction.ID, null /* only for programmatic trigger */)); registry.registerWorkbenchAction(new SyncActionDescriptor(RevertFileAction, RevertFileAction.ID, RevertFileAction.LABEL), category, ['revert', 'file']); <ins> registry.registerWorkbenchAction(new SyncActionDescriptor(GlobalNewFileAction, GlobalNewFileAction.ID, GlobalNewFileAction.LABEL), category, ['new', 'file']); </ins> registry.registerWorkbenchAction(new SyncActionDescriptor(GlobalNewFolderAction, GlobalNewFolderAction.ID, GlobalNewFolderAction.LABEL), category, ['new', 'folder']); registry.registerWorkbenchAction(new SyncActionDescriptor(GlobalCompareResourcesAction, GlobalCompareResourcesAction.ID, GlobalCompareResourcesAction.LABEL), category, ['compare', 'files']); registry.registerWorkbenchAction(new SyncActionDescriptor(CloseFileAction, CloseFileAction.ID, CloseFileAction.LABEL, { primary: KeyMod.chord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyCode.KEY_W) }), category, ['close', 'file']);


Question:
VSCode Version: 1.0.0 OS Version: OSX 10.11.3 I noticed that we can set to a keybinding. Which creates a nice input field in the sidebar to create the directory at the current selected position. ! But there is no possibility to do this for a file. Yes you can bind but it does not do the same thing. It just creates a new and when pressing <kbdcmd</kbd+ <kbds</kbdyou have to choose the destination in a picker. So, is it possible to add something for a new file as well? It would really improve my speed because I don't have to touch my mouse anymore to create a new named file in a specific directory.
sounds like a good example for a PR?
Yes I looked into it but to be honest, I have to clue where to start :). So if you can point me in the right direction, I would be very happy to do one :).
I would start by fulltext search for the action id () and that brings you here: From there you can get a feeling how this global action works and maybe add the new one. You will also see the one on top for creating an untitled file (which is not what you want). When you find the references of that action you will see where it is being registered to the system:
Alright, awesome. Thank you very much Will see what I can do :).

} /* Create new file from anywhere: Open untitled */ <del> export class GlobalNewFileAction extends Action { </del> <ins> export class GlobalNewUntitledFileAction extends Action { </ins> public static ID = 'workbench.action.files.newUntitledFile'; <del> public static LABEL = nls.localize('newFile', "New File"); </del> <ins> public static LABEL = nls.localize('newUntitledFile', "New Untitled File"); </ins> constructor( id: string,


Question:
VSCode Version: 1.0.0 OS Version: OSX 10.11.3 I noticed that we can set to a keybinding. Which creates a nice input field in the sidebar to create the directory at the current selected position. ! But there is no possibility to do this for a file. Yes you can bind but it does not do the same thing. It just creates a new and when pressing <kbdcmd</kbd+ <kbds</kbdyou have to choose the destination in a picker. So, is it possible to add something for a new file as well? It would really improve my speed because I don't have to touch my mouse anymore to create a new named file in a specific directory.
sounds like a good example for a PR?
Yes I looked into it but to be honest, I have to clue where to start :). So if you can point me in the right direction, I would be very happy to do one :).
I would start by fulltext search for the action id () and that brings you here: From there you can get a feeling how this global action works and maybe add the new one. You will also see the one on top for creating an untitled file (which is not what you want). When you find the references of that action you will see where it is being registered to the system:
Alright, awesome. Thank you very much Will see what I can do :).

} } <ins> /* Create new file from anywhere */ export class GlobalNewFileAction extends BaseGlobalNewAction { public static ID = 'workbench.action.files.newFile'; public static LABEL = nls.localize('newFile', "New File"); protected getAction(): IConstructorSignature2<ITree, IFileStat, Action> { return NewFileAction; } } </ins> /* Create new folder from anywhere */ export class GlobalNewFolderAction extends BaseGlobalNewAction { public static ID = 'workbench.action.files.newFolder';


Question:
VSCode Version: 1.0.0 OS Version: OSX 10.11.3 I noticed that we can set to a keybinding. Which creates a nice input field in the sidebar to create the directory at the current selected position. ! But there is no possibility to do this for a file. Yes you can bind but it does not do the same thing. It just creates a new and when pressing <kbdcmd</kbd+ <kbds</kbdyou have to choose the destination in a picker. So, is it possible to add something for a new file as well? It would really improve my speed because I don't have to touch my mouse anymore to create a new named file in a specific directory.
sounds like a good example for a PR?
Yes I looked into it but to be honest, I have to clue where to start :). So if you can point me in the right direction, I would be very happy to do one :).
I would start by fulltext search for the action id () and that brings you here: From there you can get a feeling how this global action works and maybe add the new one. You will also see the one on top for creating an untitled file (which is not what you want). When you find the references of that action you will see where it is being registered to the system:
Alright, awesome. Thank you very much Will see what I can do :).

export function keybindingForAction(id: string): Keybinding { switch (id) { <del> case GlobalNewFileAction.ID: </del> <ins> case GlobalNewUntitledFileAction.ID: </ins> return new Keybinding(KeyMod.CtrlCmd | KeyCode.KEY_N); case TriggerRenameFileAction.ID: return new Keybinding(isMacintosh ? KeyCode.Enter : KeyCode.F2);


Question:
VSCode Version: 1.0.0 OS Version: OSX 10.11.3 I noticed that we can set to a keybinding. Which creates a nice input field in the sidebar to create the directory at the current selected position. ! But there is no possibility to do this for a file. Yes you can bind but it does not do the same thing. It just creates a new and when pressing <kbdcmd</kbd+ <kbds</kbdyou have to choose the destination in a picker. So, is it possible to add something for a new file as well? It would really improve my speed because I don't have to touch my mouse anymore to create a new named file in a specific directory.
sounds like a good example for a PR?
Yes I looked into it but to be honest, I have to clue where to start :). So if you can point me in the right direction, I would be very happy to do one :).
I would start by fulltext search for the action id () and that brings you here: From there you can get a feeling how this global action works and maybe add the new one. You will also see the one on top for creating an untitled file (which is not what you want). When you find the references of that action you will see where it is being registered to the system:
Alright, awesome. Thank you very much Will see what I can do :).

import env = require('vs/base/common/platform'); import {ITextFileService, asFileResource} from 'vs/workbench/parts/files/common/files'; import {IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions} from 'vs/workbench/common/contributions'; <del> import {GlobalNewFileAction, SaveFileAsAction} from 'vs/workbench/parts/files/browser/fileActions'; </del> <ins> import {GlobalNewUntitledFileAction, SaveFileAsAction} from 'vs/workbench/parts/files/browser/fileActions'; </ins> import {FileTracker} from 'vs/workbench/parts/files/electron-browser/electronFileTracker'; import {TextFileService} from 'vs/workbench/parts/files/electron-browser/textFileServices'; import {OpenFolderAction, OPEN_FOLDER_ID, OPEN_FOLDER_LABEL, OpenFileAction, OPEN_FILE_ID, OPEN_FILE_LABEL, OpenFileFolderAction, OPEN_FILE_FOLDER_ID, OPEN_FILE_FOLDER_LABEL, ShowOpenedFileInNewWindow, GlobalRevealInOSAction, GlobalCopyPathAction, CopyPathAction, RevealInOSAction} from 'vs/workbench/parts/files/electron-browser/electronFileActions';


Question:
VSCode Version: 1.0.0 OS Version: OSX 10.11.3 I noticed that we can set to a keybinding. Which creates a nice input field in the sidebar to create the directory at the current selected position. ! But there is no possibility to do this for a file. Yes you can bind but it does not do the same thing. It just creates a new and when pressing <kbdcmd</kbd+ <kbds</kbdyou have to choose the destination in a picker. So, is it possible to add something for a new file as well? It would really improve my speed because I don't have to touch my mouse anymore to create a new named file in a specific directory.
sounds like a good example for a PR?
Yes I looked into it but to be honest, I have to clue where to start :). So if you can point me in the right direction, I would be very happy to do one :).
I would start by fulltext search for the action id () and that brings you here: From there you can get a feeling how this global action works and maybe add the new one. You will also see the one on top for creating an untitled file (which is not what you want). When you find the references of that action you will see where it is being registered to the system:
Alright, awesome. Thank you very much Will see what I can do :).

let workbenchActionsRegistry = <IWorkbenchActionRegistry>Registry.as(ActionExtensions.WorkbenchActions); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(SaveFileAsAction, SaveFileAsAction.ID, SaveFileAsAction.LABEL, { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_S }), category, ['save', 'as']); <del> workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(GlobalNewFileAction, GlobalNewFileAction.ID, GlobalNewFileAction.LABEL, { primary: KeyMod.CtrlCmd | KeyCode.KEY_N }), category, ['new', 'file']); </del> <ins> workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(GlobalNewUntitledFileAction, GlobalNewUntitledFileAction.ID, GlobalNewUntitledFileAction.LABEL, { primary: KeyMod.CtrlCmd | KeyCode.KEY_N }), category, ['new', 'untitled', 'file']); </ins> workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(GlobalCopyPathAction, GlobalCopyPathAction.ID, GlobalCopyPathAction.LABEL, { primary: KeyMod.chord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyCode.KEY_P) }), category, ['copy', 'path']); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(GlobalRevealInOSAction, GlobalRevealInOSAction.ID, GlobalRevealInOSAction.LABEL, { primary: KeyMod.chord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyCode.KEY_R) }), category, ['reveal', 'file']);


Question:
VSCode Version: 1.0 OS Version: Ubuntu 16.04 Ubuntu 16.04 (Xenial Xerus) no longer carries , this causes font to be rendered with if Linux desktop user installed MS core fonts (more than likely). Given Ubuntu still carries open source fonts such as or , which are better for LCD than , consider: Adding those to the font list Remove from font list - let the OS decide
I see uses of this font in editor, git and debug land. Starting with editor.
I bumped into this today, after updating to insiders 1.2.0. I'm on Ubuntu 16.10. For now, workaround by manually overriding the font family: Either way, I see no sense in giving "Droid Sans" as a first option, even on Linux. If the user has the MS fonts installed, they should be used.
I also noticed this. I installed "fonts-noto" package from the repositories because some people say Noto font family is similar to Droid.
I solved this by simply installing the font from
this is somewhat related to which has similar issues for the UI font. The real fix here is to lean on Chromium to pull in the system monospace font from the OS if it's available (a system-ui font was proposed in ). Is there any reason just is not used? Also why is Courier New there at all?
for no good reason except version-to-version stability.
I only just became aware of this but it's a pretty big issue imo. If I remove my on Ubuntu 16.10 it falls back to Courier New which really affects readability because of its weight and the fact it's a serif font. If this was what I saw as my first impression I'd be kind of turned off by the default font. Hack: ! Courier New: ! Sure it can always be changed but we can't rely on people knowing or bothering to do that. Also on this PC seems to fall back on Courier New.
My honest suggestion is to ship VSCode with a cool font such as Hack or Inconsolata and have one of those be the default. IMHO too many folks are left with ugly monospace fonts.
I just read your comment but I'll post this anyway since we agree :stuckouttongue: have you considered bundling a standard monospace font that looks good on all platforms with the distributable? The developer of reached out to me a couple of months ago and asked if we'd be interested in doing that, gzipped the 4 font variants are only ~700kb.
Yeah, I've mentioned this to and a couple of times already. Not sure about the legal implications, but IMHO that would be a smart move for us.
Here's the expression of interest I mentioned from the developer of Hack
Is there a reason why couldn't be that alias for the system monospace font?
This now also affects Debian Stretch. After upgrading the font is displayed because the fonts-droid is not in the repositories anymore. Debian maintainers switching from to . I have followed the recommendations and have installed and replaced with in which in my opinion looks very good. Setting the default to on Debian results in a very ugly result. I changed the default font in Gnome Tweak Tool and in fontconfig to . as you can see it is not taken into account: ! Until a font is bundled with VSCode, could we add in the for Linux, and perhaps add as a suggested package in the Debian package? is in the section in Debian repositories. Unfortunately it is in the section in the Ubuntu repositories, thus users must activate it before being able to install the package, this is why I suggest to as a package instead of a recommends/depends.
Isn't this a Debian bug then? AFAIK you can't change the font in gnome-tweak-tool. It will only set a dconf value, not the alias which is configured via fontconfig.
Note that I have also defined as the font in fontconfig by defining an alias in: As you can see NotoMono is returned as the maching font for . And I confirm that the monospace font is now rendered using on other applications running on my system, except Visual Studio Code where it seems to default to . I don't think there is a bug in Debian because other application seem to behave correctly. I agree that the correct and clean solution would be to define as the only font listed in . Although: In my opinion on many systems the default monospace font is ugly. If we really want to use as a default then we need to find out why the font is rendered as on some systems when is defined as another font.
Could be a Chromium/Electron bug then. Can you try in Chromium/Chrome? IMHO that's a bug of those systems and will never be fixed, if applications work around it.
I have interesting results. I have crafted the following html page: And got the following results. ! I noticed that adding quotes around the monospace word would yield different results. I have changed to in VSCode and it is now rendered correctly: !
Try Ubuntu Mono. Monaco is good one but personally, I like Ubuntu Mono. !
Hi, everybody! Replace 'Droid sans mono' by 'Ubuntu mono' looks good to me. I didn't download any font pack.
there was another issue a while ago discouraging the use of Ubuntu Mono as then it's picked up as the default on non-Ubuntu Linux distros . Ideally we would pick up whatever the display manager configures as the default monospace font, but monospace often doesn't give us that.

const DEFAULT_WINDOWS_FONT_FAMILY = 'Consolas, 'Courier New', monospace'; const DEFAULT_MAC_FONT_FAMILY = 'Menlo, Monaco, 'Courier New', monospace'; <del> const DEFAULT_LINUX_FONT_FAMILY = ''Droid Sans Mono', 'Courier New', monospace, 'Droid Sans Fallback''; </del> <ins> const DEFAULT_LINUX_FONT_FAMILY = ''Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback''; </ins> /** * @internal


Question:
VSCode Version: 1.2.1 OS Version: Windows 10.0. Steps to Reproduce: editing python document typing in a comment a contraction such as isn't that the editor creates a closing apostrophe that is inappropriate in this context.
Not sure if this is inside the extension or core. But I have seen issues with wrong auto closing often in selfhost too.
Well... this has been there since day 1. Does anyone know how JavaScript solves this, since it's solved there?

["(", ")"] ], "autoClosingPairs": [ <del> ["{", "}"], ["[", "]"], ["(", ")"], [""", """], ["'", "'"] </del> <ins> { "open": "{", "close": "}" }, { "open": "[", "close": "]" }, { "open": "(", "close": ")" }, { "open": """, "close": """, "notIn": ["string"] }, { "open": "'", "close": "'", "notIn": ["string", "comment"] } </ins> ], "surroundingPairs": [ ["{", "}"],


Question:
VSCode Version: Version 1.3.0-insider (1.3.0-insider) 2016-06-30T05:01:53.185Z OS Version: OSX 10.11.5 (15F34) Steps to Reproduce: a new document, type 'ab'. the editor caret between the two characters. . In any standard OSX text area, this results in the text 'ba'. In VS Code, the result is 'bab', which I cannot imagine justifying as desirable. Note that there is a separate behavior when the caret is at end-of-line: in the EOL case, the previous two characters are transposed. VS Code handles this correctly; it is only the "in between" case that is broken (as far as I can tell). Any fix should make sure to test both cases.
I had a look in the source to see if I could fix this since it's driving me nuts. :) I think it may be an Electron issue since I don't see where this editor command is defined. I'm new to the source code so I may be missing it, but I don't see where a command is defined for ctrl-t.
This seems to have gotten worse recently; occasionally ctrl-t will cause multiple lines of text below the cursor to get duplicated into the text buffer.
do you have any idea if the likely source of this bug is in the vscode or electron code bases? I also went hunting around in vscode and could not find anything. I tried downloading an electron tutorial app but could not find a text field in which to test the problem. Any guidance here would be much appreciated.
For what it's worth the Atom app does not exhibit the broken vscode behavior. However, Atom's implementation has slightly different behavior than 'traditional' bash and native Cocoa controls. The traditional behavior is to transpose characters before and after the cursor AND move the cursor to after the transposed pair, or if there is no character after the cursor (end-of-line case) then transpose the preceding two characters. Atom transposes before and after characters around the cursor but does not move them; for the end-of-line case it does no transposition but instead moves the cursor back by one character.
I would assume that the solution would be to manually reimplement it, like VSCode already does for ^a ^e ^b ^f ^n ^p This extension does just that. It'd be nice if the functionality of this extension were bundled, since it's basic functionality that works on every other macOS textbox. The Sublime Text selection transpose is just bonus that's really nice.
Verified that when the cursor is in between 2 letters, they get transposed. But when cursor is at eol, previously last 2 letters were getting transposed. That doesn't happen anymore. ?
I tried ctrl+t in TextEdit and implemented the behaviour I observed there. Is the behaviour different than what TextEdit does?
I was basing my comment off of the OP's
ctrl+t in the editor now transposes characters like the default mac text editor. IMHO that is a good thing.
sadly it only matches half of the behavior; there are two cases. When I reported this bug I noted that the EOL case worked correctly but the in-between case did not. Now as of insiders build it appears that the situation has been reversed. Could we please reopen the issue? Thank you.
I just noticed that the start-of-line case is also incorrect: TextEdit transposes the newline before the caret with the character after the caret while VSCode simply advances the caret.
I cannot reproduce this issue. Using VS Code 1.12.1 and default key bindings. Move to have this issue closed?
This can probably be closed; I believe Transpose has been rewritten since then for Sublime compatibility?
VSCode does not match TextEdit behavior in the following cases: (where n is newline and ^ is the insertion caret). In all of these cases VSCode does nothing where TextEdit does a transpose operation.
This can be closed. I can't reproduce this issue too. (version: 1.13.1)
I can still reproduce the cases I describe above on OSX; VSCode Version 1.14.0-insider . I think that in order to close this issue somebody needs to explicitly decide that they want VSCode to ship with default behavior that does not match that of OSX and Cocoa.
I can reproduce, too. VS Code's and commands both do something different with each other and both different from the macOS/emacs standard.

import * as nls from 'vs/nls'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; <ins> import { isLowSurrogate, isHighSurrogate } from 'vs/base/common/strings'; </ins> import { Range } from 'vs/editor/common/core/range'; <ins> import { Position, IPosition } from 'vs/editor/common/core/position'; </ins> import { ICommand } from 'vs/editor/common/editorCommon'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { registerEditorAction, EditorAction, ServicesAccessor } from 'vs/editor/browser/editorExtensions'; import { ReplaceCommand } from 'vs/editor/common/commands/replaceCommand'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; <ins> import { ITextModel } from 'vs/editor/common/model'; </ins> class TransposeLettersAction extends EditorAction { <ins> private positionLeftOf(start: IPosition, model: ITextModel): Position { let column = start.column; let lineNumber = start.lineNumber; if (column > model.getLineMinColumn(lineNumber)) { if (isLowSurrogate(model.getLineContent(lineNumber).charCodeAt(column - 2))) { // character before column is a low surrogate column = column - 2; } else { column = column - 1; } } else if (lineNumber > 1) { lineNumber = lineNumber - 1; column = model.getLineMaxColumn(lineNumber); } return new Position(lineNumber, column); } private positionRightOf(start: IPosition, model: ITextModel): Position { let column = start.column; let lineNumber = start.lineNumber; if (column < model.getLineMaxColumn(lineNumber)) { if (isHighSurrogate(model.getLineContent(lineNumber).charCodeAt(column - 1))) { // character after column is a high surrogate column = column + 2; } else { column = column + 1; } } else if (lineNumber < model.getLineCount()) { lineNumber = lineNumber + 1; column = 0; } return new Position(lineNumber, column); } </ins> constructor() { super({ id: 'editor.action.transposeLetters',


Question:
VSCode Version: Version 1.3.0-insider (1.3.0-insider) 2016-06-30T05:01:53.185Z OS Version: OSX 10.11.5 (15F34) Steps to Reproduce: a new document, type 'ab'. the editor caret between the two characters. . In any standard OSX text area, this results in the text 'ba'. In VS Code, the result is 'bab', which I cannot imagine justifying as desirable. Note that there is a separate behavior when the caret is at end-of-line: in the EOL case, the previous two characters are transposed. VS Code handles this correctly; it is only the "in between" case that is broken (as far as I can tell). Any fix should make sure to test both cases.
I had a look in the source to see if I could fix this since it's driving me nuts. :) I think it may be an Electron issue since I don't see where this editor command is defined. I'm new to the source code so I may be missing it, but I don't see where a command is defined for ctrl-t.
This seems to have gotten worse recently; occasionally ctrl-t will cause multiple lines of text below the cursor to get duplicated into the text buffer.
do you have any idea if the likely source of this bug is in the vscode or electron code bases? I also went hunting around in vscode and could not find anything. I tried downloading an electron tutorial app but could not find a text field in which to test the problem. Any guidance here would be much appreciated.
For what it's worth the Atom app does not exhibit the broken vscode behavior. However, Atom's implementation has slightly different behavior than 'traditional' bash and native Cocoa controls. The traditional behavior is to transpose characters before and after the cursor AND move the cursor to after the transposed pair, or if there is no character after the cursor (end-of-line case) then transpose the preceding two characters. Atom transposes before and after characters around the cursor but does not move them; for the end-of-line case it does no transposition but instead moves the cursor back by one character.
I would assume that the solution would be to manually reimplement it, like VSCode already does for ^a ^e ^b ^f ^n ^p This extension does just that. It'd be nice if the functionality of this extension were bundled, since it's basic functionality that works on every other macOS textbox. The Sublime Text selection transpose is just bonus that's really nice.
Verified that when the cursor is in between 2 letters, they get transposed. But when cursor is at eol, previously last 2 letters were getting transposed. That doesn't happen anymore. ?
I tried ctrl+t in TextEdit and implemented the behaviour I observed there. Is the behaviour different than what TextEdit does?
I was basing my comment off of the OP's
ctrl+t in the editor now transposes characters like the default mac text editor. IMHO that is a good thing.
sadly it only matches half of the behavior; there are two cases. When I reported this bug I noted that the EOL case worked correctly but the in-between case did not. Now as of insiders build it appears that the situation has been reversed. Could we please reopen the issue? Thank you.
I just noticed that the start-of-line case is also incorrect: TextEdit transposes the newline before the caret with the character after the caret while VSCode simply advances the caret.
I cannot reproduce this issue. Using VS Code 1.12.1 and default key bindings. Move to have this issue closed?
This can probably be closed; I believe Transpose has been rewritten since then for Sublime compatibility?
VSCode does not match TextEdit behavior in the following cases: (where n is newline and ^ is the insertion caret). In all of these cases VSCode does nothing where TextEdit does a transpose operation.
This can be closed. I can't reproduce this issue too. (version: 1.13.1)
I can still reproduce the cases I describe above on OSX; VSCode Version 1.14.0-insider . I think that in order to close this issue somebody needs to explicitly decide that they want VSCode to ship with default behavior that does not match that of OSX and Cocoa.
I can reproduce, too. VS Code's and commands both do something different with each other and both different from the macOS/emacs standard.

let commands: ICommand[] = []; let selections = editor.getSelections(); <del> for (let i = 0; i < selections.length; i++) { let selection = selections[i]; </del> <ins> for (let selection of selections) { </ins> if (!selection.isEmpty()) { continue; } let lineNumber = selection.startLineNumber; let column = selection.startColumn; <del> if (column === 1) { // at the beginning of line continue; } let maxColumn = model.getLineMaxColumn(lineNumber); if (column === maxColumn) { // at the end of line </del> <ins> let lastColumn = model.getLineMaxColumn(lineNumber); if (lineNumber === 1 && (column === 1 || (column === 2 && lastColumn === 2))) { // at beginning of file, nothing to do </ins> continue; } <del> let lineContent = model.getLineContent(lineNumber); let charToTheLeft = lineContent.charAt(column - 2); let charToTheRight = lineContent.charAt(column - 1); </del> <ins> // handle special case: when at end of line, transpose left two chars // otherwise, transpose left and right chars let endPosition = (column === lastColumn) ? selection.getPosition() : this.positionRightOf(selection.getPosition(), model); let middlePosition = this.positionLeftOf(endPosition, model); let beginPosition = this.positionLeftOf(middlePosition, model); </ins> <del> let replaceRange = new Range(lineNumber, column - 1, lineNumber, column + 1); </del> <ins> let leftChar = model.getValueInRange(Range.fromPositions(beginPosition, middlePosition)); let rightChar = model.getValueInRange(Range.fromPositions(middlePosition, endPosition)); </ins> <del> commands.push(new ReplaceCommand(replaceRange, charToTheRight + charToTheLeft)); </del> <ins> let replaceRange = Range.fromPositions(beginPosition, endPosition); commands.push(new ReplaceCommand(replaceRange, rightChar + leftChar)); </ins> } if (commands.length > 0) {


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

import DOM = require('vs/base/browser/dom'); import URI from 'vs/base/common/uri'; import errors = require('vs/base/common/errors'); <ins> import {RunOnceScheduler} from 'vs/base/common/async'; </ins> import {isMacintosh} from 'vs/base/common/platform'; import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/editorService'; import {IContextMenuService} from 'vs/platform/contextview/browser/contextView';


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

private _onGroupFocusChanged: Emitter<void>; <ins> private onStacksChangeScheduler: RunOnceScheduler; private stacksChangedBuffer: IStacksModelChangeEvent[]; </ins> private toDispose: IDisposable[]; constructor(


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

@IInstantiationService private instantiationService: IInstantiationService ) { this.stacks = editorGroupService.getStacksModel(); <ins> this.toDispose = []; </ins> this.parent = parent; this.dimension = new Dimension(0, 0);


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

this._onGroupFocusChanged = new Emitter<void>(); <del> this.toDispose = []; </del> <ins> this.onStacksChangeScheduler = new RunOnceScheduler(() => this.handleStacksChanged(), 0); this.toDispose.push(this.onStacksChangeScheduler); this.stacksChangedBuffer = []; </ins> this.create(this.parent); this.registerListeners();


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

} private onStacksChanged(e: IStacksModelChangeEvent): void { <ins> this.stacksChangedBuffer.push(e); this.onStacksChangeScheduler.schedule(); } private handleStacksChanged(): void { </ins> <del> // Up to date context </del> <ins> // Read and reset buffer of events const buffer = this.stacksChangedBuffer; this.stacksChangedBuffer = []; // Up to date context for all title controls </ins> POSITIONS.forEach(position => { <del> this.getTitleAreaControl(position).setContext(this.stacks.groupAt(position)); </del> <ins> const titleAreaControl = this.getTitleAreaControl(position); const context = this.stacks.groupAt(position); titleAreaControl.setContext(context); if (!context) { titleAreaControl.refresh(); // clear out the control if the context is no longer present } </ins> }); // Refresh / update if group is visible and has a position <del> const position = this.stacks.positionOfGroup(e.group); if (position >= 0) { if (e.structural) { this.getTitleAreaControl(position).refresh(); } else { this.getTitleAreaControl(position).update(); </del> <ins> buffer.forEach(e => { const position = this.stacks.positionOfGroup(e.group); if (position >= 0) { // group could be gone by now because we run from a scheduler with timeout if (e.structural) { this.getTitleAreaControl(position).refresh(); } else { this.getTitleAreaControl(position).update(); } </ins> } <del> } </del> <ins> }); </ins> } public get onGroupFocusChanged(): Event<void> {


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

private rochade(from: Position, to: Position): void { <del> // Move editor to new position </del> <ins> // Move container to new position const containerFrom = this.silos[from].child(); containerFrom.appendTo(this.silos[to]); const containerTo = this.silos[to].child(); containerTo.appendTo(this.silos[from]); // Inform editor </ins> const editor = this.visibleEditors[from]; <del> editor.getContainer().offDOM().build(this.silos[to].child()); </del> editor.changePosition(to); // Change data structures


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

// Distance 1: Swap Editors if (Math.abs(from - to) === 1) { <del> // Move editors to new position let editorPos1 = this.visibleEditors[from]; editorPos1.getContainer().offDOM().build(this.silos[to].child()); editorPos1.changePosition(to); </del> <ins> // Move containers to new position const containerFrom = this.silos[from].child(); containerFrom.appendTo(this.silos[to]); const containerTo = this.silos[to].child(); containerTo.appendTo(this.silos[from]); </ins> <del> let editorPos2 = this.visibleEditors[to]; editorPos2.getContainer().offDOM().build(this.silos[from].child()); editorPos2.changePosition(from); </del> <ins> // Inform Editors this.visibleEditors[from].changePosition(to); this.visibleEditors[to].changePosition(from); </ins> // Update last active position accordingly if (this.lastActivePosition === from) {


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

newRightPosition = Position.LEFT; } <del> // Move editors to new position let editorPos1 = this.visibleEditors[Position.LEFT]; editorPos1.getContainer().offDOM().build(this.silos[newLeftPosition].child()); editorPos1.changePosition(newLeftPosition); </del> <ins> // Move containers to new position const containerPos1 = this.silos[Position.LEFT].child(); containerPos1.appendTo(this.silos[newLeftPosition]); </ins> <del> let editorPos2 = this.visibleEditors[Position.CENTER]; editorPos2.getContainer().offDOM().build(this.silos[newCenterPosition].child()); editorPos2.changePosition(newCenterPosition); </del> <ins> const containerPos2 = this.silos[Position.CENTER].child(); containerPos2.appendTo(this.silos[newCenterPosition]); </ins> <del> const editorPos3 = this.visibleEditors[Position.RIGHT]; editorPos3.getContainer().offDOM().build(this.silos[newRightPosition].child()); editorPos3.changePosition(newRightPosition); </del> <ins> const containerPos3 = this.silos[Position.RIGHT].child(); containerPos3.appendTo(this.silos[newRightPosition]); // Inform Editors this.visibleEditors[Position.LEFT].changePosition(newLeftPosition); this.visibleEditors[Position.CENTER].changePosition(newCenterPosition); this.visibleEditors[Position.RIGHT].changePosition(newRightPosition); </ins> // Update last active position accordingly if (this.lastActivePosition === Position.LEFT) {


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

const titleAreaControl = instantiationService.createInstance<ITitleAreaControl>(useTabs ? TabsTitleControl : NoTabsTitleControl); titleAreaControl.create(container.getHTMLElement()); titleAreaControl.setContext(context); <del> titleAreaControl.refresh(); </del> <ins> titleAreaControl.refresh(true /* instant */); </ins> silo.child().setProperty(SideBySideEditorControl.TITLE_AREA_CONTROL_KEY, titleAreaControl); // associate with container }


Question:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via

// Move to valid position if any if (moveTo !== null) { this.editorGroupService.moveGroup(position, moveTo); <del> // To reduce flickering during this operation we trigger a refresh of all // title controls right after. POSITIONS.forEach(p => { this.getTitleAreaControl(p).refresh(true); }); </del> } // Otherwise layout to restore proper positioning


Question:
VSCode Version: 1.3.0-Insider OS Version: MacOSX 10.11.5 Steps to Reproduce: document with long lines (longer then screen width to the right and move the cursor to accordingly -Cursor is invisible
Unless I'm misunderstanding the issue, this is expected behaviour. How would you expect the editor to behave? This happens on every editor. If you'd like your long line to wrap, you can control that by setting the configuration to .
No, this has nothing to do with wrapping long lines. My cursor is literally invisible: !
Interesting, but I still can't reproduce... Can you provide a screencast or similar?
Where is your focus? The cursor blinks/is rendered only when the editor is focused
I tried reproducing it with new files, but I'm unable to. This happens with a few xsl files at work. I'll try to see if I can get a 100% reproducible file. The focus is in the active editor. I'm only moving the cursor to the right. Screencast: ! EDIT: The cursor is only visible for as long as it doesn't surpass the last character that was visible in the initial view region of the editor
Thank you for the gif! I've never seen that before. Do you see any errors in the console () ? I've quickly tried with a file with these contents but could not reproduce: Other things that might be relevant: does this reproduce when running code without extensions (close it completely and launch with ), did you customize the font and/or picked a different theme?
I found a way to reliably reproduce this issue. The missing piece was, that it only happens when you have split the main editor. I can't reproduce it with just one editor visible. Launching with doesn't help. I did try with the default user settings and theme as well, but without success. I managed to nail it down to the following steps to reproduce this issue: vscode random file (doesn't matter) the editor with (this is important) random code/text with long lines in one of the 2 editor panels
Forgot to mention: unfortunately there are no errors in the devtools console.
I'm also seeing this issue. VS Code 1.3.0 commit Windows 10.0. Edit: Oops, didn't notice that a fix was already committed yesterday.
can you try my solution in ?
Yes, but disabling extensions doesn't help. This issue only occurs when you have more than a single editor view. See:
We decided to fix this by removing the property from the tabs container. The visual impact is that if you use a theme that introduces a custom background color, it will only be picked up for the active tab. E.g. for our themes "red" and "abyss": ! ! To verify: be on windows have 2 groups open at least have enough tabs open to cause scrolling activate a tab that is at the end of the tab list in group one find a long line and arrow right verify the cursor is not lost
can I ask you to verify this on Windows using this 1.3.1 stable build: Thanks!
I verified this.

private _readOnly: boolean; private _cursorBlinking: editorCommon.TextEditorCursorBlinkingStyle; private _cursorStyle: editorCommon.TextEditorCursorStyle; <del> private _canUseTranslate3d: boolean; </del> private _isVisible: boolean;


Question:
VSCode Version: 1.3.0-Insider OS Version: MacOSX 10.11.5 Steps to Reproduce: document with long lines (longer then screen width to the right and move the cursor to accordingly -Cursor is invisible
Unless I'm misunderstanding the issue, this is expected behaviour. How would you expect the editor to behave? This happens on every editor. If you'd like your long line to wrap, you can control that by setting the configuration to .
No, this has nothing to do with wrapping long lines. My cursor is literally invisible: !
Interesting, but I still can't reproduce... Can you provide a screencast or similar?
Where is your focus? The cursor blinks/is rendered only when the editor is focused
I tried reproducing it with new files, but I'm unable to. This happens with a few xsl files at work. I'll try to see if I can get a 100% reproducible file. The focus is in the active editor. I'm only moving the cursor to the right. Screencast: ! EDIT: The cursor is only visible for as long as it doesn't surpass the last character that was visible in the initial view region of the editor
Thank you for the gif! I've never seen that before. Do you see any errors in the console () ? I've quickly tried with a file with these contents but could not reproduce: Other things that might be relevant: does this reproduce when running code without extensions (close it completely and launch with ), did you customize the font and/or picked a different theme?
I found a way to reliably reproduce this issue. The missing piece was, that it only happens when you have split the main editor. I can't reproduce it with just one editor visible. Launching with doesn't help. I did try with the default user settings and theme as well, but without success. I managed to nail it down to the following steps to reproduce this issue: vscode random file (doesn't matter) the editor with (this is important) random code/text with long lines in one of the 2 editor panels
Forgot to mention: unfortunately there are no errors in the devtools console.
I'm also seeing this issue. VS Code 1.3.0 commit Windows 10.0. Edit: Oops, didn't notice that a fix was already committed yesterday.
can you try my solution in ?
Yes, but disabling extensions doesn't help. This issue only occurs when you have more than a single editor view. See:
We decided to fix this by removing the property from the tabs container. The visual impact is that if you use a theme that introduces a custom background color, it will only be picked up for the active tab. E.g. for our themes "red" and "abyss": ! ! To verify: be on windows have 2 groups open at least have enough tabs open to cause scrolling activate a tab that is at the end of the tab list in group one find a long line and arrow right verify the cursor is not lost
can I ask you to verify this on Windows using this 1.3.1 stable build: Thanks!
I verified this.

this._readOnly = this._context.configuration.editor.readOnly; this._cursorBlinking = this._context.configuration.editor.viewInfo.cursorBlinking; this._cursorStyle = this._context.configuration.editor.viewInfo.cursorStyle; <del> this._canUseTranslate3d = context.configuration.editor.viewInfo.canUseTranslate3d; </del> this._primaryCursor = new ViewCursor(this._context, false); this._secondaryCursors = [];


Question:
VSCode Version: 1.3.0-Insider OS Version: MacOSX 10.11.5 Steps to Reproduce: document with long lines (longer then screen width to the right and move the cursor to accordingly -Cursor is invisible
Unless I'm misunderstanding the issue, this is expected behaviour. How would you expect the editor to behave? This happens on every editor. If you'd like your long line to wrap, you can control that by setting the configuration to .
No, this has nothing to do with wrapping long lines. My cursor is literally invisible: !
Interesting, but I still can't reproduce... Can you provide a screencast or similar?
Where is your focus? The cursor blinks/is rendered only when the editor is focused
I tried reproducing it with new files, but I'm unable to. This happens with a few xsl files at work. I'll try to see if I can get a 100% reproducible file. The focus is in the active editor. I'm only moving the cursor to the right. Screencast: ! EDIT: The cursor is only visible for as long as it doesn't surpass the last character that was visible in the initial view region of the editor
Thank you for the gif! I've never seen that before. Do you see any errors in the console () ? I've quickly tried with a file with these contents but could not reproduce: Other things that might be relevant: does this reproduce when running code without extensions (close it completely and launch with ), did you customize the font and/or picked a different theme?
I found a way to reliably reproduce this issue. The missing piece was, that it only happens when you have split the main editor. I can't reproduce it with just one editor visible. Launching with doesn't help. I did try with the default user settings and theme as well, but without success. I managed to nail it down to the following steps to reproduce this issue: vscode random file (doesn't matter) the editor with (this is important) random code/text with long lines in one of the 2 editor panels
Forgot to mention: unfortunately there are no errors in the devtools console.
I'm also seeing this issue. VS Code 1.3.0 commit Windows 10.0. Edit: Oops, didn't notice that a fix was already committed yesterday.
can you try my solution in ?
Yes, but disabling extensions doesn't help. This issue only occurs when you have more than a single editor view. See:
We decided to fix this by removing the property from the tabs container. The visual impact is that if you use a theme that introduces a custom background color, it will only be picked up for the active tab. E.g. for our themes "red" and "abyss": ! ! To verify: be on windows have 2 groups open at least have enough tabs open to cause scrolling activate a tab that is at the end of the tab list in group one find a long line and arrow right verify the cursor is not lost
can I ask you to verify this on Windows using this 1.3.1 stable build: Thanks!
I verified this.

if (e.viewInfo.cursorStyle) { this._cursorStyle = this._context.configuration.editor.viewInfo.cursorStyle; } <del> if (e.viewInfo.canUseTranslate3d) { this._canUseTranslate3d = this._context.configuration.editor.viewInfo.canUseTranslate3d; } </del> this._primaryCursor.onConfigurationChanged(e); this._updateBlinking();


Question:
VSCode Version: 1.3.0-Insider OS Version: MacOSX 10.11.5 Steps to Reproduce: document with long lines (longer then screen width to the right and move the cursor to accordingly -Cursor is invisible
Unless I'm misunderstanding the issue, this is expected behaviour. How would you expect the editor to behave? This happens on every editor. If you'd like your long line to wrap, you can control that by setting the configuration to .
No, this has nothing to do with wrapping long lines. My cursor is literally invisible: !
Interesting, but I still can't reproduce... Can you provide a screencast or similar?
Where is your focus? The cursor blinks/is rendered only when the editor is focused
I tried reproducing it with new files, but I'm unable to. This happens with a few xsl files at work. I'll try to see if I can get a 100% reproducible file. The focus is in the active editor. I'm only moving the cursor to the right. Screencast: ! EDIT: The cursor is only visible for as long as it doesn't surpass the last character that was visible in the initial view region of the editor
Thank you for the gif! I've never seen that before. Do you see any errors in the console () ? I've quickly tried with a file with these contents but could not reproduce: Other things that might be relevant: does this reproduce when running code without extensions (close it completely and launch with ), did you customize the font and/or picked a different theme?
I found a way to reliably reproduce this issue. The missing piece was, that it only happens when you have split the main editor. I can't reproduce it with just one editor visible. Launching with doesn't help. I did try with the default user settings and theme as well, but without success. I managed to nail it down to the following steps to reproduce this issue: vscode random file (doesn't matter) the editor with (this is important) random code/text with long lines in one of the 2 editor panels
Forgot to mention: unfortunately there are no errors in the devtools console.
I'm also seeing this issue. VS Code 1.3.0 commit Windows 10.0. Edit: Oops, didn't notice that a fix was already committed yesterday.
can you try my solution in ?
Yes, but disabling extensions doesn't help. This issue only occurs when you have more than a single editor view. See:
We decided to fix this by removing the property from the tabs container. The visual impact is that if you use a theme that introduces a custom background color, it will only be picked up for the active tab. E.g. for our themes "red" and "abyss": ! ! To verify: be on windows have 2 groups open at least have enough tabs open to cause scrolling activate a tab that is at the end of the tab list in group one find a long line and arrow right verify the cursor is not lost
can I ask you to verify this on Windows using this 1.3.1 stable build: Thanks!
I verified this.

for (var i = 0, len = this._secondaryCursors.length; i < len; i++) { this._secondaryCursors[i].render(ctx); } <del> if (this._canUseTranslate3d) { this._domNode.setTransform('translate3d(0px, 0px, 0px)'); } else { this._domNode.setTransform(''); } </del> } }


Question:
There is now a better Intellisense plugins for Vscode PHP: and . In it's known issues it says "There may be duplicate suggestions for functions or variables. This is because VS Code has it's own (very limited) code-completion support for PHP, and there is currently no way to turn this off." This indeed is annoying, the vscode suggestions are too broad and are just noise compared to accurate entries by crane.
It should be possible to uninstall the VS Code php extension.
fyi
I think crane still uses vscode's syntax highlighter for PHP. So if one were to remove VSCode's internal PHP extension, would it also remove the syntax highlighter? P.S. I think simple options would suffice, e.g. "", so it could be turned off.
Yes - but we can also think about splitting our extension into one part that does highlighting and bracket config and another that does completions. That would allow for more freedom.
This is now annoying the testing of proper language server in here : Quote: P.S. I think the option would be a simplest thing to implement for now.
Related
Any update on this?
I have been holding back the PHP IntelliSense release with intelligent completion for over a month now because it is useless if VS Code just spams the completion list with countless functions that do not make sense in the context. When will we get the option to disable or uninstall the built-in PHP completion?
I agree it makes sense to provide a temporary option to disable this. Just submitted a PR here:
Also just checking - at this point in time, is there anything else about the built-in support that is interfering with the experience? (hover, signature help, etc.?)
thanks for looking into this. Signature help is being implemented right now, iirc there is no built-in hover. It would be great if all of them could be disabled (everything except syntax highlighting).
I pushed the PR and changes the setting name for the code completion to "". If disabled, hover and signature help are also disabled.
I don't think the setting achieves the desired result. Setting to I no longer get completion suggestions even from PHP Intellisense extension. If have to use to trigger the completion suggestions list.
I don't think this is related, this only removes the built-in completion provider.
So something else which controls the display of suggestions list from extensions like php intellisense is broken?
Part of the January build. Add to your settings to disable all completions from the built-in PHP extension.

"type": "object", "order": 20, "properties": { <ins> "php.builtInCompletions.enable": { "type": "boolean", "default": true, "description": "%configuration.builtInCompletions.enable%" }, </ins> "php.validate.enable": { "type": "boolean", "default": true,


Question:
There is now a better Intellisense plugins for Vscode PHP: and . In it's known issues it says "There may be duplicate suggestions for functions or variables. This is because VS Code has it's own (very limited) code-completion support for PHP, and there is currently no way to turn this off." This indeed is annoying, the vscode suggestions are too broad and are just noise compared to accurate entries by crane.
It should be possible to uninstall the VS Code php extension.
fyi
I think crane still uses vscode's syntax highlighter for PHP. So if one were to remove VSCode's internal PHP extension, would it also remove the syntax highlighter? P.S. I think simple options would suffice, e.g. "", so it could be turned off.
Yes - but we can also think about splitting our extension into one part that does highlighting and bracket config and another that does completions. That would allow for more freedom.
This is now annoying the testing of proper language server in here : Quote: P.S. I think the option would be a simplest thing to implement for now.
Related
Any update on this?
I have been holding back the PHP IntelliSense release with intelligent completion for over a month now because it is useless if VS Code just spams the completion list with countless functions that do not make sense in the context. When will we get the option to disable or uninstall the built-in PHP completion?
I agree it makes sense to provide a temporary option to disable this. Just submitted a PR here:
Also just checking - at this point in time, is there anything else about the built-in support that is interfering with the experience? (hover, signature help, etc.?)
thanks for looking into this. Signature help is being implemented right now, iirc there is no built-in hover. It would be great if all of them could be disabled (everything except syntax highlighting).
I pushed the PR and changes the setting name for the code completion to "". If disabled, hover and signature help are also disabled.
I don't think the setting achieves the desired result. Setting to I no longer get completion suggestions even from PHP Intellisense extension. If have to use to trigger the completion suggestions list.
I don't think this is related, this only removes the built-in completion provider.
So something else which controls the display of suggestions list from extensions like php intellisense is broken?
Part of the January build. Add to your settings to disable all completions from the built-in PHP extension.

{ <del> "configuration.validate.enable": "Whether php validation is enabled or not.", "configuration.validate.executablePath": "Points to the php executable.", </del> <ins> "configuration.builtInCompletions.enable": "Enable/disable built-in PHP completions.", "configuration.validate.enable": "Enable/disable built-in PHP validation.", "configuration.validate.executablePath": "Points to the PHP executable.", </ins> "configuration.validate.run": "Whether the linter is run on save or on type.", "configuration.title": "PHP" }  No newline at end of file


Question:
There is now a better Intellisense plugins for Vscode PHP: and . In it's known issues it says "There may be duplicate suggestions for functions or variables. This is because VS Code has it's own (very limited) code-completion support for PHP, and there is currently no way to turn this off." This indeed is annoying, the vscode suggestions are too broad and are just noise compared to accurate entries by crane.
It should be possible to uninstall the VS Code php extension.
fyi
I think crane still uses vscode's syntax highlighter for PHP. So if one were to remove VSCode's internal PHP extension, would it also remove the syntax highlighter? P.S. I think simple options would suffice, e.g. "", so it could be turned off.
Yes - but we can also think about splitting our extension into one part that does highlighting and bracket config and another that does completions. That would allow for more freedom.
This is now annoying the testing of proper language server in here : Quote: P.S. I think the option would be a simplest thing to implement for now.
Related
Any update on this?
I have been holding back the PHP IntelliSense release with intelligent completion for over a month now because it is useless if VS Code just spams the completion list with countless functions that do not make sense in the context. When will we get the option to disable or uninstall the built-in PHP completion?
I agree it makes sense to provide a temporary option to disable this. Just submitted a PR here:
Also just checking - at this point in time, is there anything else about the built-in support that is interfering with the experience? (hover, signature help, etc.?)
thanks for looking into this. Signature help is being implemented right now, iirc there is no built-in hover. It would be great if all of them could be disabled (everything except syntax highlighting).
I pushed the PR and changes the setting name for the code completion to "". If disabled, hover and signature help are also disabled.
I don't think the setting achieves the desired result. Setting to I no longer get completion suggestions even from PHP Intellisense extension. If have to use to trigger the completion suggestions list.
I don't think this is related, this only removes the built-in completion provider.
So something else which controls the display of suggestions list from extensions like php intellisense is broken?
Part of the January build. Add to your settings to disable all completions from the built-in PHP extension.

'use strict'; <del> import { CompletionItemProvider, CompletionItem, CompletionItemKind, CancellationToken, TextDocument, Position, Range, TextEdit } from 'vscode'; </del> <ins> import { CompletionItemProvider, CompletionItem, CompletionItemKind, CancellationToken, TextDocument, Position, Range, TextEdit, workspace } from 'vscode'; </ins> import phpGlobals = require('./phpGlobals'); export default class PHPCompletionItemProvider implements CompletionItemProvider {


Question:
There is now a better Intellisense plugins for Vscode PHP: and . In it's known issues it says "There may be duplicate suggestions for functions or variables. This is because VS Code has it's own (very limited) code-completion support for PHP, and there is currently no way to turn this off." This indeed is annoying, the vscode suggestions are too broad and are just noise compared to accurate entries by crane.
It should be possible to uninstall the VS Code php extension.
fyi
I think crane still uses vscode's syntax highlighter for PHP. So if one were to remove VSCode's internal PHP extension, would it also remove the syntax highlighter? P.S. I think simple options would suffice, e.g. "", so it could be turned off.
Yes - but we can also think about splitting our extension into one part that does highlighting and bracket config and another that does completions. That would allow for more freedom.
This is now annoying the testing of proper language server in here : Quote: P.S. I think the option would be a simplest thing to implement for now.
Related
Any update on this?
I have been holding back the PHP IntelliSense release with intelligent completion for over a month now because it is useless if VS Code just spams the completion list with countless functions that do not make sense in the context. When will we get the option to disable or uninstall the built-in PHP completion?
I agree it makes sense to provide a temporary option to disable this. Just submitted a PR here:
Also just checking - at this point in time, is there anything else about the built-in support that is interfering with the experience? (hover, signature help, etc.?)
thanks for looking into this. Signature help is being implemented right now, iirc there is no built-in hover. It would be great if all of them could be disabled (everything except syntax highlighting).
I pushed the PR and changes the setting name for the code completion to "". If disabled, hover and signature help are also disabled.
I don't think the setting achieves the desired result. Setting to I no longer get completion suggestions even from PHP Intellisense extension. If have to use to trigger the completion suggestions list.
I don't think this is related, this only removes the built-in completion provider.
So something else which controls the display of suggestions list from extensions like php intellisense is broken?
Part of the January build. Add to your settings to disable all completions from the built-in PHP extension.

public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): Promise<CompletionItem[]> { let result: CompletionItem[] = []; <ins> let shouldProvideCompletionItems = workspace.getConfiguration('php').get<boolean>('builtInCompletions.enable', true); if (!shouldProvideCompletionItems) { return Promise.resolve(result); } </ins> var range = document.getWordRangeAtPosition(position); var prefix = range ? document.getText(range) : ''; if (!range) {


Question:
There is now a better Intellisense plugins for Vscode PHP: and . In it's known issues it says "There may be duplicate suggestions for functions or variables. This is because VS Code has it's own (very limited) code-completion support for PHP, and there is currently no way to turn this off." This indeed is annoying, the vscode suggestions are too broad and are just noise compared to accurate entries by crane.
It should be possible to uninstall the VS Code php extension.
fyi
I think crane still uses vscode's syntax highlighter for PHP. So if one were to remove VSCode's internal PHP extension, would it also remove the syntax highlighter? P.S. I think simple options would suffice, e.g. "", so it could be turned off.
Yes - but we can also think about splitting our extension into one part that does highlighting and bracket config and another that does completions. That would allow for more freedom.
This is now annoying the testing of proper language server in here : Quote: P.S. I think the option would be a simplest thing to implement for now.
Related
Any update on this?
I have been holding back the PHP IntelliSense release with intelligent completion for over a month now because it is useless if VS Code just spams the completion list with countless functions that do not make sense in the context. When will we get the option to disable or uninstall the built-in PHP completion?
I agree it makes sense to provide a temporary option to disable this. Just submitted a PR here:
Also just checking - at this point in time, is there anything else about the built-in support that is interfering with the experience? (hover, signature help, etc.?)
thanks for looking into this. Signature help is being implemented right now, iirc there is no built-in hover. It would be great if all of them could be disabled (everything except syntax highlighting).
I pushed the PR and changes the setting name for the code completion to "". If disabled, hover and signature help are also disabled.
I don't think the setting achieves the desired result. Setting to I no longer get completion suggestions even from PHP Intellisense extension. If have to use to trigger the completion suggestions list.
I don't think this is related, this only removes the built-in completion provider.
So something else which controls the display of suggestions list from extensions like php intellisense is broken?
Part of the January build. Add to your settings to disable all completions from the built-in PHP extension.

'editor.snippetSuggestions', 'editor.selectionHighlight', 'editor.glyphMargin', <del> 'php.validate.run', </del> 'editor.wordSeparators', 'editor.mouseWheelScrollSensitivity', 'editor.suggestOnTriggerCharacters',


Question:
There is now a better Intellisense plugins for Vscode PHP: and . In it's known issues it says "There may be duplicate suggestions for functions or variables. This is because VS Code has it's own (very limited) code-completion support for PHP, and there is currently no way to turn this off." This indeed is annoying, the vscode suggestions are too broad and are just noise compared to accurate entries by crane.
It should be possible to uninstall the VS Code php extension.
fyi
I think crane still uses vscode's syntax highlighter for PHP. So if one were to remove VSCode's internal PHP extension, would it also remove the syntax highlighter? P.S. I think simple options would suffice, e.g. "", so it could be turned off.
Yes - but we can also think about splitting our extension into one part that does highlighting and bracket config and another that does completions. That would allow for more freedom.
This is now annoying the testing of proper language server in here : Quote: P.S. I think the option would be a simplest thing to implement for now.
Related
Any update on this?
I have been holding back the PHP IntelliSense release with intelligent completion for over a month now because it is useless if VS Code just spams the completion list with countless functions that do not make sense in the context. When will we get the option to disable or uninstall the built-in PHP completion?
I agree it makes sense to provide a temporary option to disable this. Just submitted a PR here:
Also just checking - at this point in time, is there anything else about the built-in support that is interfering with the experience? (hover, signature help, etc.?)
thanks for looking into this. Signature help is being implemented right now, iirc there is no built-in hover. It would be great if all of them could be disabled (everything except syntax highlighting).
I pushed the PR and changes the setting name for the code completion to "". If disabled, hover and signature help are also disabled.
I don't think the setting achieves the desired result. Setting to I no longer get completion suggestions even from PHP Intellisense extension. If have to use to trigger the completion suggestions list.
I don't think this is related, this only removes the built-in completion provider.
So something else which controls the display of suggestions list from extensions like php intellisense is broken?
Part of the January build. Add to your settings to disable all completions from the built-in PHP extension.

'editor.trimAutoWhitespace', 'editor.folding', 'workbench.editor.enablePreviewFromQuickOpen', <ins> 'php.builtInCompletions.enable', </ins> 'php.validate.enable', <ins> 'php.validate.run', </ins> 'editor.parameterHints', ];


Question:
! H1 and H2 are not highlighted. The preview is fine. Tested on VS Code 1.3.1 on OS X 10.11.6
I wanna give this one a try. Here is what I have achieved so far. !
Couple of updates on this: to highlight both lines at the same time, the way I was trying above doesn't look practical. It automatically highlights the current line assuming a match of the begin, until it finds a non matching end/while (Basically the line highlights, and if the next line isn't a '-{3,}' then the syntax goes back to normal mode. alt heading 2 syntax (just the -{3,} part) is conflicting with the rule meta.separator.markdown, which takes precedence and hence the issue. Would it be a better option to fix this conflict instead?
It doesn't work with 1.9.0 !
I believe this is as designed. Getting the TM grammar to highlight both the lines is tricky. If you refer to my previous comment, the first point: This would be confusing for the user. In simple terms, it means that as soon as a user starts typing, the line highlights, and goes back to normal syntax if the next line is neither of the alternate H1/H2 (---/===) text. What do you think?
Is it possible to let the line white and if a line starts with --- oder ===, then this one and the previous one switch to blue? That is the same behavior like in other editors.

<!-- seperator    [ ]{0,3}([-*_][ ]{0,2}2){2,}[ t]*$n? --> <!-- list         [ ]{0,3}[*+-]([ ]{1,3}|t) --> <!-- both are folded together in the expression below --> <del> <string>(^|G)(?!s*$|#|[ ]{0,3}((([-*_][ ]{0,2}2){2,}[ t]*$n?)|([*+-]([ ]{1,3}|t)))|s*[.+?]:|>)</string> </del> <ins> <string>(^|G)(?!s*$|#|[ ]{0,3}((([*_][ ]{0,2}2){2,}[ t]*$n?)|([*+-]([ ]{1,3}|t)))|s*[.+?]:|>)</string> </ins> </dict> <key>raw_block</key> <dict>


Question:
! H1 and H2 are not highlighted. The preview is fine. Tested on VS Code 1.3.1 on OS X 10.11.6
I wanna give this one a try. Here is what I have achieved so far. !
Couple of updates on this: to highlight both lines at the same time, the way I was trying above doesn't look practical. It automatically highlights the current line assuming a match of the begin, until it finds a non matching end/while (Basically the line highlights, and if the next line isn't a '-{3,}' then the syntax goes back to normal mode. alt heading 2 syntax (just the -{3,} part) is conflicting with the rule meta.separator.markdown, which takes precedence and hence the issue. Would it be a better option to fix this conflict instead?
It doesn't work with 1.9.0 !
I believe this is as designed. Getting the TM grammar to highlight both the lines is tricky. If you refer to my previous comment, the first point: This would be confusing for the user. In simple terms, it means that as soon as a user starts typing, the line highlights, and goes back to normal syntax if the next line is neither of the alternate H1/H2 (---/===) text. What do you think?
Is it possible to let the line white and if a line starts with --- oder ===, then this one and the previous one switch to blue? That is the same behavior like in other editors.

<key>separator</key> <dict> <key>match</key> <del> <string>(^|G)[ ]{0,3}([-*_])([ ]{0,2}2){2,}[ t]*$n?</string> </del> <ins> <string>(^|G)[ ]{0,3}([*-_])([ ]{0,2}2){2,}[ t]*$n?</string> </ins> <key>name</key> <string>meta.separator.markdown</string> </dict>


Question:
! H1 and H2 are not highlighted. The preview is fine. Tested on VS Code 1.3.1 on OS X 10.11.6
I wanna give this one a try. Here is what I have achieved so far. !
Couple of updates on this: to highlight both lines at the same time, the way I was trying above doesn't look practical. It automatically highlights the current line assuming a match of the begin, until it finds a non matching end/while (Basically the line highlights, and if the next line isn't a '-{3,}' then the syntax goes back to normal mode. alt heading 2 syntax (just the -{3,} part) is conflicting with the rule meta.separator.markdown, which takes precedence and hence the issue. Would it be a better option to fix this conflict instead?
It doesn't work with 1.9.0 !
I believe this is as designed. Getting the TM grammar to highlight both the lines is tricky. If you refer to my previous comment, the first point: This would be confusing for the user. In simple terms, it means that as soon as a user starts typing, the line highlights, and goes back to normal syntax if the next line is neither of the alternate H1/H2 (---/===) text. What do you think?
Is it possible to let the line white and if a line starts with --- oder ===, then this one and the previous one switch to blue? That is the same behavior like in other editors.

## Markdown plus h2 with a custom ID ##   {#id-goes-here} [Link back to H2](#id-goes-here) <ins> ### Alternate heading styles: Alternate Header 1 ================== Alternate Header 2 ------------------ </ins> <!-- html madness --> <div class="custom-class" markdown="1"> <div>


Question:
! H1 and H2 are not highlighted. The preview is fine. Tested on VS Code 1.3.1 on OS X 10.11.6
I wanna give this one a try. Here is what I have achieved so far. !
Couple of updates on this: to highlight both lines at the same time, the way I was trying above doesn't look practical. It automatically highlights the current line assuming a match of the begin, until it finds a non matching end/while (Basically the line highlights, and if the next line isn't a '-{3,}' then the syntax goes back to normal mode. alt heading 2 syntax (just the -{3,} part) is conflicting with the rule meta.separator.markdown, which takes precedence and hence the issue. Would it be a better option to fix this conflict instead?
It doesn't work with 1.9.0 !
I believe this is as designed. Getting the TM grammar to highlight both the lines is tricky. If you refer to my previous comment, the first point: This would be confusing for the user. In simple terms, it means that as soon as a user starts typing, the line highlights, and goes back to normal syntax if the next line is neither of the alternate H1/H2 (---/===) text. What do you think?
Is it possible to let the line white and if a line starts with --- oder ===, then this one and the previous one switch to blue? That is the same behavior like in other editors.

} }, { <ins> "c": "###", "t": "${1/(#)(#)?(#)?(#)?(#)?(#)?/${6:?6:${5:?5:${4:?4:${3:?3:${2:?2:1}}}}}/}.definition.heading.markdown.markup.punctuation", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.markup.heading rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.markup.heading rgb(128, 0, 0)", "dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.markup.heading rgb(86, 156, 214)", "light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.markup.heading rgb(128, 0, 0)", "hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.markup.heading rgb(103, 150, 230)" } }, { "c": " ", "t": "${1/(#)(#)?(#)?(#)?(#)?(#)?/${6:?6:${5:?5:${4:?4:${3:?3:${2:?2:1}}}}}/}.heading.markdown.markup", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.markup.heading rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.markup.heading rgb(128, 0, 0)", "dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.markup.heading rgb(86, 156, 214)", "light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.markup.heading rgb(128, 0, 0)", "hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.markup.heading rgb(103, 150, 230)" } }, { "c": "Alternate heading styles:", "t": "${1/(#)(#)?(#)?(#)?(#)?(#)?/${6:?6:${5:?5:${4:?4:${3:?3:${2:?2:1}}}}}/}.entity.heading.markdown.markup.name.section", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.markup.heading rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.markup.heading rgb(128, 0, 0)", "dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.markup.heading rgb(86, 156, 214)", "light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.markup.heading rgb(128, 0, 0)", "hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.markup.heading rgb(103, 150, 230)" } }, { "c": "Alternate Header 1", "t": "markdown.meta.paragraph", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", "dark_vs": ".vs-dark .token rgb(212, 212, 212)", "light_vs": ".vs .token rgb(0, 0, 0)", "hc_black": ".hc-black .token rgb(255, 255, 255)" } }, { "c": "==================", "t": "1.heading.markdown.markup.meta.paragraph.setext", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.markup.heading rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.markup.heading rgb(128, 0, 0)", "dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.markup.heading rgb(86, 156, 214)", "light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.markup.heading rgb(128, 0, 0)", "hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.markup.heading rgb(103, 150, 230)" } }, { "c": "Alternate Header 2", "t": "markdown.meta.paragraph", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", "dark_vs": ".vs-dark .token rgb(212, 212, 212)", "light_vs": ".vs .token rgb(0, 0, 0)", "hc_black": ".hc-black .token rgb(255, 255, 255)" } }, { "c": "------------------", "t": "2.heading.markdown.markup.meta.paragraph.setext", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.markup.heading rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.markup.heading rgb(128, 0, 0)", "dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.markup.heading rgb(86, 156, 214)", "light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.markup.heading rgb(128, 0, 0)", "hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.markup.heading rgb(103, 150, 230)" } }, { </ins> "c": "<!--", "t": "block.comment.definition.html.markdown.meta.paragraph.punctuation", "r": {


Question:
VSCode Version: 1.4.0 OS Version: Windows 10 Steps to Reproduce: the "editor.cursorBlinking" setting to either "smooth," "phase," or "expand." cursor either with mouse or arrow keys. The cursor briefly vanishes (as if it's starting the "blink" animation,) then immediately starts the defined animation.
Relevant animations in PR welcome
Just merged in the PR from . Thank you !

@keyframes cursor-smooth { 0%, 20% { <del> opacity: 0; </del> <ins> opacity: 1; </ins> } 60%, 100% { <del> opacity: 1; </del> <ins> opacity: 0; </ins> } } @keyframes cursor-phase { 0%, 20% { <del> opacity: 0; </del> <ins> opacity: 1; </ins> } 90%, 100% { <del> opacity: 1; </del> <ins> opacity: 0; </ins> } } @keyframes cursor-expand { 0%, 20% { <del> transform: scaleY(0); </del> <ins> transform: scaleY(1); </ins> } 80%, 100% { <del> transform: scaleY(1); </del> <ins> transform: scaleY(0); </ins> } }


Question: VSCode Version: Code - Insiders 1.5.0-insider (, 2016-08-09T16:02:06.523Z) OS Version: Darwin x64 14.5.0

.monaco-workbench .terminal-action.new { background: url('new.svg') center center no-repeat; } /* Dark theme / HC theme */ .vs-dark .monaco-workbench .terminal-action.kill, .hc-black .monaco-workbench .terminal-action.kill { background: url('kill-inverse.svg') center center no-repeat; } <del> .vs-dark .monaco-workbench .terminal-action.new, .hc-black .monaco-workbench .terminal-action.new { background: url('new-inverse.svg') center center no-repeat; } </del>  No newline at end of file <ins> .vs-dark .monaco-workbench .terminal-action.new, .hc-black .monaco-workbench .terminal-action.new { background: url('new-inverse.svg') center center no-repeat; } .vs-dark .monaco-workbench.mac .panel.integrated-terminal .xterm-rows, .hc-black .monaco-workbench.mac .panel.integrated-terminal .xterm-rows { cursor: -webkit-image-set(url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=') 1x, url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC') 2x) 5 8, text; } </ins>  No newline at end of file


Question:
In order to create custom keybindings to toggle focus between the editor and something such as the terminal panel, a command to focus the active/most recently used editor group needs to be . I believe this is the best that can be accomplished currently: Focuses the first group, meaning if the second or third editor groups were focused this would feel wrong: Or this which focused the most recently used editor group but opens the last editor/file in the group: Some context on request:
isn't that as easy as providing a global command that just puts focus into the active editor? E.g. ? PR welcome if you wanna give it a try.
yes, I expect it to be pretty easy.
got a better name than ?
works for me

import {SyncDescriptor} from 'vs/platform/instantiation/common/descriptors'; import {KeyMod, KeyChord, KeyCode} from 'vs/base/common/keyCodes'; import {CloseEditorsInGroupAction, CloseEditorsInOtherGroupsAction, CloseAllEditorsAction, MoveGroupLeftAction, MoveGroupRightAction, SplitEditorAction, KeepEditorAction, CloseOtherEditorsInGroupAction, OpenToSideAction, <del> NavigateBetweenGroupsAction, FocusFirstGroupAction, FocusSecondGroupAction, FocusThirdGroupAction, EvenGroupWidthsAction, MaximizeGroupAction, MinimizeOtherGroupsAction, FocusPreviousGroup, FocusNextGroup, ShowEditorsInLeftGroupAction, </del> <ins> NavigateBetweenGroupsAction, FocusActiveGroupAction, FocusFirstGroupAction, FocusSecondGroupAction, FocusThirdGroupAction, EvenGroupWidthsAction, MaximizeGroupAction, MinimizeOtherGroupsAction, FocusPreviousGroup, FocusNextGroup, ShowEditorsInLeftGroupAction, </ins> toEditorQuickOpenEntry, CloseLeftEditorsInGroupAction, CloseRightEditorsInGroupAction, OpenNextEditor, OpenPreviousEditor, NavigateBackwardsAction, NavigateForwardAction, ReopenClosedEditorAction, OpenPreviousRecentlyUsedEditorInGroupAction, NAVIGATE_IN_LEFT_GROUP_PREFIX, OpenPreviousEditorFromHistoryAction, ShowAllEditorsAction, NAVIGATE_ALL_EDITORS_GROUP_PREFIX, ClearEditorHistoryAction, ShowEditorsInCenterGroupAction, MoveEditorRightInGroupAction, NAVIGATE_IN_CENTER_GROUP_PREFIX, ShowEditorsInRightGroupAction, NAVIGATE_IN_RIGHT_GROUP_PREFIX, RemoveFromEditorHistoryAction, FocusLastEditorInStackAction, OpenNextRecentlyUsedEditorInGroupAction, MoveEditorToLeftGroupAction, MoveEditorToRightGroupAction, MoveEditorLeftInGroupAction


Question:
In order to create custom keybindings to toggle focus between the editor and something such as the terminal panel, a command to focus the active/most recently used editor group needs to be . I believe this is the best that can be accomplished currently: Focuses the first group, meaning if the second or third editor groups were focused this would feel wrong: Or this which focused the most recently used editor group but opens the last editor/file in the group: Some context on request:
isn't that as easy as providing a global command that just puts focus into the active editor? E.g. ? PR welcome if you wanna give it a try.
yes, I expect it to be pretty easy.
got a better name than ?
works for me

registry.registerWorkbenchAction(new SyncActionDescriptor(CloseEditorsInOtherGroupsAction, CloseEditorsInOtherGroupsAction.ID, CloseEditorsInOtherGroupsAction.LABEL), 'View: Close Editors in Other Groups', category); registry.registerWorkbenchAction(new SyncActionDescriptor(SplitEditorAction, SplitEditorAction.ID, SplitEditorAction.LABEL, { primary: KeyMod.CtrlCmd | KeyCode.US_BACKSLASH }), 'View: Split Editor', category); registry.registerWorkbenchAction(new SyncActionDescriptor(NavigateBetweenGroupsAction, NavigateBetweenGroupsAction.ID, NavigateBetweenGroupsAction.LABEL), 'View: Navigate Between Editor Groups', category); <ins> registry.registerWorkbenchAction(new SyncActionDescriptor(FocusActiveGroupAction, FocusActiveGroupAction.ID, FocusActiveGroupAction.LABEL), 'View: Focus Active Editor Group', category); </ins> registry.registerWorkbenchAction(new SyncActionDescriptor(FocusFirstGroupAction, FocusFirstGroupAction.ID, FocusFirstGroupAction.LABEL, { primary: KeyMod.CtrlCmd | KeyCode.KEY_1 }), 'View: Focus Left Editor Group', category); registry.registerWorkbenchAction(new SyncActionDescriptor(FocusSecondGroupAction, FocusSecondGroupAction.ID, FocusSecondGroupAction.LABEL, { primary: KeyMod.CtrlCmd | KeyCode.KEY_2 }), 'View: Focus Center Editor Group', category); registry.registerWorkbenchAction(new SyncActionDescriptor(FocusThirdGroupAction, FocusThirdGroupAction.ID, FocusThirdGroupAction.LABEL, { primary: KeyMod.CtrlCmd | KeyCode.KEY_3 }), 'View: Focus Right Editor Group', category);