ReSharper 5.0 Overview

As promised, we’re publishing a general ReSharper 5.0 overview, elaborating on its feature set.

Please keep in mind that this is a preliminary document. The general picture will stay unchanged, but local amendments cannot be ruled out at this point, and many user interface items will probably change.

Features

  • External Sources
    A solution is not limited to sources included in your projects, but also contains sources that were used to build your libraries. Some companies publish parts of their sources using the Source Server feature of debug information files (PDB). This is the same technology that Microsoft uses to provide access to source code for parts of the .NET Framework. With ReSharper 5, you can now access it as if it were a part of your solution. When no sources are available, ReSharper does a decent job of reconstructing types’ structure from metadata for your browsing pleasure.
  • Structured Patterns
    “I was assigned to a new project, and the source code is full of [your favorite code smell here]. Please, make ReSharper analyze and fix it!”. Fortunately, ReSharper 5 can address this demand. You can set up your own code patterns, search for them, replace them, include them in code analysis, and even use quick-fixes to replace! Building patterns and enforcing good practices has never been this easy. Corporate and team policies, your own frameworks, favorite open source libraries and tools — you can cover them all.

  • Project Refactorings and Dependencies View
    Once you’ve gotten used to smart, automated refactorings that ReSharper provides, you can’t think of doing them manually anymore. In this release, we extend ReSharper’s coverage to bring you several refactorings for project structure. With ReSharper 5, you can move files and folders between projects; synchronize namespaces to folder structure in any scope – as large as your solution; safely delete obsolete subsystems without going type by type; and split a file with lots of types created from usages into their own dedicated files – in one go. We have also added a special project dependencies view to help you track down excessive dependencies between projects and eliminate them. As an early ReSharper 5 user said, “I’m no longer afraid of restructuring my project. I just go and do it whenever I feel it’s right”.
  • Call Tracking
    Find usages, find usages, find usages. Formerly, attempting to track call sequences in code could end up with lost context, lots of Find Results windows and, ultimately, frustration. With ReSharper 5, you can inspect an entire call sequence in a single window, in a simple and straightforward manner. Stuck in unfamiliar code? ReSharper’s code inspecting tools for the rescue!
  • Value Tracking
    Value Tracking gives you important information about data flow in your program. At any point in your source code, select a variable, parameter, field or property and ask ReSharper to inspect it. You will then see how its value flows through your program, back to its sources or straight to consumers. Wonder how null could be passed to a specific parameter? Track it!
  • Internationalization
    Software localization and globalization has always been a tough and at times unwanted task for developers. ReSharper 5 greatly simplifies working with resources by providing a full stack of features for ResX files and resource usages in C# and VB.NET code, as well as in ASP.NET and XAML markup. Move string to resource, Find usages of resource and other navigation features, refactoring support, inspections and fixes — all ReSharper goodness for your localization pleasure.

Technologies and Languages

  • Visual Studio 2010
    We will publish more information about Visual Studio 2010 support when VS Beta 2 is released. Currently, ReSharper 5 builds support Visual Studio 2005 and Visual Studio 2008.
  • C# 4 and VB10
    New language versions nowadays appear at a great speed, and ReSharper team works hard to support them right when you need them. ReSharper 5 provides beta support for C# 4 and VB10, as Visual Studio 2010 does itself. Variance, dynamic types, named arguments and optional parameters, embedded COM assemblies — all of these features are supported in the new ReSharper. During VS 2010 Beta 2 phase we’re hoping to learn from your experience of using these features and improve their support for the Visual Studio 2010 release.
  • ASP.NET
    With this new version, ReSharper support for ASP.NET is improved tenfold. In addition to performance and responsiveness improvements, lots of new features for ASP.NET markup files are introduced to make your life easier. Web-specific navigation, master page support, new inspections and syntax highlighting for web files, File Structure and Go to File Member for in-page navigation and overview, live templates for common markup and more!
  • ASP.NET MVC
    ASP.NET MVC deserved our special attention: special syntax highlighting, inspections, navigation to and from action or controller, and even actions to create new types and methods from usage in pages.

