Navigation bar is case sensitive sorted in Visual Studio 2017

519 views Asked by At

I've noticed that, in Visual Studio 2017 (15.2, 26430.6) and with a C++ file, the list of functions in the navigation bar is sorted in a case sensitive way (see image below). This was not the case in Visual Studio 2010.

On the other hand, both the Solution Explorer and the Class View do show functions and methods sorted using a case insensitive order.

Is there any option, configuration file, free plugin, etc., that I can use to change this behaviour? It is very difficult to inspect a file in this way.

Only thing I've found so far, but that is not free, is the Supercharge plugin, that seems to offer its own navigation bar.


  1. In Visual Studio 2017

    enter image description here

  2. Same project open in Visual Studio 2010

    enter image description here

Note: I'm interested in how to solve this issue, not in code styling suggestions, mixed casing-guidelines, reducing number of functions per-file, etc. I know it is not the best practice but the project is that and I have to deal with it.


UPDATE: I've upgraded to VS 2017 15.2 (26430.12) this morning and this issue is still present.

2

There are 2 answers

0
cbuchart On BEST ANSWER

The issue was indeed reported a year and a half ago to Microsoft, but yesterday such issue was closed as Won't fix, so no official solutions seems to be available to it.

Here you can find the bug report and the reasons for closing the issue.

0
cynic On

This does feel like a regression (maybe related to the introduction of SQLite as the IntelliSense database backend?) - you should file a bug, however your agreement with Microsoft allows. FWIW, a bit of reverse engineering reveals that in VS 2017 the ordering is done by the SQLite database engine. On opening the database connection, VS installs its own collation (via https://sqlite.org/c3ref/create_collation.html) which it calls WORD and explicitly uses it (i.e. the query has ORDER BY i.name COLLATE WORD in its text) when ordering by symbol name is required, as it is for that combo box. The implementation of the collation function converts the UTF-8 characters to UTF-32 and after some special casing for math symbols etc., ultimately does ordinal comparison on that. Appears deliberate to me.