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
1 change: 1 addition & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ and this project adheres to http://semver.org/spec/v2.0.0.html[Semantic Versioni
== https://github.com/robotframework/RIDE[Unreleased]

=== Fixed
- 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.

== https://github.com/robotframework/RIDE/blob/master/doc/releasenotes/ride-2.2.4.rst[2.2.4] - 2026-07-09
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.5dev2**) with:
(3.9 <= python <= 3.14) Install current development version (**2.2.5dev3**) with:

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

Expand Down
2 changes: 2 additions & 0 deletions src/robotide/application/CHANGELOG.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Changelog</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /></head><body><div xml:lang="en" class="article" lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id1337">_</a>Changelog</h2></div></div><hr /></div><p>All notable changes to this project will be documented in this file.</p><p>The format is based on <a class="ulink" href="http://keepachangelog.com/en/1.0.0/" target="_top">Keep a Changelog</a>
and this project adheres to <a class="ulink" href="http://semver.org/spec/v2.0.0.html" target="_top">Semantic Versioning</a>.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ulink_url_https_github_com_robotframework_ride_unreleased_ulink">_</a>1. <a class="ulink" href="https://github.com/robotframework/RIDE" target="_top">Unreleased</a></h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_fixed">_</a>1.1. Fixed</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Fix selection of items (variables, test names, keywords) from Project Explorer and highlight at Text Editor.
</li><li class="listitem">
Fixed Tab spacing in Text Editor. When pressing tab the expected spaces were not written, causing failing steps.
</li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ulink_url_https_github_com_robotframework_ride_blob_master_doc_releasenotes_ride_2_2_4_rst_2_2_4_ulink_2026_07_09">_</a>2. <a class="ulink" href="https://github.com/robotframework/RIDE/blob/master/doc/releasenotes/ride-2.2.4.rst" target="_top">2.2.4</a> - 2026-07-09</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_fixed_2">_</a>2.1. Fixed</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Fixed <span class="emphasis"><em>background assign</em></span> setting in Grid Editor preferences.
Expand Down
3 changes: 2 additions & 1 deletion src/robotide/application/releasenotes.py
Original file line number Diff line number Diff line change
Expand Up @@ -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>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>
<li>Applied STC_LEX colorization on Code Editor (external files editor).</li>
Expand Down Expand Up @@ -236,7 +237,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 16/July/2026.</p>
<p>RIDE {VERSION} was released on 22/July/2026.</p>
<br/>
<!--
<h3>Celebrate the bank holiday, 1st December, Restoration of the Independence of Portugal (from Spain in 1640)!!</h3>
Expand Down
56 changes: 30 additions & 26 deletions src/robotide/editor/texteditor.py
Original file line number Diff line number Diff line change
Expand Up @@ -560,29 +560,28 @@ def on_tree_selection(self, message):
# print(f"DEBUG: texteditor.py TextEditorPlugin on_tree_selection ENTER {message=} type={type(message.item)}")
self._editor.store_position()
# self.jump = True
if self.is_focused():
next_datafile_controller = message.item and message.item.datafile_controller
if self._editor.datafile_controller == message.item.datafile_controller == next_datafile_controller:
# print(f"DEBUG: OnTreeSelection Same FILE item type={type(message.item)}\n"
# f"value of {self._save_flag=}")
self._editor.locate_tree_item(message.item)
self.jump = True
return
if self._editor.dirty and not self._apply_txt_changes_to_model(auto=False):
if self._editor.datafile_controller != next_datafile_controller:
self.tree.select_controller_node(self._editor.datafile_controller)
self._editor.set_editor_caret_position()
return
if next_datafile_controller:
self.jump = True
self._open_data_for_controller(next_datafile_controller)
# print(f"DEBUG: OnTreeSelection OTHER FILE item type={type(message.item)}\n"
# f"value of {self._save_flag=}")
wx.CallAfter(self._editor.locate_tree_item, message.item)
self._set_read_only(message)
next_datafile_controller = message.item and message.item.datafile_controller
if self._editor.datafile_controller == message.item.datafile_controller == next_datafile_controller:
# print(f"DEBUG: OnTreeSelection Same FILE item type={type(message.item)}\n"
# f"value of {self._save_flag=}")
position = self._editor.locate_tree_item(message.item)
self._editor.store_position()
wx.CallAfter(self._editor.source_editor.SetSelection, position[0], position[1])
self.jump = True
return
if self._editor.dirty and not self._apply_txt_changes_to_model(auto=False):
if self._editor.datafile_controller != next_datafile_controller:
self.tree.select_controller_node(self._editor.datafile_controller)
self._editor.set_editor_caret_position()
else:
self._editor.GetFocus(None)
return
if next_datafile_controller:
self.jump = True
self._open_data_for_controller(next_datafile_controller)
# print(f"DEBUG: OnTreeSelection OTHER FILE item type={type(message.item)}\n"
# f"value of {self._save_flag=}")
wx.CallAfter(self._editor.locate_tree_item, message.item)
self._set_read_only(message)
self._editor.set_editor_caret_position()

