Skip to content

Conversation

@RussKie
Copy link
Owner

@RussKie RussKie commented Oct 18, 2021

Handle scenarios without docking, e.g. all controls that have misaligned TabIndex vs z-order aren't docked.

There are three distinct scenarios when it comes to re-ordering statements:

  1. Move down by one, or swap neighbouring statements.
  2. Move down by more than one position.
  3. Move up.

1. Move down by one, or swap neighbouring statements

In this case we need to swap the leading trivia before we switch.

E.g.:

    // 
    // Form1
    // 
+   this.Controls.Add(button3);
    this.Controls.Add(this.button1);
-   this.Controls.Add(button3);
    this.Controls.Add(this.button2);
    this.ResumeLayout(false);

The leading trivia of the the moved statement is:

    // 
    // Form1
    // 

2. Move down by more than one position.

We need to swap leading trivia with the statement directly below the statement we are moving, and update the trivia for the moved statement with the leading trivia of the statement above which we're inserting.

E.g.:

    // 
    // Form1
    // 
-   this.Controls.Add(this.button2);
    this.Controls.Add(button3);
    this.Controls.Add(this.button1);
+   this.Controls.Add(this.button2);
    this.Controls.Add(this.treeView1);
    this.ResumeLayout(false);

The leading trivia of the the moved statement is:

    // 
    // Form1
    // 

3. Move up

We need to swap the leading trivia for the moved statement with the leading trivia of the statement above which we're inserting, and update that statement's trivia with the leading trivia of the statement directly below it.
E.g.:

    // 
    // Form1
    // 
+   this.Controls.Add(this.treeView1);
    this.Controls.Add(button3);
    this.Controls.Add(this.button1);
    this.Controls.Add(this.button2);
-   this.Controls.Add(this.treeView1);
    this.ResumeLayout(false);

The leading trivia of the the statement above which we're inserting is

    // 
    // Form1
    // 

Handle scenarios without docking, e.g. all controls that have misaligned
`TabIndex` vs z-order aren't docked.

There are three distinct scenarios when it comes to re-ordering statements:

1. Move down by one, or swap neighbouring statements - in this case we
need to swap the leading trivia before we switch.

2. Move down by more than one position - we need to swap leading trivia
with the statement directly below the statement we are moving, and update
the trivia for the moved statement with the leading trivia of the statement
above which we're inserting.

3. Move up - we need to swap the leading trivia for the moved statement
with the leading trivia of the statement above which we're inserting, and
update that statement's trivia with the leading trivia of the statement
directly below it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants