View Issue Details

IDProjectCategoryView StatusLast Update
0017152LazarusIDEpublic2010-08-23 18:44
ReporterDenis Golovan Assigned ToMartin Friebe  
Status closedResolutionfixed 
Product Version0.9.28.3 (SVN) 
Target Version0.9.30Fixed in Version0.9.29 (SVN) 
Summary0017152: Regression: Multi-keys shortcuts conflict with single-key shortcut

Until recently (within 2-3 months period) shortcuts made of multiple-keys worked fine.
But now (rev. 27055) shortcut defined as Ctrl+X+Ctrl+S (emacs-like saving) messes with Ctrl+S (emacs-like search).
The problem looks like Ctrl+S in this case receives some priority and Ctrl+X+Ctrl+S command does not get called at all.
TagsNo tags attached.
Fixed in Revision27084
Attached Files


has duplicate 0017637 closedMartin Friebe Editor shortcut mixup 


Martin Friebe

2010-08-11 20:12

manager   ~0040149

Can you attach your editoroptions.xml file (should be in /home/username/.lazarus

Are you sure ctrl-x is not assigned to any other action? Maybe it's a menu shortcut?

2010-08-11 20:25


editoroptions.xml (10,173 bytes)   
<?xml version="1.0"?>
  <EditorOptions Version="6">
    <Color Version="6">
      <LangObjectPascal Version="6">
        <ColorScheme Value="Ocean"/>
          <ahaRightMargin Foreground="clBtnFace" UseSchemeGlobals="False"/>
          <Symbol Foreground="clWhite" UseSchemeGlobals="False"/>
          <Identifier Foreground="16775424" UseSchemeGlobals="False"/>
          <Reserved_word Foreground="65356" UseSchemeGlobals="False"/>
      <default Count="29">
        <Version Value="6"/>
        <move_cursor_to_line_start Value="65,1,0,0,0,0,0,0"/>
        <move_cursor_to_line_end Value="69,1,0,0,0,0,0,0"/>
        <find_incremental Value="83,1,0,0,0,0,0,0"/>
        <cut_selection_to_clipboard Value="87,1,0,0,0,0,0,0"/>
        <save Value="88,1,83,1,0,0,0,0"/>
        <cut_selected_components_to_clipboard Value="46,2,0,0,0,0,0,0"/>
        <replace_text Value="81,1,65,0,0,0,0,0"/>
        <copy_selection_to_clipboard Value="87,4,0,0,45,1,0,0"/>
        <paste_clipboard_to_current_position Value="89,1,0,0,45,2,0,0"/>
        <delete_current_line Value="0,0,0,0,0,0,0,0"/>
        <indent_block Value="73,1,0,0,0,0,0,0"/>
        <unindent_block Value="85,1,0,0,0,0,0,0"/>
        <uppercase_selection Value="0,0,0,0,0,0,0,0"/>
        <lowercase_selection Value="0,0,0,0,0,0,0,0"/>
        <select_word Value="0,0,0,0,0,0,0,0"/>
        <select_line Value="0,0,0,0,0,0,0,0"/>
        <delete_to_beginning_of_line Value="3,0,0,0,0,0,0,0"/>
        <toggle_marker_0 Value="48,3,0,0,0,0,0,0"/>
        <toggle_marker_1 Value="49,3,0,0,0,0,0,0"/>
        <toggle_marker_2 Value="50,3,0,0,0,0,0,0"/>
        <toggle_marker_3 Value="51,3,0,0,0,0,0,0"/>
        <toggle_marker_4 Value="52,3,0,0,0,0,0,0"/>
        <toggle_marker_5 Value="53,3,0,0,0,0,0,0"/>
        <toggle_marker_6 Value="54,3,0,0,0,0,0,0"/>
        <toggle_marker_7 Value="55,3,0,0,0,0,0,0"/>
        <toggle_marker_8 Value="56,3,0,0,0,0,0,0"/>
        <toggle_marker_9 Value="57,3,0,0,0,0,0,0"/>
        <break_line__leave_cursor Value="0,0,0,0,0,0,0,0"/>
        <delete_to_end_of_line Value="75,1,0,0,81,1,89,0"/>
        <word_completion Value="0,0,0,0,0,0,0,0"/>
        <find_previous Value="82,1,0,0,0,0,0,0"/>
        <go_to_next_editor Value="39,4,0,0,0,0,0,0"/>
        <go_to_prior_editor Value="37,4,0,0,0,0,0,0"/>
        <move_cursor_up_one_page Value="86,4,0,0,0,0,0,0"/>
        <move_cursor_down_one_page Value="86,1,0,0,0,0,0,0"/>
        <move_cursor_word_left Value="66,4,0,0,0,0,0,0"/>
        <move_cursor_word_right Value="70,4,0,0,0,0,0,0"/>
        <delete_to_start_of_word Value="8,4,0,0,0,0,0,0"/>
        <move_cursor_to_absolute_beginning Value="188,6,0,0,0,0,0,0"/>
        <move_cursor_to_absolute_end Value="190,6,0,0,0,0,0,0"/>
        <move_cursor_to_text_start_in_line Value="77,4,0,0,0,0,0,0"/>
        <toggle_current_word_highlight Value="0,0,0,0,0,0,0,0"/>
        <Item1 Name="Copy selection to clipboard">
          <KeyA Default="False" Key1="87" Shift1="4"/>
          <KeyB Default="False" Key1="45" Shift1="1"/>
        <Item2 Name="Cut selected Components to clipboard">
          <KeyA Default="False" Key1="46" Shift1="2"/>
          <KeyB Default="False" Key1="46" Shift1="2"/>
        <Item3 Name="Cut selection to clipboard">
          <KeyA Default="False" Key1="87" Shift1="1"/>
          <KeyB Default="False" Key1="46" Shift1="2"/>
        <Item4 Name="Delete char at cursor">
          <KeyB Default="False" Key1="68" Shift1="1"/>
          <KeyA Default="False" Key1="46"/>
        <Item5 Name="Delete current line">
          <KeyA Default="False" Key1="89" Shift1="1"/>
        <Item6 Name="Delete to beginning of line">
          <KeyA Default="False" Key1="3"/>
        <Item7 Name="Delete to end of line">
          <KeyA Default="False" Key1="75" Shift1="1"/>
          <KeyB Default="False" Key1="81" Shift1="1" Key2="89"/>
        <Item8 Name="Delete to end of word">
          <KeyB Default="False" Key1="68" Shift1="4"/>
          <KeyA Default="False" Key1="84" Shift1="1"/>
        <Item9 Name="Delete to start of word">
          <KeyA Default="False" Key1="8" Shift1="4"/>
        <Item10 Name="Find incremental">
          <KeyA Default="False" Key1="83" Shift1="1"/>
        <Item11 Name="Find previous">
          <KeyA Default="False" Key1="82" Shift1="1"/>
        <Item12 Name="Go to line number">
          <KeyA Default="False" Key1="71" Shift1="4"/>
          <KeyB Default="False" Key1="81" Shift1="1" Key2="71"/>
        <Item13 Name="Go to next editor">
          <KeyA Default="False" Key1="39" Shift1="4"/>
        <Item14 Name="Go to prior editor">
          <KeyA Default="False" Key1="37" Shift1="4"/>
        <Item15 Name="Move cursor down one page">
          <KeyA Default="False" Key1="86" Shift1="1"/>
        <Item16 Name="Move cursor to absolute beginning">
          <KeyA Default="False" Key1="188" Shift1="6"/>
        <Item17 Name="Move cursor to absolute end">
          <KeyA Default="False" Key1="190" Shift1="6"/>
        <Item18 Name="Move cursor to line end">
          <KeyA Default="False" Key1="69" Shift1="1"/>
        <Item19 Name="Move cursor to line start">
          <KeyA Default="False" Key1="65" Shift1="1"/>
        <Item20 Name="Move cursor to text start in line">
          <KeyA Default="False" Key1="77" Shift1="4"/>
        <Item21 Name="Move cursor up one page">
          <KeyA Default="False" Key1="86" Shift1="4"/>
        <Item22 Name="Move cursor word left">
          <KeyA Default="False" Key1="66" Shift1="4"/>
        <Item23 Name="Move cursor word right">
          <KeyA Default="False" Key1="70" Shift1="4"/>
        <Item24 Name="Paste clipboard to current position">
          <KeyA Default="False" Key1="89" Shift1="1"/>
          <KeyB Default="False" Key1="45" Shift1="2"/>
        <Item25 Name="Replace text">
          <KeyA Default="False" Key1="81" Shift1="1" Key2="65"/>
          <KeyB Default="False" Key1="81" Shift1="1" Key2="65"/>
        <Item26 Name="Save">
          <KeyA Default="False" Key1="88" Shift1="1" Key2="83" Shift2="1"/>
        <Item27 Name="Select all">
          <KeyA Default="False"/>
        <Item28 Name="Stop program">
          <KeyA Default="False" Key1="113" Shift1="4"/>
        <Item29 Name="Word completion">
          <KeyA Default="False" Key1="87" Shift1="1"/>
        <Item30 Name="Select word">
          <KeyA Default="False" Key1="75" Shift1="1" Key2="84"/>
        <Item31 Name="Stop program">
          <KeyA Default="False" Key1="113" Shift1="4"/>
        <Item32 Name="Toggle Current-Word highlight">
          <KeyA Default="False" Key1="77" Shift1="4"/>
        <Item33 Name="Toggle marker 0">
          <KeyA Default="False" Key1="48" Shift1="3"/>
          <KeyB Default="False" Key1="75" Shift1="1" Key2="48"/>
        <Item34 Name="Toggle marker 1">
          <KeyB Default="False" Key1="75" Shift1="1" Key2="49"/>
          <KeyA Default="False" Key1="49" Shift1="3"/>
        <Item35 Name="Toggle marker 2">
          <KeyB Default="False" Key1="75" Shift1="1" Key2="50"/>
          <KeyA Default="False" Key1="50" Shift1="3"/>
        <Item36 Name="Toggle marker 3">
          <KeyB Default="False" Key1="75" Shift1="1" Key2="51"/>
          <KeyA Default="False" Key1="51" Shift1="3"/>
        <Item37 Name="Toggle marker 4">
          <KeyB Default="False" Key1="75" Shift1="1" Key2="52"/>
          <KeyA Default="False" Key1="52" Shift1="3"/>
        <Item38 Name="Toggle marker 5">
          <KeyB Default="False" Key1="75" Shift1="1" Key2="53"/>
          <KeyA Default="False" Key1="53" Shift1="3"/>
        <Item39 Name="Toggle marker 6">
          <KeyB Default="False" Key1="75" Shift1="1" Key2="54"/>
          <KeyA Default="False" Key1="54" Shift1="3"/>
        <Item40 Name="Toggle marker 7">
          <KeyB Default="False" Key1="75" Shift1="1" Key2="55"/>
          <KeyA Default="False" Key1="55" Shift1="3"/>
        <Item41 Name="Toggle marker 8">
          <KeyB Default="False" Key1="75" Shift1="1" Key2="56"/>
          <KeyA Default="False" Key1="56" Shift1="3"/>
        <Item42 Name="Toggle marker 9">
          <KeyA Default="False" Key1="57" Shift1="3"/>
          <KeyB Default="False" Key1="75" Shift1="1" Key2="57"/>
        <Item43 Name="Unindent block">
          <KeyA Default="False" Key1="85" Shift1="1"/>
          <KeyB Default="False" Key1="75" Shift1="1" Key2="85"/>
        <Item44 Name="Uppercase selection">
          <KeyA Default="False" Key1="75" Shift1="1" Key2="78"/>
        <Item45 Name="Word completion">
          <KeyA Default="False" Key1="87" Shift1="1"/>
        <Item46 Name="Word completion">
          <KeyA Default="False" Key1="87" Shift1="1"/>
    <CodeTools CodeTemplateFileName="/home/denis/.lazarus/lazarus.dci" AutoDelayInMSec="500" AutoRemoveEmptyMethods="True" CompletionLongLineHintTypeCompletionLongLineHintType="sclpExtendRightOnly"/>
    <Display ShowLineNumbers="False" ShowOnlyLineNumbersMultiplesOf="1" EditorFont="Monospace" EditorFontHeight="-19"/>
    <CodeFolding UseCodeFolding="False"/>
      <Editor EnhanceHomeKey="True" EnhanceEndKey="True" TabIndent="True" TabPosition="tpTop"/>
editoroptions.xml (10,173 bytes)   

Denis Golovan

2010-08-11 20:26

reporter   ~0040150

Attached. I just checked using Find key combination - Ctrl + X is assigned only as part of Ctrl + X + Ctrl + S combo.

Martin Friebe

2010-08-11 23:03

manager   ~0040156

The problem is also present on windows.

On a technical note: It is triggered because the input is first tested for menu-shortcuts, before it can be processed by SynEdit (which would know about the combination)

Below stack show "DOKEYDOWNBEFOREINTERFACE" catches the key.

#0 INCREMENTALSEARCH(0xd0f09e0, false, false) at sourceeditor.pp:7448
0000001 BEGININCREMENTALFIND(0xd0f09e0) at sourceeditor.pp:5945
0000002 INCREMENTALFINDCLICKED(0xbd902d0, 0xbd58790) at sourceeditor.pp:8325
0000003 MENUITEMCLICK(0xbd58790, 0xbc75d00) at menuintf.pas:551
0000004 MENUITEMCLICK(0xbd58790, 0xbc75d00) at menuintf.pas:1610
0000005 CLICK(0xbc75d00) at include\
0000006 HANDLEITEM(0x970f850, 0xbc75d00) at include\
0000007 ISSHORTCUT(0xb69b178, @0x970fbe0: {MSG = 48384, CHARCODE = 83, UNUSED = 2416, KEYDATA = 2031617, RESULT = 0}) at include\
0000008 ISSHORTCUT(0xb75fef8, @0x970fbe0: {MSG = 48384, CHARCODE = 83, UNUSED = 2416, KEYDATA = 2031617, RESULT = 0}) at include\
0000009 ISSHORTCUT(0x2cc4f0, @0x970fbe0: {MSG = 48384, CHARCODE = 83, UNUSED = 2416, KEYDATA = 2031617, RESULT = 0}) at include\
0000010 DOKEYDOWNBEFOREINTERFACE(0xd0f09e0, @0x970fbe0: {MSG = 48384, CHARCODE = 83, UNUSED = 2416, KEYDATA = 2031617, RESULT = 0}) at include\
0000011 DOKEYDOWNBEFOREINTERFACE(0xddbb210, @0x970fbe0: {MSG = 48384, CHARCODE = 83, UNUSED = 2416, KEYDATA = 2031617, RESULT = 0}) at include\
0000012 CNKEYDOWN(0xddbb210, @0x970fbe0: {MSG = 48384, CHARCODE = 83, UNUSED = 2416, KEYDATA = 2031617, RESULT = 0}) at include\
0000013 DISPATCH(0x970f780, @0x0: 0) at ..\inc\
0000015 WNDPROC(0xddbb210, @0x970fbe0: {MSG = 48384, WPARAM = 158335059, LPARAM = 2031617, RESULT = 0, WPARAMLO = 83, WPARAMHI = 2416, LPARAMLO = 1, LPARAMHI = 31, RESULTLO = 0, RESULTHI = 0}) at include\
0000016 WNDPROC(0xddbb210, @0x970fbe0: {MSG = 48384, WPARAM = 158335059, LPARAM = 2031617, RESULT = 0, WPARAMLO = 83, WPARAMHI = 2416, LPARAMLO = 1, LPARAMHI = 31, RESULTLO = 0, RESULTHI = 0}) at synedit.pp:5422
0000017 DELIVERMESSAGE(0xddbb210, @0x970fbe0: 0) at lclmessageglue.pas:110
0000018 WINDOWPROC(2426294, 256, 83, 2031617) at

Paul Ishenin

2010-08-23 17:42

manager   ~0040417

Is it still not fixed?

Martin Friebe

2010-08-23 18:08

manager   ~0040418

Actually it looks like it was fixed by your commit in 27084.
I forgot to test/update the report.

@Denis Golovan:
Please test too, and close if ok.

Denis Golovan

2010-08-23 18:44

reporter   ~0040419

Looks like it works now. Thanks

Issue History

Date Modified Username Field Change
2010-08-11 19:40 Denis Golovan New Issue
2010-08-11 19:40 Denis Golovan Widgetset => GTK 2
2010-08-11 20:12 Martin Friebe Note Added: 0040149
2010-08-11 20:25 Denis Golovan File Added: editoroptions.xml
2010-08-11 20:26 Denis Golovan Note Added: 0040150
2010-08-11 21:14 Martin Friebe LazTarget => 0.9.30
2010-08-11 21:14 Martin Friebe Status new => confirmed
2010-08-11 21:14 Martin Friebe Target Version => 0.9.30
2010-08-11 23:03 Martin Friebe Note Added: 0040156
2010-08-23 17:42 Paul Ishenin Note Added: 0040417
2010-08-23 17:42 Paul Ishenin Status confirmed => feedback
2010-08-23 18:08 Martin Friebe Fixed in Revision => 27084
2010-08-23 18:08 Martin Friebe Widgetset GTK 2 =>
2010-08-23 18:08 Martin Friebe Status feedback => resolved
2010-08-23 18:08 Martin Friebe Fixed in Version => 0.9.29 (SVN)
2010-08-23 18:08 Martin Friebe Resolution open => fixed
2010-08-23 18:08 Martin Friebe Assigned To => Martin Friebe
2010-08-23 18:08 Martin Friebe Note Added: 0040418
2010-08-23 18:44 Denis Golovan Status resolved => closed
2010-08-23 18:44 Denis Golovan Note Added: 0040419
2010-10-15 12:57 Martin Friebe Relationship added has duplicate 0017637