def _set_read_only(self, message):
if not isinstance(message, bool):
Expand Down Expand Up @@ -1293,7 +1292,7 @@ def locate_tree_item(self, item):
name_to_locate = r'^'+item.name+r'.*$'
position = self.source_editor.FindText(section_start, search_end, name_to_locate, STC_FIND_REGEXP)
# print(f"DEBUG: TextEditor locate_tree_item name_to_locate={name_to_locate} position={position}\n"
# f"curpos={self._position} {self.is_saving=}")
# f"curpos={self._position}")
if position[0] != -1:
# DEBUG: Make colours configurable?
self.source_editor.SetSelBackground(True, Colour('orange'))
Expand All @@ -1304,6 +1303,7 @@ def locate_tree_item(self, item):
self.source_editor.SetCurrentPos(position[1])
self.source_editor.SetAnchor(position[0])
self.source_editor.SetSelection(position[0], position[1])
self.source_editor.SetCurrentPos(position[1])
self.source_editor.SetFocusFromKbd()
self.source_editor_parent.SetFocus()
self.source_editor.Update()
Expand All @@ -1313,10 +1313,13 @@ def locate_tree_item(self, item):
self.source_editor.LineScrollUp()
self.source_editor.SetCurrentPos(1)
self.source_editor.SetAnchor(0)
self.source_editor.SetSelection(0, self.source_editor.GetLineEndPosition(0))
position = (0, self.source_editor.GetLineEndPosition(0))
self.source_editor.SetSelection(position[0], position[1])
self.source_editor.SetCurrentPos(position[1])
self.source_editor.SetFocusFromKbd()
self.source_editor_parent.SetFocus()
self.source_editor.Update()
return position[0], position[1]

def words_cache(self, doc_size: int):
if doc_size != self.doc_size: # DEBUG The initial idea was to not update words list if no changes in doc
Expand Down Expand Up @@ -2923,7 +2926,8 @@ def on_update_ui(self, evt):
self.BraceBadLight(brace_at_caret)
else:
self.BraceHighlight(brace_at_caret, brace_opposite)
self.stylizer.stylize()
if self.GetLength() > 1: # Was calling stylize before loading document
self.stylizer.stylize()

def _show_keyword_details(self, value, coords=None):
"""
Expand Down Expand Up @@ -2984,7 +2988,7 @@ def SetUpEditor(self, tab_size=4, tab_markers=True, m_bg='', m_fg='', caret_fg:
self.SetIndentationGuides(tab_markers) # Show indent guides
self.SetBackSpaceUnIndents(True) # Backspace unindents rather than delete 1 space
# self.SetTabIndents(True) # Tab key indents
# self.SetTabWidth(tab_size) # Proscribed tab size for wx
self.SetTabWidth(tab_size) # Proscribed tab size for wx
self.SetUseTabs(False) # Use spaces rather than tabs, or TabTimmy will complain!
# White space
self.SetViewWhiteSpace(self.visible_spaces) # View white space
Expand Down
5 changes: 3 additions & 2 deletions src/robotide/lib/compat/pygments/robotframework.py
Original file line number Diff line number Diff line change
Expand Up @@ -315,9 +315,10 @@ def __init__(self, template_setter=None, new_lang=None):
pass
else:
self.new_lang = new_lang
if self.new_lang is None:
if self.new_lang is None or isinstance(self.new_lang, list) :
self.new_lang = Language.from_name('En')
# print(f"DEBUG: robotframework.py Setting self.new_lang={self.new_lang}\n")
# print(f"DEBUG: robotframework.py Setting self.new_lang={self.new_lang}\n"
# f"type of self.new_lang={type(self.new_lang)} ")
self.normalized_settings = normalize_dict(self.new_lang.settings)
self._keyword_settings = (get_key_by_value(self.normalized_settings,'suitesetup'),
get_key_by_value(self.normalized_settings, 'suiteprecondition'),
Expand Down
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.5dev2'
VERSION = 'v2.2.5dev3'
Loading