Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ and this project adheres to http://semver.org/spec/v2.0.0.html[Semantic Versioni
- Fix selection of items (variables, test names, keywords) from Project Explorer and highlight at Text Editor.
- Fixed Tab spacing in Text Editor. When pressing tab the expected spaces were not written, causing failing steps.

=== Changed
- Improved spaces detection in test suites reader.

== https://github.com/robotframework/RIDE/blob/master/doc/releasenotes/ride-2.2.4.rst[2.2.4] - 2026-07-09

=== Fixed
Expand Down
2 changes: 1 addition & 1 deletion README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Likewise, the current version of wxPython, is 4.2.5, but RIDE is known to work w

`pip install -U robotframework-ride`

(3.9 <= python <= 3.14) Install current development version (**2.2.5dev3**) with:
(3.9 <= python <= 3.14) Install current development version (**2.2.5dev5**) with:

`pip install -U https://github.com/robotframework/RIDE/archive/develop.zip`

Expand Down
48 changes: 25 additions & 23 deletions src/robotide/application/CHANGELOG.html

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions src/robotide/application/releasenotes.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ def set_content(self, html_win, content):
even if used correctly in another local keyword.</li>
<li>🐞 - RIDE <strong>DOES NOT KEEP</strong> Test Suites formatting or structure, causing differences in files when used
on other IDE or Editors. The option to not reformat the file is not working.</li>
<li>🐞 - The feature Auto-Save may cause a crash of RIDE in certain systems. This was experienced in AlmaLinux 9.6 with Gnome Unity, Python 3.13 and wxPython 4.2.3. The files are correctly saved, but RIDE closes. It is recommended to set the Auto-Save time as zero if this happens.</li>
<li>🐞 - The feature Auto-Save may cause a crash of RIDE in certain systems. This was experienced in AlmaLinux 9.6 with Gnome Unity, Python 3.13 and wxPython 4.2.3. The files are correctly saved, but RIDE closes. It is recommended to set the Auto-Save time as zero if this happens.</li>
<li>🐞 - In Grid Editor, when showing settings, scrolling down with mouse or using down is not working. You can change
to Text Editor and back to Grid Editor, to restore normal behavior.</li>
<li>🐞 - In Files Explorer, when in floating window, the files tree is not always using all available space.
Expand All @@ -179,6 +179,7 @@ def set_content(self, html_win, content):
</ul>
<p><strong>New Features and Fixes Highlights</strong></p>
<ul class="simple">
<li>Improved spaces detection in test suites reader.</li>
<li>Fix selection of items (variables, test names, keywords) from Project Explorer and highlight at Text Editor.</li>
<li>Fixed Tab spacing in Text Editor. When pressing tab the expected spaces were not written, causing failing steps.</li>
<li>Changed Auto-Save to only save when user is not typing, and if code is in error show message in status bar.</li>
Expand Down Expand Up @@ -237,7 +238,7 @@ def set_content(self, html_win, content):
<pre class="literal-block">python -m robotide.postinstall -install</pre>
<p>or</p>
<pre class="literal-block">ride_postinstall.py -install</pre>
<p>RIDE {VERSION} was released on 22/July/2026.</p>
<p>RIDE {VERSION} was released on 30/July/2026.</p>
<br/>
<!--
<h3>Celebrate the bank holiday, 1st December, Restoration of the Independence of Portugal (from Spain in 1640)!!</h3>
Expand Down
26 changes: 7 additions & 19 deletions src/robotide/lib/robot/parsing/robotreader.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,23 +170,11 @@ def check_separator(self, line):
return
if not self._cell_section:
return
spc = idx = nospc = 0
for idx in range(0, len(line)):
if line[idx] != ' ':
nospc += 1
# if spc <= 2:
# spc = -1
#
if spc >= 2:
break
spc = 0
elif line[idx] == ' ': # and nospc > 0:
spc += 1
if nospc > 0 and spc < 2: # We need a step, not test case or kw name (nospc == 0 and spc <= 2 or )
content = line.rstrip(' \t\xa0')
separator = re.search(r"[ \xa0]{2,}|\t+", content)
if not separator:
return
spc = max(2, spc)
if 2 <= spc <= 10: # This max limit is reasonable
self._spaces = spc
self._space_splitter = re.compile(r"[ \t\xa0]{" + f"{self._spaces}" + "}|\t+")
self._separator_check = True
# print(f"DEBUG: RFLib RobotReader check_separator changed spaces={self._spaces}")
self._spaces = max(2, len(separator.group()))
self._space_splitter = re.compile(r"[ \t\xa0]{" + f"{self._spaces}" + "}|\t+")
self._separator_check = True
# print(f"DEBUG: RFLib RobotReader check_separator changed spaces={self._spaces}")
2 changes: 1 addition & 1 deletion src/robotide/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@
#
# Automatically generated by `tasks.py`.

VERSION = 'v2.2.5dev4'
VERSION = 'v2.2.5dev5'
38 changes: 38 additions & 0 deletions utest/lib/robot/parsing/test_robotreader.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from robotide.lib.robot.parsing.robotreader import RobotReader


def test_reads_two_space_separators_when_four_spaces_are_configured():
reader = RobotReader(spaces=4, lang=["en"])
assert reader._spaces == 4
reader.check_separator("*** Test Cases ***")
assert reader._cell_section is True
assert reader._separator_check is False
reader.check_separator("First test case")
row = " Keyword with two arguments arg1 arg2"

reader.check_separator(row)
assert reader._spaces == 2
assert reader._separator_check is True

assert reader.split_row(row) == [
"",
"Keyword with two arguments",
"arg1",
"arg2",
]

reader.check_separator("*** Keywords ***")
assert reader._cell_section is True
assert reader._separator_check is False
reader.check_separator("Bad Spacing Keyword")
row = " Log Content console=True"

reader.check_separator(row)
assert reader._separator_check is True
assert reader._spaces == 6
assert reader.split_row(row) == [
"",
"Log",
"Content",
"console=True",
]
Loading