Skip to content

Commit 6679e68

Browse files
authored
Merge pull request #3733 from rlaverde/pr-eol-bug
PR: Fix EOL status after changing it
2 parents 1cb7950 + 26c9f5c commit 6679e68

File tree

4 files changed

+23
-14
lines changed

4 files changed

+23
-14
lines changed

Diff for: spyder/plugins/editor.py

+10-9
Original file line numberDiff line numberDiff line change
@@ -926,13 +926,13 @@ def get_plugin_actions(self):
926926

927927
self.win_eol_action = create_action(self,
928928
_("Carriage return and line feed (Windows)"),
929-
toggled=lambda: self.toggle_eol_chars('nt'))
929+
toggled=lambda checked: self.toggle_eol_chars('nt', checked))
930930
self.linux_eol_action = create_action(self,
931931
_("Line feed (UNIX)"),
932-
toggled=lambda: self.toggle_eol_chars('posix'))
932+
toggled=lambda checked: self.toggle_eol_chars('posix', checked))
933933
self.mac_eol_action = create_action(self,
934934
_("Carriage return (Mac)"),
935-
toggled=lambda: self.toggle_eol_chars('mac'))
935+
toggled=lambda checked: self.toggle_eol_chars('mac', checked))
936936
eol_action_group = QActionGroup(self)
937937
eol_actions = (self.win_eol_action, self.linux_eol_action,
938938
self.mac_eol_action)
@@ -1180,7 +1180,7 @@ def register_editorstack(self, editorstack):
11801180
self.encoding_status.encoding_changed)
11811181
editorstack.sig_editor_cursor_position_changed.connect(
11821182
self.cursorpos_status.cursor_position_changed)
1183-
editorstack.refresh_eol_chars.connect(self.eol_status.eol_changed)
1183+
editorstack.sig_refresh_eol_chars.connect(self.eol_status.eol_changed)
11841184

11851185
editorstack.set_help(self.help)
11861186
editorstack.set_io_actions(self.new_action, self.open_action,
@@ -1264,7 +1264,7 @@ def register_editorstack(self, editorstack):
12641264
editorstack.refresh_file_dependent_actions.connect(
12651265
self.refresh_file_dependent_actions)
12661266
editorstack.refresh_save_all_action.connect(self.refresh_save_all_action)
1267-
editorstack.refresh_eol_chars.connect(self.refresh_eol_chars)
1267+
editorstack.sig_refresh_eol_chars.connect(self.refresh_eol_chars)
12681268
editorstack.save_breakpoints.connect(self.save_breakpoints)
12691269
editorstack.text_changed_at.connect(self.text_changed_at)
12701270
editorstack.current_file_changed.connect(self.current_file_changed)
@@ -2059,10 +2059,11 @@ def run_winpdb(self):
20592059
# must be changed to None in this case.)
20602060
programs.run_program(WINPDB_PATH, [fname] + args, cwd=wdir or None)
20612061

2062-
def toggle_eol_chars(self, os_name):
2063-
editor = self.get_current_editor()
2064-
if self.__set_eol_chars:
2065-
editor.set_eol_chars(sourcecode.get_eol_chars_from_os_name(os_name))
2062+
def toggle_eol_chars(self, os_name, checked):
2063+
if checked:
2064+
editor = self.get_current_editor()
2065+
if self.__set_eol_chars:
2066+
editor.set_eol_chars(sourcecode.get_eol_chars_from_os_name(os_name))
20662067

20672068
@Slot(bool)
20682069
def toggle_show_blanks(self, checked):

Diff for: spyder/widgets/editor.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ class EditorStack(QWidget):
278278
readonly_changed = Signal(bool)
279279
encoding_changed = Signal(str)
280280
sig_editor_cursor_position_changed = Signal(int, int)
281-
refresh_eol_chars = Signal(str)
281+
sig_refresh_eol_chars = Signal(str)
282282
starting_long_process = Signal(str)
283283
ending_long_process = Signal(str)
284284
redirect_stdio = Signal(bool)
@@ -1628,8 +1628,11 @@ def modification_changed(self, state=None, index=None, editor_id=None):
16281628
self.refresh_save_all_action.emit()
16291629
# Refreshing eol mode
16301630
eol_chars = finfo.editor.get_line_separator()
1631+
self.refresh_eol_chars(eol_chars)
1632+
1633+
def refresh_eol_chars(self, eol_chars):
16311634
os_name = sourcecode.get_os_name_from_eol_chars(eol_chars)
1632-
self.refresh_eol_chars.emit(os_name)
1635+
self.sig_refresh_eol_chars.emit(os_name)
16331636

16341637

16351638
#------ Load, reload
@@ -1740,6 +1743,7 @@ def create_new_editor(self, fname, enc, txt, set_current, new=False,
17401743
editor.zoom_in.connect(lambda: self.zoom_in.emit())
17411744
editor.zoom_out.connect(lambda: self.zoom_out.emit())
17421745
editor.zoom_reset.connect(lambda: self.zoom_reset.emit())
1746+
editor.sig_eol_chars_changed.connect(lambda eol_chars: self.refresh_eol_chars(eol_chars))
17431747
if self.outlineexplorer is not None:
17441748
# Removing editor reference from outline explorer settings:
17451749
editor.destroyed.connect(lambda obj=editor:
@@ -2140,7 +2144,7 @@ def register_editorstack(self, editorstack):
21402144
self.encoding_status.encoding_changed)
21412145
editorstack.sig_editor_cursor_position_changed.connect(
21422146
self.cursorpos_status.cursor_position_changed)
2143-
editorstack.refresh_eol_chars.connect(self.eol_status.eol_changed)
2147+
editorstack.sig_refresh_eol_chars.connect(self.eol_status.eol_changed)
21442148
self.plugin.register_editorstack(editorstack)
21452149
oe_btn = create_toolbutton(self)
21462150
oe_btn.setDefaultAction(self.outlineexplorer.visibility_action)

Diff for: spyder/widgets/mixins.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,12 @@ def set_eol_chars(self, text):
125125
if not is_text_string(text): # testing for QString (PyQt API#1)
126126
text = to_text_string(text)
127127
eol_chars = sourcecode.get_eol_chars(text)
128-
if eol_chars is not None and self.eol_chars is not None:
129-
self.document().setModified(True)
128+
is_document_modified = eol_chars is not None and self.eol_chars is not None
130129
self.eol_chars = eol_chars
130+
if is_document_modified:
131+
self.document().setModified(True)
132+
if self.sig_eol_chars_changed is not None:
133+
self.sig_eol_chars_changed.emit(eol_chars)
131134

132135
def get_line_separator(self):
133136
"""Return line separator based on current EOL mode"""

Diff for: spyder/widgets/sourcecode/base.py

+1
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ class TextEditBaseWidget(QPlainTextEdit, BaseEditMixin):
222222
zoom_out = Signal()
223223
zoom_reset = Signal()
224224
focus_changed = Signal()
225+
sig_eol_chars_changed = Signal(str)
225226

226227
def __init__(self, parent=None):
227228
QPlainTextEdit.__init__(self, parent)

0 commit comments

Comments
 (0)