IDE (IntelliJ IDEA) support for Raw String Literals

Kevin Bourrillion kevinb at google.com
Thu May 3 14:31:33 UTC 2018


Hi Anna,

I have a couple other requests for IntelliJ's behavior with raw string
literals. It would be helpful for me if I could get some sense of how
likely these features would be to be implemented.

The requests apply to either of these cases:

   - Case 1: If we decide to implement automatic stripIndent behavior for
   RSLs
   - Case 2: If we decide not to, but for the particular string literal in
   question, IntelliJ recognizes that stripIndent is being called.

In either of these cases,

   - Will IntelliJ automatically maintain the leading indentation inside
   the RSL in the same way it handles leading indentation outside it?
      - Of course, there is an issue in "Case 2" that when you are first
      typing you won't have *typed* stripIndent yet, so it won't know
      whether you are planning to. There could be a user preference that
      automatically inserts `.stripindent() at the end when you type the
      opening delimiter; that would help.
   - Could IntelliJ compute the region of the source file that will be
   included in the resulting runtime constant, and render that boundary
   visually on the screen (either as a border, or a different shading for the
   region)?
   - When the user is highlighting text, as long as the endpoints are both
   within the delimiters, can the highlighted region be automatically
   restricted to that boundary? That is, exclude whitespace that is recognized
   as indentation that will be stripped. This would make pasting raw text to a
   different file much cleaner/easier.

Thanks!


On Fri, Apr 20, 2018 at 9:36 AM, Anna Kozlova <anna.kozlova at jetbrains.com>
wrote:

> Hi guys,
>
> we started developing the support for raw literals and would like to ask
> what do you think.
>
> Given a string `a<caret>b` and press ` at <caret>, what is the expected
> behavior?
>
> 1. Just insert tick: result is `a`b` where it would be parsed as raw
> literal (`a`), unknown identifier (b) and new raw literal till the end of
> file. Second ` at the same position will fix parsing. If one tick was
> intended, one would need to call an intention to fix the number of quotes
> around initial raw literal.
>
> 2. Add additional quotes around initial raw literal: result is ``a`b``.
> Literal is valid but to get `a` + `b` expression, one need to go to the
> string start/end and change the number of ticks or call an intention.
>
> It looks like to me that (1) would be needed more often, like each time
> when one needs to dynamically compose a string. (2) is more about injected
> code in the raw strings which IDE could treat differently anyway. (It's
> possible to create an IDE switcher between these strategies but still the
> default value would be needed.) I would love to see other use cases as
> well.
>
> Thank you,
> Anna
>



-- 
Kevin Bourrillion | Java Librarian | Google, Inc. | kevinb at google.com


More information about the amber-dev mailing list