basctl/source/basicide/baside2b.cxx | 19 ++++++++++++++++++- basctl/source/basicide/codecompleteoptionsdlg.cxx | 3 ++- basic/source/classes/codecompletecache.cxx | 13 ++++++++++++- include/basic/codecompletecache.hxx | 4 ++++ include/basic/sbmod.hxx | 1 - 5 files changed, 36 insertions(+), 4 deletions(-)
New commits: commit 2284b77b6c2b8bd6485130157c6cf0b4e51122a8 Author: Gergo Mocsi <gmocs...@gmail.com> Date: Thu Jul 25 20:15:45 2013 +0200 GSOC work, implemented "Autoclose Double Quotes" option Feature autoclosing double quotes (strings) implemented. When the user presses the '"' key, it's pair is also being inserted (only when the previous character is also a '"'), and the cursor is being placed inside the two quotes. Also, if the there was a string (like: "aaa""), the second one is not inserted. Change-Id: I3e4a5e426d2d4bdbf56899fe3e36359ae161b52a diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index 5f1af6a..d75aae9 100644 --- a/basctl/source/basicide/baside2b.cxx +++ b/basctl/source/basicide/baside2b.cxx @@ -499,10 +499,27 @@ void EditorWindow::KeyInput( const KeyEvent& rKEvt ) // see if there is an accelerator to be processed first bool bDone = SfxViewShell::Current()->KeyInput( rKEvt ); + if( rKEvt.GetCharCode() == '"' && CodeCompleteOptions::IsAutoCloseQuotesOn() ) + {//autoclose double quotes + TextSelection aSel = GetEditView()->GetSelection(); + sal_uLong nLine = aSel.GetStart().GetPara(); + OUString aLine( pEditEngine->GetText( nLine ) ); // the line being modified + + HighlightPortions aPortions; + aHighlighter.getHighlightPortions( nLine, aLine, aPortions ); + if( aLine[aLine.getLength()-1] != '"' && (aPortions[aPortions.size()-1].tokenType != 4) ) + { + GetEditView()->InsertText(OUString("\"")); + //leave the cursor on it's place: inside the two double quotes + TextPaM aEnd(nLine, aSel.GetEnd().GetIndex()); + GetEditView()->SetSelection( TextSelection( aEnd, aEnd ) ); + } + } + if( rKEvt.GetKeyCode().GetCode() == KEY_RETURN && CodeCompleteOptions::IsProcedureAutoCompleteOn() ) {//autoclose implementation TextSelection aSel = GetEditView()->GetSelection(); - sal_uLong nLine = aSel.GetStart().GetPara(); + sal_uLong nLine = aSel.GetStart().GetPara(); OUString sActSub = GetActualSubName( nLine ); IncompleteProcedures aProcData = rModulWindow.GetSbModule()->GetIncompleteProcedures(); for( unsigned int i = 0; i < aProcData.size(); ++i ) diff --git a/basctl/source/basicide/codecompleteoptionsdlg.cxx b/basctl/source/basicide/codecompleteoptionsdlg.cxx index 0f4ab3a..ac2793f 100644 --- a/basctl/source/basicide/codecompleteoptionsdlg.cxx +++ b/basctl/source/basicide/codecompleteoptionsdlg.cxx @@ -42,9 +42,9 @@ CodeCompleteOptionsDlg::CodeCompleteOptionsDlg( Window* pWindow ) pCodeCompleteChk->Check( CodeCompleteOptions::IsCodeCompleteOn() ); pAutocloseProcChk->Check( CodeCompleteOptions::IsProcedureAutoCompleteOn() ); + pAutocloseQuotesChk->Check( CodeCompleteOptions::IsAutoCloseQuotesOn() ); pAutocloseBracesChk->Enable( false ); - pAutocloseQuotesChk->Enable( false ); } CodeCompleteOptionsDlg::~CodeCompleteOptionsDlg() @@ -55,6 +55,7 @@ IMPL_LINK_NOARG(CodeCompleteOptionsDlg, OkHdl) { CodeCompleteOptions::SetCodeCompleteOn( pCodeCompleteChk->IsChecked() ); CodeCompleteOptions::SetProcedureAutoCompleteOn( pAutocloseProcChk->IsChecked() ); + CodeCompleteOptions::SetAutoCloseQuotesOn( pAutocloseQuotesChk->IsChecked() ); Close(); return 0; } diff --git a/basic/source/classes/codecompletecache.cxx b/basic/source/classes/codecompletecache.cxx index 51eee1c..3e327c6 100644 --- a/basic/source/classes/codecompletecache.cxx +++ b/basic/source/classes/codecompletecache.cxx @@ -28,7 +28,8 @@ namespace CodeCompleteOptions::CodeCompleteOptions() : bIsCodeCompleteOn( false ), -bIsProcedureAutoCompleteOn( true ) +bIsProcedureAutoCompleteOn( false ), +bIsAutoCloseQuotesOn( false ) { } @@ -57,6 +58,16 @@ void CodeCompleteOptions::SetProcedureAutoCompleteOn( const bool& b ) theCodeCompleteOptions::get().bIsProcedureAutoCompleteOn = b; } +bool CodeCompleteOptions::IsAutoCloseQuotesOn() +{ + return theCodeCompleteOptions::get().aMiscOptions.IsExperimentalMode() && theCodeCompleteOptions::get().bIsAutoCloseQuotesOn; +} + +void CodeCompleteOptions::SetAutoCloseQuotesOn( const bool& b ) +{ + theCodeCompleteOptions::get().bIsAutoCloseQuotesOn = b; +} + std::ostream& operator<< (std::ostream& aStream, const CodeCompleteDataCache& aCache) { aStream << "Global variables" << std::endl; diff --git a/include/basic/codecompletecache.hxx b/include/basic/codecompletecache.hxx index e03c057..7280030 100644 --- a/include/basic/codecompletecache.hxx +++ b/include/basic/codecompletecache.hxx @@ -57,6 +57,7 @@ class BASIC_DLLPUBLIC CodeCompleteOptions private: bool bIsCodeCompleteOn; bool bIsProcedureAutoCompleteOn; + bool bIsAutoCloseQuotesOn; SvtMiscOptions aMiscOptions; public: @@ -68,6 +69,9 @@ public: static bool IsProcedureAutoCompleteOn(); static void SetProcedureAutoCompleteOn( const bool& b ); + + static bool IsAutoCloseQuotesOn(); + static void SetAutoCloseQuotesOn( const bool& b ); }; class BASIC_DLLPUBLIC CodeCompleteDataCache diff --git a/include/basic/sbmod.hxx b/include/basic/sbmod.hxx index dbf3e69..22b2bdb 100644 --- a/include/basic/sbmod.hxx +++ b/include/basic/sbmod.hxx @@ -135,7 +135,6 @@ public: void RemoveVars(); ::com::sun::star::uno::Reference< ::com::sun::star::script::XInvocation > GetUnoModule(); bool createCOMWrapperForIface( ::com::sun::star::uno::Any& o_rRetAny, SbClassModuleObject* pProxyClassModuleObject ); - //CodeCompleteDataCache GetCodeCompleteDataFromParse(); void GetCodeCompleteDataFromParse(CodeCompleteDataCache& aCache); SbxArrayRef GetMethods(); IncompleteProcedures GetIncompleteProcedures() const; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits