atom-community / atom-community/ide-python

Automatic code formatting duplicates lines and blocks of code

Open
#384 1 comment 1 reaction 0 assignees View on GitHub
upstream issue
Dominant language
JavaScript
Stars
238
Forks
40
PR merge metrics
No merged PRs in 30d

Description

There seems to be a bug in automatic code formatting. The bug is triggered by opening the same code file into multiple tabs in separate panes. Having two tabs (of the same file) will cause the bug to occur once, three tabs will cause it to repeat twice, and so on.

I have been using the `ide-python` package only for a couple days, so I don't know about the specifics. This bug is present in both versions `1.9.4` and `1.9.5` at least. I turned off all checkboxes in the module's settings and restarted Atom, but this bug will still persist. I am using the "format on save" option.

Also, the file status is "modified" again after I **save** the file and automatic formatting is applied, so the file has to be manually saved twice. I don't think it should be like this.

### Example 1

**Original code**

```python
def foo():
pass

def bar():
pass
```

**Result after automating formatting**

```python
def foo():
pass

def bar():
pass
pass

```

Here the keyword `pass` is duplicated inside function `bar`.

### Example 2

**Original code**

```python
def foo():
pass
def bar():
pass

```

**Result after automating formatting**

```python
def foo():
pass

def bar():
pass
def bar():
pass

```

Here the whole function block for `bar` is duplicated. Formatting is also messed up.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the issue in Atom with ide-python 1.9.4 or 1.9.5, format on save enabled, and the same Python file open in multiple panes. Trace the automatic-formatting and save path to determine why each additional tab duplicates content; done means formatting no longer duplicates lines or blocks and the file is not left modified after one save.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, python
Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.