Productivity

  • IntelliSense
    ReSharper continues to bring first-rate IntelliSense experience, and the new version gives even more. We have added automatic completion for enum members and boolean values, made automatic triggering smarter, and greatly improved performance. Completion for unresolved symbols in local scope is a new ReSharper IntelliSense feature. Another improvement is completion for all-lower text with CamelHumps  — to make cocopro match CodeCompletionProvider — and that means you don’t need to press Shift too often.
  • Bookmarks
    This is a simple yet powerful feature: drop a numbered marker with a single shortcut, jump back at any time with another keyboard key. Up to 10 numbered bookmarks, unlimited unnumbered bookmarks, full list of bookmarked positions in a single pop-up window — all to help you instantly switch between several code spots.

Inspections

  • Solution-Wide Warnings and Suggestions
    We have received a lot of positive feedback from our users regarding solution-wide error analysis, which allows you to immediately see compilation errors in the whole solution. In ReSharper 5, we took this technology to a new level by adding warnings and suggestions to the list. Now you can browse code smells that ReSharper finds across your solution and quickly improve the quality of your code.
  • Upgrade-to-LINQ Actions
    With C# 3.0 and LINQ, developers are able to write data-intensive code more easily by directly describing their intent to the compiler. However, years of imperative programming left us with tons of foreach-style code waiting to be upgraded. ReSharper 5 detects parts of your code that can be rewritten using the new LINQ syntax and offers to perform the conversion automatically, to make the developer’s intent crystal clear.
  • Use IEnumerable Where Possible
    With the power of LINQ, IEnumerable is more than enough to pass a collection of values. So why restrict yourself with an API requiring you to pass old-school arrays, Lists and ArrayLists? ReSharper will scan your code base to detect methods that can safely return and accept IEnumerable instead of a more specific type. Of course, we will also take care of the conversion.
  • New and Improved Code Inspections
    We have collected rich customer feedback and went through a list of common errors that developers make in code. Based on that, we have added a ton of highly intelligent inspections to immediately boost your .NET expertise. For example, if you take your API seriously and want it to be well documented, ReSharper will help you by highlighting errors in XML comments.

Other improvements

  • Native NUnit Support
    ReSharper 5 introduces a completely new approach to running your NUnit tests. Our engine is now based on native NUnit code. What it means to you is 100% compatibility with the latest released version of NUnit and full support of its recent unit testing features.
  • XML Formatting
    XML data is an important part of modern applications and you want it to be in order. The new version of ReSharper is supplied with a superb configurable formatter for XML files.
This entry was posted in News and Events and tagged , . Bookmark the permalink.

