forked from qt-creator/qt-creator
		
	Make the way completion is triggered configurable
Now it's possible to choose between having completion popup manually, when triggered or always.
This commit is contained in:
		@@ -80,7 +80,21 @@ QWidget *CompletionSettingsPage::createPage(QWidget *parent)
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    int completionTriggerIndex = 0;
 | 
			
		||||
    switch (settings.m_completionTrigger) {
 | 
			
		||||
    case TextEditor::ManualCompletion:
 | 
			
		||||
        completionTriggerIndex = 0;
 | 
			
		||||
        break;
 | 
			
		||||
    case TextEditor::TriggeredCompletion:
 | 
			
		||||
        completionTriggerIndex = 1;
 | 
			
		||||
        break;
 | 
			
		||||
    case TextEditor::AutomaticCompletion:
 | 
			
		||||
        completionTriggerIndex = 2;
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    m_page->caseSensitivity->setCurrentIndex(caseSensitivityIndex);
 | 
			
		||||
    m_page->completionTrigger->setCurrentIndex(completionTriggerIndex);
 | 
			
		||||
    m_page->autoInsertBrackets->setChecked(settings.m_autoInsertBrackets);
 | 
			
		||||
    m_page->partiallyComplete->setChecked(settings.m_partiallyComplete);
 | 
			
		||||
    m_page->spaceAfterFunctionName->setChecked(settings.m_spaceAfterFunctionName);
 | 
			
		||||
@@ -88,8 +102,9 @@ QWidget *CompletionSettingsPage::createPage(QWidget *parent)
 | 
			
		||||
    if (m_searchKeywords.isEmpty()) {
 | 
			
		||||
        QTextStream(&m_searchKeywords) << m_page->caseSensitivityLabel->text()
 | 
			
		||||
                << ' ' << m_page->autoInsertBrackets->text()
 | 
			
		||||
		<< ' ' << m_page->partiallyComplete->text()
 | 
			
		||||
		<< ' ' << m_page->spaceAfterFunctionName->text();
 | 
			
		||||
                << ' ' << m_page->completionTriggerLabel->text()
 | 
			
		||||
                << ' ' << m_page->partiallyComplete->text()
 | 
			
		||||
                << ' ' << m_page->spaceAfterFunctionName->text();
 | 
			
		||||
        m_searchKeywords.remove(QLatin1Char('&'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -100,6 +115,7 @@ void CompletionSettingsPage::apply()
 | 
			
		||||
{
 | 
			
		||||
    TextEditor::CompletionSettings settings;
 | 
			
		||||
    settings.m_caseSensitivity = caseSensitivity();
 | 
			
		||||
    settings.m_completionTrigger = completionTrigger();
 | 
			
		||||
    settings.m_autoInsertBrackets = m_page->autoInsertBrackets->isChecked();
 | 
			
		||||
    settings.m_partiallyComplete = m_page->partiallyComplete->isChecked();
 | 
			
		||||
    settings.m_spaceAfterFunctionName = m_page->spaceAfterFunctionName->isChecked();
 | 
			
		||||
@@ -123,3 +139,15 @@ TextEditor::CaseSensitivity CompletionSettingsPage::caseSensitivity() const
 | 
			
		||||
        return TextEditor::FirstLetterCaseSensitive;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TextEditor::CompletionTrigger CompletionSettingsPage::completionTrigger() const
 | 
			
		||||
{
 | 
			
		||||
    switch (m_page->completionTrigger->currentIndex()) {
 | 
			
		||||
    case 0:
 | 
			
		||||
        return TextEditor::ManualCompletion;
 | 
			
		||||
    case 1:
 | 
			
		||||
        return TextEditor::TriggeredCompletion;
 | 
			
		||||
    default:
 | 
			
		||||
        return TextEditor::AutomaticCompletion;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -60,6 +60,7 @@ public:
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    TextEditor::CaseSensitivity caseSensitivity() const;
 | 
			
		||||
    TextEditor::CompletionTrigger completionTrigger() const;
 | 
			
		||||
 | 
			
		||||
    Ui_CompletionSettingsPage *m_page;
 | 
			
		||||
    QString m_searchKeywords;
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,8 @@
 | 
			
		||||
   <rect>
 | 
			
		||||
    <x>0</x>
 | 
			
		||||
    <y>0</y>
 | 
			
		||||
    <width>400</width>
 | 
			
		||||
    <height>300</height>
 | 
			
		||||
    <width>359</width>
 | 
			
		||||
    <height>244</height>
 | 
			
		||||
   </rect>
 | 
			
		||||
  </property>
 | 
			
		||||
  <layout class="QVBoxLayout" name="verticalLayout">
 | 
			
		||||
@@ -16,76 +16,95 @@
 | 
			
		||||
     <property name="title">
 | 
			
		||||
      <string>Behavior</string>
 | 
			
		||||
     </property>
 | 
			
		||||
     <layout class="QVBoxLayout" name="verticalLayout_2">
 | 
			
		||||
      <item>
 | 
			
		||||
       <layout class="QHBoxLayout" name="horizontalLayout">
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QLabel" name="caseSensitivityLabel">
 | 
			
		||||
          <property name="text">
 | 
			
		||||
           <string>&Case-sensitivity:</string>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="buddy">
 | 
			
		||||
           <cstring>caseSensitivity</cstring>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <spacer name="horizontalSpacer_2">
 | 
			
		||||
          <property name="orientation">
 | 
			
		||||
           <enum>Qt::Horizontal</enum>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="sizeType">
 | 
			
		||||
           <enum>QSizePolicy::Maximum</enum>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="sizeHint" stdset="0">
 | 
			
		||||
           <size>
 | 
			
		||||
            <width>20</width>
 | 
			
		||||
            <height>20</height>
 | 
			
		||||
           </size>
 | 
			
		||||
          </property>
 | 
			
		||||
         </spacer>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QComboBox" name="caseSensitivity">
 | 
			
		||||
          <property name="sizePolicy">
 | 
			
		||||
           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
 | 
			
		||||
            <horstretch>0</horstretch>
 | 
			
		||||
            <verstretch>0</verstretch>
 | 
			
		||||
           </sizepolicy>
 | 
			
		||||
          </property>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>Full</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>None</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>First Letter</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <spacer name="horizontalSpacer">
 | 
			
		||||
          <property name="orientation">
 | 
			
		||||
           <enum>Qt::Horizontal</enum>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="sizeHint" stdset="0">
 | 
			
		||||
           <size>
 | 
			
		||||
            <width>0</width>
 | 
			
		||||
            <height>0</height>
 | 
			
		||||
           </size>
 | 
			
		||||
          </property>
 | 
			
		||||
         </spacer>
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
     <layout class="QGridLayout" name="gridLayout">
 | 
			
		||||
      <item row="0" column="0">
 | 
			
		||||
       <widget class="QLabel" name="caseSensitivityLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>&Case-sensitivity:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="buddy">
 | 
			
		||||
         <cstring>caseSensitivity</cstring>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item>
 | 
			
		||||
      <item row="0" column="2">
 | 
			
		||||
       <widget class="QComboBox" name="caseSensitivity">
 | 
			
		||||
        <property name="sizePolicy">
 | 
			
		||||
         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
 | 
			
		||||
          <horstretch>0</horstretch>
 | 
			
		||||
          <verstretch>0</verstretch>
 | 
			
		||||
         </sizepolicy>
 | 
			
		||||
        </property>
 | 
			
		||||
        <item>
 | 
			
		||||
         <property name="text">
 | 
			
		||||
          <string>Full</string>
 | 
			
		||||
         </property>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <property name="text">
 | 
			
		||||
          <string>None</string>
 | 
			
		||||
         </property>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <property name="text">
 | 
			
		||||
          <string>First Letter</string>
 | 
			
		||||
         </property>
 | 
			
		||||
        </item>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="0" column="3" colspan="2">
 | 
			
		||||
       <spacer name="horizontalSpacer">
 | 
			
		||||
        <property name="orientation">
 | 
			
		||||
         <enum>Qt::Horizontal</enum>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="sizeHint" stdset="0">
 | 
			
		||||
         <size>
 | 
			
		||||
          <width>70</width>
 | 
			
		||||
          <height>24</height>
 | 
			
		||||
         </size>
 | 
			
		||||
        </property>
 | 
			
		||||
       </spacer>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="1" column="0" colspan="2">
 | 
			
		||||
       <widget class="QLabel" name="completionTriggerLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Activate completion:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="1" column="2" colspan="2">
 | 
			
		||||
       <widget class="QComboBox" name="completionTrigger">
 | 
			
		||||
        <item>
 | 
			
		||||
         <property name="text">
 | 
			
		||||
          <string>Manually</string>
 | 
			
		||||
         </property>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <property name="text">
 | 
			
		||||
          <string>When Triggered</string>
 | 
			
		||||
         </property>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <property name="text">
 | 
			
		||||
          <string>Always</string>
 | 
			
		||||
         </property>
 | 
			
		||||
        </item>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="1" column="4">
 | 
			
		||||
       <spacer name="horizontalSpacer_3">
 | 
			
		||||
        <property name="orientation">
 | 
			
		||||
         <enum>Qt::Horizontal</enum>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="sizeHint" stdset="0">
 | 
			
		||||
         <size>
 | 
			
		||||
          <width>40</width>
 | 
			
		||||
          <height>24</height>
 | 
			
		||||
         </size>
 | 
			
		||||
        </property>
 | 
			
		||||
       </spacer>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="2" column="0" colspan="3">
 | 
			
		||||
       <widget class="QCheckBox" name="autoInsertBrackets">
 | 
			
		||||
        <property name="toolTip">
 | 
			
		||||
         <string>Automatically insert (, ) and ; when appropriate.</string>
 | 
			
		||||
@@ -98,7 +117,7 @@
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item>
 | 
			
		||||
      <item row="3" column="0" colspan="3">
 | 
			
		||||
       <widget class="QCheckBox" name="partiallyComplete">
 | 
			
		||||
        <property name="toolTip">
 | 
			
		||||
         <string>Insert the common prefix of available completion items.</string>
 | 
			
		||||
@@ -111,7 +130,7 @@
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item>
 | 
			
		||||
      <item row="4" column="0" colspan="3">
 | 
			
		||||
       <widget class="QCheckBox" name="spaceAfterFunctionName">
 | 
			
		||||
        <property name="enabled">
 | 
			
		||||
         <bool>true</bool>
 | 
			
		||||
@@ -138,6 +157,10 @@
 | 
			
		||||
    </spacer>
 | 
			
		||||
   </item>
 | 
			
		||||
  </layout>
 | 
			
		||||
  <zorder>groupBox</zorder>
 | 
			
		||||
  <zorder>autoInsertBrackets</zorder>
 | 
			
		||||
  <zorder>partiallyComplete</zorder>
 | 
			
		||||
  <zorder>spaceAfterFunctionName</zorder>
 | 
			
		||||
 </widget>
 | 
			
		||||
 <resources/>
 | 
			
		||||
 <connections/>
 | 
			
		||||
 
 | 
			
		||||
@@ -655,7 +655,7 @@ bool CppCodeCompletion::triggersCompletion(TextEditor::ITextEditable *editor)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    } else {
 | 
			
		||||
    } else if (completionSettings().m_completionTrigger == TextEditor::AutomaticCompletion) {
 | 
			
		||||
        // Trigger completion after at least three characters of a name have been typed
 | 
			
		||||
        const int startOfName = findStartOfName(pos);
 | 
			
		||||
        if (pos - startOfName > 2) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user