2012-08-14 23:45 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbide/edit.prg
* contrib/hbide/editor.prg
% Optimized: collection of variables:
a) longer than 3 characters,
b) variable is collected if space,coma,collon " ,:" follows it.
+ Started: matching of control structures, a work-in-progress.
This commit is contained in:
@@ -16,6 +16,15 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2012-08-14 23:45 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
|
||||
* contrib/hbide/edit.prg
|
||||
* contrib/hbide/editor.prg
|
||||
% Optimized: collection of variables:
|
||||
a) longer than 3 characters,
|
||||
b) variable is collected if space,coma,collon " ,:" follows it.
|
||||
|
||||
+ Started: matching of control structures, a work-in-progress.
|
||||
|
||||
2012-08-14 20:07 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
|
||||
* contrib/hbide/edit.prg
|
||||
* contrib/hbide/editor.prg
|
||||
|
||||
@@ -143,7 +143,7 @@ CLASS IdeEdit INHERIT IdeObject
|
||||
METHOD create( oIde, oEditor, nMode )
|
||||
METHOD destroy()
|
||||
METHOD execEvent( nMode, p, p1 )
|
||||
METHOD execKeyEvent( nMode, nEvent, p, p1 )
|
||||
METHOD execKeyEvent( nMode, nEvent, p, p1, p2 )
|
||||
METHOD connectEditSignals()
|
||||
METHOD disconnectEditSignals()
|
||||
|
||||
@@ -251,6 +251,7 @@ CLASS IdeEdit INHERIT IdeObject
|
||||
METHOD highlightPage()
|
||||
METHOD reformatLine( nPos, nDeleted, nAdded )
|
||||
METHOD handleTab( key )
|
||||
METHOD matchPair( x, y )
|
||||
|
||||
ENDCLASS
|
||||
|
||||
@@ -323,9 +324,8 @@ METHOD IdeEdit:create( oIde, oEditor, nMode )
|
||||
::qEdit:connect( QEvent_FocusIn , {| | ::execKeyEvent( 104, QEvent_FocusIn ) } )
|
||||
::qEdit:connect( QEvent_Resize , {| | ::execKeyEvent( 106, QEvent_Resize ) } )
|
||||
::qEdit:connect( QEvent_FocusOut , {| | ::execKeyEvent( 105, QEvent_FocusOut ) } )
|
||||
::qEdit:connect( QEvent_MouseButtonDblClick, {|p| ::execKeyEvent( 103, QEvent_MouseButtonDblClick, p ) } )
|
||||
|
||||
::qEdit:hbSetEventBlock( {|p,p1| ::execKeyEvent( 115, 1001, p, p1 ) } )
|
||||
::qEdit:hbSetEventBlock( {|p,p1,p2| ::execKeyEvent( 115, 1001, p, p1, p2 ) } )
|
||||
|
||||
::qTimer := QTimer()
|
||||
::qTimer:setInterval( 2000 )
|
||||
@@ -355,6 +355,7 @@ METHOD IdeEdit:destroy()
|
||||
::qEdit:disconnect( QEvent_FocusOut )
|
||||
::qEdit:disconnect( QEvent_Resize )
|
||||
::qEdit:disconnect( QEvent_MouseButtonDblClick )
|
||||
::qEdit:disconnect( QEvent_MouseMove )
|
||||
|
||||
::disconnectEditSignals()
|
||||
|
||||
@@ -548,7 +549,7 @@ METHOD IdeEdit:execEvent( nMode, p, p1 )
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEdit:execKeyEvent( nMode, nEvent, p, p1 )
|
||||
METHOD IdeEdit:execKeyEvent( nMode, nEvent, p, p1, p2 )
|
||||
LOCAL key, kbm, lAlt, lCtrl, lShift
|
||||
|
||||
HB_SYMBOL_UNUSED( nMode )
|
||||
@@ -641,12 +642,15 @@ METHOD IdeEdit:execKeyEvent( nMode, nEvent, p, p1 )
|
||||
EXIT
|
||||
CASE QEvent_Wheel
|
||||
EXIT
|
||||
CASE QEvent_MouseButtonDblClick
|
||||
CASE QEvent_MouseButtonDblClick /* Not being received: tobe investigated */
|
||||
::lCopyWhenDblClicked := .t.
|
||||
::clickFuncHelp()
|
||||
EXIT
|
||||
CASE 1001 /* Fired from hbqt_hbqplaintextedit.cpp */
|
||||
SWITCH p
|
||||
CASE QEvent_MouseButtonPress
|
||||
::matchPair( p1, p2 )
|
||||
EXIT
|
||||
CASE 21000 /* Sends Block Info { t,l,b,r,mode,state } hbGetBlockInfo() */
|
||||
::aSelectionInfo := p1
|
||||
::oDK:setButtonState( "SelectionMode", ::aSelectionInfo[ 5 ] > 1 )
|
||||
@@ -1777,6 +1781,27 @@ METHOD IdeEdit:unHighlight()
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEdit:matchPair( x, y )
|
||||
LOCAL qCursor, cWord
|
||||
|
||||
qCursor := ::qEdit:cursorForPosition( ::qEdit:mapFromGlobal( QPoint( x,y ) ) )
|
||||
IF ! qCursor:isNull()
|
||||
qCursor:select( QTextCursor_WordUnderCursor )
|
||||
cWord := qCursor:selectedText()
|
||||
SWITCH cWord
|
||||
CASE "IF"
|
||||
EXIT
|
||||
CASE "ENDIF"
|
||||
EXIT
|
||||
CASE "ENDDO"
|
||||
EXIT
|
||||
ENDSWITCH
|
||||
ENDIF
|
||||
|
||||
RETURN NIL
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEdit:highlightAll( cText )
|
||||
LOCAL qDoc, qFormat, qCursor, qFormatHL, qCur, lModified
|
||||
|
||||
@@ -1792,7 +1817,7 @@ METHOD IdeEdit:highlightAll( cText )
|
||||
qCur := ::getCursor()
|
||||
qCur:beginEditBlock()
|
||||
|
||||
qCursor := QTextCursor( "QTextDocument", qDoc )
|
||||
qCursor := QTextCursor( qDoc )
|
||||
qFormat := qCursor:charFormat()
|
||||
qFormatHL := qFormat
|
||||
qFormatHL:setBackground( QBrush( QColor( Qt_yellow ) ) )
|
||||
@@ -2311,11 +2336,24 @@ METHOD IdeEdit:reformatLine( nPos, nDeleted, nAdded )
|
||||
qCursor:setPosition( nPostn )
|
||||
ENDIF
|
||||
|
||||
ELSEIF cCWord == " " .AND. ! Empty( cPWord ) .AND. ! ( Left( cPWord, 1 ) $ ":=,;<>/?'[]{}()-\|~`!@#$%^&*" )
|
||||
IF ! cPWord $ ::oEM:hEditingWords
|
||||
::oEM:hEditingWords[ cPWord ] := cPWord
|
||||
::oEM:updateCompleter()
|
||||
ENDIF
|
||||
|
||||
IF cCWord == " " .AND. ! Empty( cPWord ) .AND. ! ( Left( cPWord, 1 ) $ "`~!@#$%^&*()+1234567890-=+[]{}|\':;?/>.<," )
|
||||
IF Len( cPWord ) > 3
|
||||
IF ! cPWord $ ::oEM:hEditingWords
|
||||
::oEM:hEditingWords[ cPWord ] := cPWord
|
||||
::oEM:updateCompleter()
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
ELSEIF cCWord $ ",:" .AND. ! Empty( cPPWord ) .AND. ! ( Left( cPPWord, 1 ) $ "`~!@#$%^&*()+1234567890-=+[]{}|\':;?/>.<," )
|
||||
IF Len( cPPWord ) > 3
|
||||
IF ! cPPWord $ ::oEM:hEditingWords
|
||||
::oEM:hEditingWords[ cPPWord ] := cPPWord
|
||||
::oEM:updateCompleter()
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
ENDIF
|
||||
|
||||
/* Group II operations */
|
||||
|
||||
@@ -350,22 +350,20 @@ METHOD IdeEditsManager:updateCompleter()
|
||||
|
||||
k_:= {}
|
||||
FOR EACH s IN ::aProtos
|
||||
s := alltrim( s )
|
||||
IF ::oINI:lCompletionWithArgs
|
||||
IF ascan( k_, s ) == 0
|
||||
aadd( k_, s )
|
||||
ENDIF
|
||||
ELSE
|
||||
// s := alltrim( s )
|
||||
IF ! ::oINI:lCompletionWithArgs
|
||||
IF ( n := at( "(", s ) ) == 0
|
||||
IF ( n := at( " ", s ) ) > 0
|
||||
aadd( k_, substr( s, 1, n - 1 ) )
|
||||
ELSE
|
||||
aadd( k_, s )
|
||||
s := substr( s, 1, n - 1 )
|
||||
ENDIF
|
||||
ELSE
|
||||
aadd( k_, trim( substr( s, 1, n - 1 ) ) )
|
||||
s := substr( s, 1, n - 1 )
|
||||
ENDIF
|
||||
ENDIF
|
||||
s := alltrim( s )
|
||||
IF ascan( k_, s ) == 0
|
||||
aadd( k_, s )
|
||||
ENDIF
|
||||
NEXT
|
||||
asort( k_, , , {|e,f| lower( e ) < lower( f ) } )
|
||||
|
||||
@@ -382,6 +380,8 @@ METHOD IdeEditsManager:updateCompleter()
|
||||
::qCompleter:setCompletionMode( QCompleter_PopupCompletion )
|
||||
::qCompleter:popup():setAlternatingRowColors( .t. )
|
||||
::qCompleter:popup():setFont( QFont( "Courier New", 8 ) )
|
||||
::qCompleter:popup():setMaximumWidth( 400 )
|
||||
::qCompleter:popup():setHorizontalScrollBarPolicy ( Qt_ScrollBarAsNeeded )
|
||||
|
||||
::qCompleter:connect( "activated(QString)", {|p| ::execEvent( __qcompleter_activated__, p ) } )
|
||||
|
||||
|
||||
Reference in New Issue
Block a user