75 Responses to ReSharper 5.0 Overview

  1. Pingback: Twitter Trackbacks for JetBrains .NET Tools Blog » Blog Archive » ReSharper 5.0 Overview [jetbrains.com] on Topsy.com

  2. I was wondering if R# 5.0 will provide a feature to automatically generate documentation for methods, classes and assemblies; much like GhostDoc?

  3. Pingback: ReSharper 5.0 Overview - Laurent Kempé

  4. orangy says:

    Brian, we don’t have plans to put GhostDoc functionality in ReSharper.

  5. Keith says:

    what versions of visual studio will it support?

    when does the “free upgrade period” start for R# 5.0? so if someone buys 4.5 now will they get upgraded for free? or are they better off waiting?

  6. Pingback: Resharper 5.0! Hurrah! - Technicals and Technicalities

  7. Joe White says:

    Lotta cool stuff. I gotta say, I would love to have had that “delete unused code” feature the past three days, as I was trying to boil our million-line code base down to a simple repro case for a vendor’s bug.

    But I’m skeptical of the “auto-humps without Shift” idea, unless it’s gotten a lot better from its current incarnation. We’re migrating our code base to C# from Delphi, where the convention is that all type names start with T… TStrings, TMatcher, etc.; but our shop’s naming convention for automated test fixtures is to leave off the extra T: TestStrings, TestMatcher, etc. If I hit Ctrl+N and type “TMatcher”, ReSharper always defaults to “TestMatcher” instead of the exact match I typed. I’m finally learning that, if I don’t use Shift, and just type “taccount”, ReSharper will find what I actually type… now you’re taking that away? Please tell me you guys are at least paying attention to the bug reports I (and probably others) have already written up about usability problems with the current match algorithm.

  8. hurray! i was waiting for the new version. when are you planning to deliver it for purchasing?

  9. Pingback: Reflective Perspective - Chris Alcock » The Morning Brew #453

  10. cecildt says:

    I hope Resharper has better support for xaml and workflow xoml.

    Features sound exciting and can’t wait for the EAP!
    Great work guys!

    Thanks!

  11. Paul Batum says:

    Wow, it looks like there is some really cool stuff on the way. I can’t wait to try it out!

  12. Jura Gorohovsky says:

    Keith,

    R# 5 will support VS2008 and VS2010.

    At to purchase timing, we’re planning a “buy R# 4.5, upgrade to 5.0 for free” campaign very soon, presumably by the time 5.0 EAP is open, so my guess is that you should wait just a little bit.

    פורומים,
    We’re hoping to release 5.0 to the general public before NY, so you’ll be able to buy it pretty soon.

    cecildt,
    As far as I know, there are plans to support XOML files for 5.0. As to XAML improvements, there are some but not too many.

  13. Pingback: New and Notable 381 : Sam Gentile's Blog (if (DeveloperTask == Communication && OS == Windows)

  14. Jura Gorohovsky says:

    Joe,

    Here’s your request, and it turned out we’ve already fixed the issue. It should now work the way you prefer

  15. Damian Powell says:

    No support for F# in VS 2010?

  16. Joe White says:

    Sweet.

    Here’s hoping you also fix the two major bugs I’ve been running into:

    * All the crashes I’ve been reporting around Safe Delete (and code deletion in general) the past few days. JIRA shows no sign that these will ever be worked on. There are dozens of JIRA issues, all marked “closed as duplicate”, and ending in a circular loop — all the “duplicate of X” chains lead to either RSRP-101785 or RSRP-101786, and those two are closed as duplicates of *each other*! And there’s no “fixed in version” on any of them. So as far as I can tell, this bug will never even get looked at, and any new reports get marked as duplicates and fall into the same black hole.

    * The “Color Color” problem (property with the same name as its type — RSRP-83171). Andrey told me by e-mail that the “Color Color” problem was “by design at the moment and it’s not easy to fix”, which surprises me since it’s just removing a duplicate from the list.

    The “Color Color” problem is my absolute #1 annoyance when I’m using ReSharper (more so since it *used* to work in older versions). Little things matter — this problem is the reason I currently wouldn’t recommend ReSharper to anyone. (Fix the Color Color problem, and I’ll be singing ReSharper’s praises from the rooftops again!)

  17. Pingback: DotNetShoutout

  18. Jura Gorohovsky says:

    Damian,

    Sad but true, no F# support yet.
    On a positive side, we’re still hoping to provide it in a future version.

  19. Yuri Astrakhan says:

    Do you plan for R# to support code contracts and/or PEX?
    Thanks for the good overview!

  20. Pingback: progg.ru

  21. Im wondering the same as Yuri:
    Do you plan for R# to support code contracts and/or PEX?

    We could put code contracts practice (ex: null test) with Structured Patterns?

    thanks

  22. Adam D. says:

    Can’t wait to try this version out. I really like the foreach refactorings and the lowercase intellisense matching CamelCase.

  23. Pingback: ReSharper 5 – and I thought 4 was good » Lab49 Blog

  24. Hardeep Virdee says:

    Wow, another great feature set added to ReSharper!

    I’ve been using it since version 1.5 and looking forward again to another release to this great productivity tool.

  25. I already love R#5 and I can hardly wait to get into my hands.

  26. Rob Scott says:

    I’ve been a user since the early days and can’t wait to see the new features, but I have to agree with the earlier commenter who said commented on the

    “* The “Color Color” problem (property with the same name as its type — RSRP-83171).

    This is really a horrible usability problem. Is there no way just to prefer the property over the type in the selection list?

  27. Tom says:

    I’m excited about R#, but quite honestly, my enthusiasm is guarded. You guys dropped the ball on VS2010b1 support for EAP and made a lot of promises you didn’t keep. Those of us who dove into the early support were strung along for a long time with a poorly-performing nightly build. I hope this time it is different!

  28. Looks like some awesome new features coming in 5. The Upgrade to Linq is damn nifty.

    One thing I’m wondering about is the Layout Members xml definition. Has it been made easier to import, export and edit it. Right now just being in a multiline textbox (that has major scroll problems) is cumbersome. A simple, export/import dialog would be good. Even better than that would be some editing feedback, syntax highlighting or even VS integration.

  29. Alex says:

    Eh, Tom, the current support for VS2010b1 is already really great.
    “ReSharper for Visual Studio 2010 (Preview) Nightly Builds” have been available since July and I am using Resharper on VS2010 all day long, with great pleasure – and a few VS restarts :).
    I’m usually the first to whine, but VS2010 support from JetBrains has been exceptional so far!

  30. Sven says:

    Will Resharper 5.0 support .NET Ria Services?

  31. orangy says:

    Tom, I can understand your frustration with VS2010 and ReSharper preview, but we were not going or promising release quality build for VS2010 beta 1. It is beta 1, with unstable API which has 99% chances to change in beta 2 and probably even in RTM. Thus, it would be waste of time to continue improving the build, knowing that all that would go straight to recycle bin. There were other reasons I can’t talk about. ReSharper 5 EAP, which will open soon will not have an option to install for VS2010 for a reason. When VS2010 Beta 2 will come out, we will start providing builds for this version as soon as we are ready.

  32. Pingback: Бюро находок #8 | С кодом по жизни.

  33. luca morelli says:

    when will possible support refactoring for entity framework? if i rename an association in a edms file, i have to track the changes in the project, especially difficult is i use the Include(“Association”) in the code

  34. Pingback: Weekly Links #75 | GrantPalin.com

  35. Mark Jones says:

    I have been using resharper since version 1, and saw performance and stability get worse with each release. I completely stopped using it at version 4.5, because in spite of promises to work on performance it was still terrible. I now have a paid license for 4.5 that is unused because the software is so unstable and I had to uninstall. Now a new version 5 with more and more features to bog the IDE down. Too bad the emphasis is so strongly on new features and not on making existing features stable. I won’t be using version 5. I miss Resharper, but will probably never use it again. Thanks, Jetbrains.

  36. Pingback: Andrew Veresov blog | Resharper 5.0 First Public Build is now available

  37. Pingback: JetBrains .NET Tools Blog » Blog Archive » Welcome to ReSharper 5.0 EAP!

  38. Pingback: JetBrains .NET Tools Blog » Blog Archive » ReSharper 5.0 Overview « Tech Notes

  39. JeroenH says:

    Although I do still use (and like) R#, I have to agree with Mark Jones: please take some time to work on performance and memory usage before adding more features.

  40. Xavier Decoster says:

    Hi R# Team,

    I was also wondering about support for Code Contracts and/or Pex?
    Will there be a feature such as “suggesting” pre-/post-conditions?
    Is there anything special regarding the Parallel Task Library that will be part of .NET 4.0 ‘s mscorlib?
    In conjunction with the Patterns (Structured Search) feature, do you provide some templates for common patterns (searches)?

    Looking forward to use the new version on VS2010!

  41. Steve Dunn says:

    Great to be able to get access to version 5. I personally haven’t experienced any issues with performance.

  42. Pingback: Interesting Finds: 2009 10.14 ~ 10.21 - gOODiDEA.NET

  43. Tom says:

    @orangy: “When VS2010 Beta 2 will come out, we will start providing builds for this version as soon as we are ready.”

    That’s nice and I look forward to it, but what you need to understand is that there are a lot of us who purchased Resharper licenses and who are now using VS2010 for daily work. Because you effectively have no support for VS2010, neither with release versions nor with EAP, please don’t take too long to at least put something out there that is usable. I don’t personally care if it is 4.5- or 5.0-level; I just need something soon.

  44. coder says:

    @Tom: what feature do you specifically miss VS2010 doesn’t have? just tried beta2 and I feel there’s no need to slow my computer down with this plugin, as VS2010 is already good at refactoring…

    probably you can enlighten me what features I’ll gain, as many of them seems to complement each other (call to windows)

  45. Ryan says:

    Please do something about performance. Performance even in 4.5.1 is absolutely terrible.

  46. Pingback: mookid on code » R# FTW

  47. Tom says:

    @coder: Resharper is much more than what VS2010 has built-in. Check out the web pages on the Jetbrains site that describe what Resharper does.

  48. CSharpDev says:

    @coder:
    The main new feature that Resharper brings to VS2010 is the ability to have it crawl so slowly that it is completely useless. The constant popup error messages are just a nice bonus.

  49. Mark says:

    Top three new features needed for v5.0:

    1) Speed it up.
    2) Improve the performance.
    3) Make it run faster.

    After that, you can put in the other features in any order you choose :)

  50. Tom says:

    @CSharpDev: I’ll have to admit, I’m actually enjoying *not* having Resharper loaded in beta 2 since the built-in Intellisense is so much faster. But I do miss a lot of the helpful features.

    I hope that Jetbrains works hard on getting the performance right. It would be nice if they could eliminate the trade-off between having it slow down Visual Studio and having the extra functionality. That is always the pain-point in using Resharper.

  51. CSharpDev says:

    @Tom:
    Here is my experience with intellisense:

    No Resharper: Type some characters, accept a suggestion, type, accept, type, accept.

    With Resharper: Type some characters, sit back and wait for those characters you just typed to appear on the screen, accept a suggestion, type, wait for what you typed to appear on the screen…

  52. Jura Gorohovsky says:

    @CSharpDev
    You’ve been only able to try out ReSharper preview builds for VS2010. They’ve not been intended for production use. You should at least wait for EAP builds for VS2010 (should be available soon) before you can judge.
    As for intelliSense, try increasing the value in ReSharper | Options | Environment | IntelliSense | Completion Behavior | Automatically show completion list in…. Helps in most cases.

  53. CSharpDev says:

    @Jura Gorohovsky:
    I am talking about using ReSharper with VS2005 and VS2008, large projects. I have no reason to believe it would magically be better with VS2010. Resharper works fine on tiny projects in VS2005 or VS2008, so probably would work fine on tiny projects in VS2010.

    Your suggestion about automatically showing completion list has been suggested in forums before, but does no good whatsoever. Even turning intellisense completely off in Resharper doesn’t help.

    Here is No Resharper, VS intellisense:
    Type some characters, accept a suggestion, type, accept, type, accept.

    Here is With Resharper on a large project, intellisense turned completely off in Resharper, and every single recommendation stated time and time again in the forums about how to make Resharper more responsive:
    Type some characters, wait for what you typed to appear on the screen, type some more, oops I overran the keyboard buffer and lost some of what I just typed waiting for it to appear on the screen, get frustrated, type some more and wait for what you typed to appear on the screen.

  54. jmowla says:

    any support of C++?

  55. Jura Gorohovsky says:

    @jmowla
    Sorry, no support for C++

  56. Brett says:

    My Experience with Resharper
    - I came back after working in java 4 many years to use visual studio 2008 and was impressed I thought finally microsoft got an IDE right this just worked.
    - I then went to help a friend do something in VS 2008 and it was terrible unintuitive etc etc. I then realised exactly why resharper is so awesome it just does what it is supposed 2 do. I have now been using it for the last 9 months and would not program without it. This goes for our entire team of 12 Developers. This is the one peace of software that none of us would work without.
    - I have never experienced problems with it slowing my machine down (Although we do all program on top of the range machines).

    Resharper is by far my favorite piece of software ever.

    I have just started working with VS2010 and resharper and so far so good ;)

  57. Jura Gorohovsky says:

    Brett,
    Thanks for your feedback! Quite relieving to know we’re not slowing everyone’s machines down :)

  58. Joe White says:

    No, you’re not slowing everyone down. We were getting some painful slowdowns on our now 3- or 4-year-old development machines (older processors, only 2 GB of RAM), but when we upgraded machines half a year ago, we got 64-bit OSes and 8 GB of RAM — and now the speed is fine.

    Opening the solution is still pretty slow, but we don’t do that very often — though it is still a pain point whenever we update from svn and someone else modified the project, and we have to reload it. But apart from that, and the occasional bug that slows something down, the speed has been pretty good on our new hardware.

  59. CSharpDev says:

    It sounds like the minimum machine requirements for using Resharper on large projects needs to be stated as much higher than what is needed for Visual Studio without Resharper.

  60. Peter says:

    About those numbered bookmarks (finally!!!), what will the key combination be? I’m crossing my fingers it’ll be Ctrl+Shift+ to set and Ctrl+ to go…

  61. Peter says:

    It ate my less than and greater than signs; I meant Ctrl+Shift+[number] and Ctrl+[number]

  62. Jura Gorohovsky says:

    Peter,

    Exactly! Ctrl+Shift+number to set, Ctrl+number to go, in both keymaps.
    That also means that the traditional “Ctrl+8″ to switch analysis on/off in current file will move to another shortcut (hard to say which exactly yet).

  63. Joe White says:

    Sweet! I could never get Visual Studio’s bookmarks to behave in a way that was comprehensible by mere mortals, much less actually usable… I’m looking forward to having Delphi-style bookmarks again!

  64. Pingback: Five reasons to install Resharper 5 today - Helper Code

  65. ehsan says:

    increase speed
    decrease memory usage
    no more features needed

    thanks a lot

  66. Aleksey says:

    JeroenH Says nice words:
    “please take some time to work on performance and memory usage before adding more features”

  67. Pingback: ReSharper 5.0 Nightly Build – In Action | Łukasz Gąsior - Blog

  68. Pingback: The .NET Aficionado | ReSharper 5.0 Overview

  69. Max says:

    I accept the fact that Resharper MUST incur some slowdown in order to do its tremendous work. But a decent hardware with 2 cores and 4 gigs of RAM lets it work without problems.

    However there may be ways to mitigate that slowdowns – and here you R# devs may listen. Once I worked in a C project with Eclipse IDE. I had simultaneously opened the Linux kernel and OpenSolaris kernel (Eclipse people say it’s not a big project). It took some time to create an index with all symbols, but after that “Find usages”, “Find in files”, “Go to declaration” worked instantly, and I don’t know how many other great features too. This is an example, I’m pretty sure that at some level inside R# there are things that could be cached or precomputed and saved or anything. So maybe it’s worth creating some more temporary files with indexes and I don’t know, some intermediate representation of the source, to be really fast? Maybe some clever data structures to cache Intellisense would do the trick?

    I’d be certainly slower and my software would have been more buggy without Resharper. Version 5 introduces my favorite feature – a Linq converter, which will help my software to be even simpler, quicker written and looking more functional style, easier to maintain and easier to parallelize (thanks to .NET 4).

  70. Jura Gorohovsky says:

    @ Mark Jones, JeroenH, Aleksey,

    5.0 is planned as a feature-focused release. We have just recently released 4.5 focused on performance and memory usage. The next performance-enhancing iteration will hopefully take place some time after 5.0, no earlier. Not necessary a separate performance-specific release but there’s some work to be done.

    @ Max,

    I’m glad you’re pretty happy with R# with decent hardware. I secretly wish more people had decent hardware.
    Caching and intermediate representation are there of course. Unfortunately, they don’t immediately cure everything.

  71. Pete Maher says:

    Memory is a big problem. To the extent that I may need to remove resharper from the mix. I constantly get ‘Out of memory’ exceptions in Resharper. Not necessarily r#’s fault but my symptoms are that things get gradually worse, then suddenly unworkable. All I can do is restart VS. After doing so memory in use is down to 1.5GB and 1.9GB after Resharper has finished its startup exercises. I can’t physically add any more memory to my PC without getting a new 64bit machine. I have a dual core PC with 4GB RAM – maybe Max should come and work on our 57 project solution (and growing) with his whizzy machine and see how he feels after a few hours work.

    The alternative to ditching Resharper is to split the solution but it is a great shame that we would have to go to this extent.

    On the status bar when memory usage is listed as 240MB or above I know I will soon get Resharper reporting out of memory and will have to restart Visual Studio. It is a real PIA.

  72. Pete Maher says:

    OK – Found that there is some additional things to do if you hit out of memory exceptions frequently. I’ve followed the instructions in this link http://www.jetbrains.net/confluence/display/ReSharper/OutOfMemoryException%2BFix which is for a wrapper to devenv.exe which causes the memory allocation algorithm ofVisual Studio to be altered so that memory fragmentation is better managed. Well done JetBrains!

    I also followed the instructions in the link on that page to Steven Harman’s blog where he details how you can get Visual Stuido to *actually* use all the memory on your machine if you have 4GB of RAM. These made a HUGE IMPROVEMENT. But make sure you backup first before changing anything – a colleague didn’t have quite so plain a sailing as I had with these changes.

  73. Pingback: popcyclical - Resharper 5 Beta Impressions

  74. Hello,

    Will it be possible to remove the resharper scrollbar in this version? Please, make it optional!

    Cheers,

    André Carlucci

  75. @andrecarlucci
    What do you call ReSharper scrollbar?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">