[NEW_FEATURE] Comment (Ctrl+K) and Uncomment (Ctrl+Shift+K) is separated now.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository@81 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
donho 2007-12-10 01:36:32 +00:00
parent fd501da2b3
commit 50ad915434
4 changed files with 58 additions and 32 deletions

View File

@ -1237,6 +1237,8 @@ void Notepad_plus::checkClipboard()
enableCommand(IDM_EDIT_UPPERCASE, hasSelection, MENU); enableCommand(IDM_EDIT_UPPERCASE, hasSelection, MENU);
enableCommand(IDM_EDIT_LOWERCASE, hasSelection, MENU); enableCommand(IDM_EDIT_LOWERCASE, hasSelection, MENU);
enableCommand(IDM_EDIT_BLOCK_COMMENT, hasSelection, MENU); enableCommand(IDM_EDIT_BLOCK_COMMENT, hasSelection, MENU);
enableCommand(IDM_EDIT_BLOCK_COMMENT_SET, hasSelection, MENU);
enableCommand(IDM_EDIT_BLOCK_UNCOMMENT, hasSelection, MENU);
enableCommand(IDM_EDIT_STREAM_COMMENT, hasSelection, MENU); enableCommand(IDM_EDIT_STREAM_COMMENT, hasSelection, MENU);
} }
@ -2773,7 +2775,15 @@ void Notepad_plus::command(int id)
break; break;
case IDM_EDIT_BLOCK_COMMENT: case IDM_EDIT_BLOCK_COMMENT:
doBlockComment(); doBlockComment(cm_toggle);
break;
case IDM_EDIT_BLOCK_COMMENT_SET:
doBlockComment(cm_comment);
break;
case IDM_EDIT_BLOCK_UNCOMMENT:
doBlockComment(cm_uncomment);
break; break;
case IDM_EDIT_STREAM_COMMENT: case IDM_EDIT_STREAM_COMMENT:
@ -3793,6 +3803,8 @@ void Notepad_plus::command(int id)
case IDM_EDIT_UPPERCASE: case IDM_EDIT_UPPERCASE:
case IDM_EDIT_LOWERCASE: case IDM_EDIT_LOWERCASE:
case IDM_EDIT_BLOCK_COMMENT: case IDM_EDIT_BLOCK_COMMENT:
case IDM_EDIT_BLOCK_COMMENT_SET:
case IDM_EDIT_BLOCK_UNCOMMENT:
case IDM_EDIT_STREAM_COMMENT: case IDM_EDIT_STREAM_COMMENT:
case IDM_EDIT_TRIMTRAILING: case IDM_EDIT_TRIMTRAILING:
case IDM_EDIT_SETREADONLY : case IDM_EDIT_SETREADONLY :
@ -5109,7 +5121,7 @@ static string extractSymbol(char prefix, const char *str2extract)
return string(extracted); return string(extracted);
}; };
bool Notepad_plus::doBlockComment() bool Notepad_plus::doBlockComment(comment_mode currCommentMode)
{ {
const char *commentLineSybol; const char *commentLineSybol;
string symbol; string symbol;
@ -5165,6 +5177,8 @@ bool Notepad_plus::doBlockComment()
// empty lines are not commented // empty lines are not commented
if (strlen(linebuf) < 1) if (strlen(linebuf) < 1)
continue; continue;
if (currCommentMode != cm_comment)
{
if (memcmp(linebuf, comment.c_str(), comment_length - 1) == 0) if (memcmp(linebuf, comment.c_str(), comment_length - 1) == 0)
{ {
if (memcmp(linebuf, long_comment.c_str(), comment_length) == 0) if (memcmp(linebuf, long_comment.c_str(), comment_length) == 0)
@ -5188,11 +5202,15 @@ bool Notepad_plus::doBlockComment()
continue; continue;
} }
} }
}
if ((currCommentMode == cm_toggle) || (currCommentMode == cm_comment))
{
if (i == selStartLine) // is this the first selected line? if (i == selStartLine) // is this the first selected line?
selectionStart += comment_length; selectionStart += comment_length;
selectionEnd += comment_length; // every iteration selectionEnd += comment_length; // every iteration
_pEditView->execute(SCI_INSERTTEXT, lineIndent, (WPARAM)long_comment.c_str()); _pEditView->execute(SCI_INSERTTEXT, lineIndent, (WPARAM)long_comment.c_str());
} }
}
// after uncommenting selection may promote itself to the lines // after uncommenting selection may promote itself to the lines
// before the first initially selected line; // before the first initially selected line;
// another problem - if only comment symbol was selected; // another problem - if only comment symbol was selected;

View File

@ -78,6 +78,7 @@ struct iconLocator {
class FileDialog; class FileDialog;
class Notepad_plus : public Window { class Notepad_plus : public Window {
enum comment_mode {cm_comment, cm_uncomment, cm_toggle};
public: public:
Notepad_plus(); Notepad_plus();
@ -310,7 +311,7 @@ public:
const char * getNativeTip(int btnID); const char * getNativeTip(int btnID);
void changeToolBarIcons(); void changeToolBarIcons();
bool doBlockComment(); bool doBlockComment(comment_mode currCommentMode);
bool doStreamComment(); bool doStreamComment();
void doTrimTrailing() { void doTrimTrailing() {
_pEditView->execute(SCI_BEGINUNDOACTION); _pEditView->execute(SCI_BEGINUNDOACTION);

View File

@ -291,7 +291,9 @@ BEGIN
MENUITEM "to &Upper case\tCtrl+Shift+U", IDM_EDIT_UPPERCASE MENUITEM "to &Upper case\tCtrl+Shift+U", IDM_EDIT_UPPERCASE
MENUITEM "to &Lower case\tCtrl+U", IDM_EDIT_LOWERCASE MENUITEM "to &Lower case\tCtrl+U", IDM_EDIT_LOWERCASE
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Block comment/uncomment\tCtrl+Q", IDM_EDIT_BLOCK_COMMENT MENUITEM "Block toggle comment \tCtrl+Q", IDM_EDIT_BLOCK_COMMENT
MENUITEM "Block comment\tCtrl+K", IDM_EDIT_BLOCK_COMMENT_SET
MENUITEM "Block uncomment\tCtrl+Shift+K", IDM_EDIT_BLOCK_UNCOMMENT
MENUITEM "Stream comment\tCtrl+Shift+Q", IDM_EDIT_STREAM_COMMENT MENUITEM "Stream comment\tCtrl+Shift+Q", IDM_EDIT_STREAM_COMMENT
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Function completion\tCtrl+SPACE", IDM_EDIT_AUTOCOMPLETE MENUITEM "Function completion\tCtrl+SPACE", IDM_EDIT_AUTOCOMPLETE
@ -575,6 +577,8 @@ BEGIN
"R", IDC_EDIT_TOGGLEMACRORECORDING, VIRTKEY, CONTROL, SHIFT "R", IDC_EDIT_TOGGLEMACRORECORDING, VIRTKEY, CONTROL, SHIFT
"P", IDM_MACRO_PLAYBACKRECORDEDMACRO, VIRTKEY, CONTROL, SHIFT "P", IDM_MACRO_PLAYBACKRECORDEDMACRO, VIRTKEY, CONTROL, SHIFT
"Q", IDM_EDIT_BLOCK_COMMENT, VIRTKEY, CONTROL "Q", IDM_EDIT_BLOCK_COMMENT, VIRTKEY, CONTROL
"K", IDM_EDIT_BLOCK_COMMENT_SET, VIRTKEY, CONTROL
"K", IDM_EDIT_BLOCK_UNCOMMENT, VIRTKEY, CONTROL, SHIFT
"Q", IDM_EDIT_STREAM_COMMENT, VIRTKEY, CONTROL, SHIFT "Q", IDM_EDIT_STREAM_COMMENT, VIRTKEY, CONTROL, SHIFT
"V", IDM_EDIT_PASTE, VIRTKEY, CONTROL "V", IDM_EDIT_PASTE, VIRTKEY, CONTROL

View File

@ -73,6 +73,9 @@
#define IDM_EDIT_CLEARREADONLY (IDM_EDIT+33) #define IDM_EDIT_CLEARREADONLY (IDM_EDIT+33)
#define IDM_EDIT_COLUMNMODE (IDM_EDIT+34) #define IDM_EDIT_COLUMNMODE (IDM_EDIT+34)
#define IDM_EDIT_BLOCK_COMMENT_SET (IDM_EDIT+35)
#define IDM_EDIT_BLOCK_UNCOMMENT (IDM_EDIT+36)
#define IDM_EDIT_AUTOCOMPLETE (50000+0) #define IDM_EDIT_AUTOCOMPLETE (50000+0)
#define IDM_EDIT_AUTOCOMPLETE_CURRENTFILE (50000+1) #define IDM_EDIT_AUTOCOMPLETE_CURRENTFILE (50000+1)