Skip to content

Commit

Permalink
Fix "Toggle Line Comment" and "Block Comment" inconsistent with lexer…
Browse files Browse the repository at this point in the history
… (issue #85).
  • Loading branch information
zufuliu committed Nov 24, 2018
1 parent 5dd8dac commit f4a828e
Show file tree
Hide file tree
Showing 5 changed files with 154 additions and 82 deletions.
178 changes: 112 additions & 66 deletions src/EditAutoC.c
Original file line number Diff line number Diff line change
Expand Up @@ -1139,64 +1139,78 @@ void EditAutoIndent(HWND hwnd) {
void EditToggleCommentLine(HWND hwnd) {
BeginWaitCursor();
switch (pLexCurrent->iLexer) {
case SCLEX_ASM:
case SCLEX_AU3:
case SCLEX_INNOSETUP:
case SCLEX_LISP:
case SCLEX_LLVM:
case SCLEX_PROPERTIES:
EditToggleLineComments(hwnd, L";", FALSE);
break;

case SCLEX_BASH:
EditToggleLineComments(hwnd, ((np2LexLangIndex == IDM_LANG_M4)? L"dnl " : L"#"), FALSE);
break;

case SCLEX_BATCH:
EditToggleLineComments(hwnd, L"@rem ", TRUE);
break;

case SCLEX_CIL:
case SCLEX_CSS:
case SCLEX_FSHARP:
case SCLEX_GRAPHVIZ:
case SCLEX_JSON:
case SCLEX_PASCAL:
case SCLEX_VERILOG:
EditToggleLineComments(hwnd, L"//", FALSE);
break;

case SCLEX_CMAKE:
case SCLEX_CONF:
case SCLEX_PERL:
case SCLEX_POWERSHELL:
case SCLEX_TCL:
EditToggleLineComments(hwnd, L"#", FALSE);
break;

case SCLEX_CPP:
switch (pLexCurrent->rid) {
case NP2LEX_AWK:
case NP2LEX_JAM:
EditToggleLineComments(hwnd, L"#", TRUE);
EditToggleLineComments(hwnd, L"#", FALSE);
break;
default:
EditToggleLineComments(hwnd, L"//", FALSE);
break;
}
break;
case SCLEX_CSS:
case SCLEX_PASCAL:
case SCLEX_VERILOG:
case SCLEX_FSHARP:
case SCLEX_GRAPHVIZ:
case SCLEX_JSON:
EditToggleLineComments(hwnd, L"//", FALSE);

case SCLEX_FORTRAN:
EditToggleLineComments(hwnd, L"!", FALSE);
break;
case SCLEX_VBSCRIPT:
case SCLEX_VB:
EditToggleLineComments(hwnd, L"'", TRUE);

case SCLEX_HTML:
case SCLEX_XML: {
} break;

case SCLEX_LATEX:
EditToggleLineComments(hwnd, L"%", FALSE);
break;

case SCLEX_LUA:
case SCLEX_VHDL:
EditToggleLineComments(hwnd, L"--", FALSE);
break;

case SCLEX_MAKEFILE:
case SCLEX_NSIS:
case SCLEX_PYTHON:
case SCLEX_RUBY:
case SCLEX_SMALI:
case SCLEX_MAKEFILE:
EditToggleLineComments(hwnd, L"#", FALSE);
break;
case SCLEX_BASH:
EditToggleLineComments(hwnd, ((np2LexLangIndex == IDM_LANG_M4)? L"dnl " : L"#"), FALSE);
break;
case SCLEX_PERL:
case SCLEX_CONF:
case SCLEX_TCL:
case SCLEX_POWERSHELL:
case SCLEX_CMAKE:
EditToggleLineComments(hwnd, L"#", TRUE);
break;
case SCLEX_ASM:
case SCLEX_PROPERTIES:
case SCLEX_AU3:
case SCLEX_INNOSETUP:
EditToggleLineComments(hwnd, L";", TRUE);
break;
case SCLEX_SQL:
EditToggleLineComments(hwnd, L"-- ", TRUE); // extra space
break;
case SCLEX_LUA:
case SCLEX_VHDL:
EditToggleLineComments(hwnd, L"--", TRUE);
break;
case SCLEX_BATCH:
EditToggleLineComments(hwnd, L"@rem ", TRUE);
break;
case SCLEX_LATEX:
EditToggleLineComments(hwnd, L"# ", TRUE);
break;

case SCLEX_MATLAB:
if (pLexCurrent->rid == NP2LEX_JULIA) {
EditToggleLineComments(hwnd, L"#", FALSE);
Expand All @@ -1206,17 +1220,22 @@ void EditToggleCommentLine(HWND hwnd) {
EditToggleLineComments(hwnd, L"%", FALSE);
}
break;
case SCLEX_LISP:
case SCLEX_LLVM:
EditToggleLineComments(hwnd, L";", FALSE);
break;
case SCLEX_VIM:
EditToggleLineComments(hwnd, L"\" ", FALSE);

case SCLEX_SQL:
EditToggleLineComments(hwnd, L"-- ", FALSE); // extra space
break;

case SCLEX_TEXINFO:
EditToggleLineComments(hwnd, L"@c ", FALSE);
break;
default:

case SCLEX_VB:
case SCLEX_VBSCRIPT:
EditToggleLineComments(hwnd, L"'", FALSE);
break;

case SCLEX_VIM:
EditToggleLineComments(hwnd, L"\"", FALSE);
break;
}
EndWaitCursor();
Expand Down Expand Up @@ -1248,6 +1267,22 @@ void EditEncloseSelectionNewLine(HWND hwnd, LPCWSTR pwszOpen, LPCWSTR pwszClose)

void EditToggleCommentBlock(HWND hwnd) {
switch (pLexCurrent->iLexer) {
case SCLEX_ASM:
case SCLEX_CIL:
case SCLEX_CSS:
case SCLEX_GRAPHVIZ:
case SCLEX_JSON:
case SCLEX_NSIS:
case SCLEX_SQL:
case SCLEX_VERILOG:
case SCLEX_VHDL:
EditEncloseSelection(hwnd, L"/*", L"*/");
break;

case SCLEX_AU3:
EditEncloseSelectionNewLine(hwnd, L"#cs", L"#ce");
break;

case SCLEX_CPP:
switch (pLexCurrent->rid) {
case NP2LEX_AWK:
Expand All @@ -1258,32 +1293,37 @@ void EditToggleCommentBlock(HWND hwnd) {
break;
}
break;
case SCLEX_XML:
EditEncloseSelection(hwnd, L"<!--", L"-->");

case SCLEX_FORTRAN:
EditEncloseSelectionNewLine(hwnd, L"#if 0", L"#endif");
break;

case SCLEX_FSHARP:
EditEncloseSelection(hwnd, L"(*", L"*)");
break;

case SCLEX_HTML:
case SCLEX_XML: {
EditEncloseSelection(hwnd, L"<!--", L"-->");
break;
case SCLEX_CSS:
case SCLEX_ASM:
case SCLEX_VERILOG:
case SCLEX_GRAPHVIZ:
case SCLEX_JSON:
EditEncloseSelection(hwnd, L"/*", L"*/");
break;
case SCLEX_PASCAL:
} break;

case SCLEX_INNOSETUP:
case SCLEX_PASCAL:
EditEncloseSelection(hwnd, L"{", L"}");
break;
case SCLEX_LUA:
EditEncloseSelection(hwnd, L"--[[", L"]]");
break;
case SCLEX_FSHARP:
EditEncloseSelection(hwnd, L"(*", L"*)");
break;

case SCLEX_LATEX:
EditEncloseSelectionNewLine(hwnd, L"\\begin{comment}", L"\\end{comment}");
break;

case SCLEX_LISP:
EditEncloseSelection(hwnd, L"#|", L"|#");
break;

case SCLEX_LUA:
EditEncloseSelection(hwnd, L"--[[", L"--]]");
break;

case SCLEX_MATLAB:
if (pLexCurrent->rid == NP2LEX_JULIA) {
EditEncloseSelectionNewLine(hwnd, L"#=", L"=#");
Expand All @@ -1293,7 +1333,13 @@ void EditToggleCommentBlock(HWND hwnd) {
EditEncloseSelectionNewLine(hwnd, L"%{", L"%}");
}
break;
default:

case SCLEX_POWERSHELL:
EditEncloseSelection(hwnd, L"<#", L"#>");
break;

case SCLEX_TCL:
EditEncloseSelectionNewLine(hwnd, L"if (0) {", L"}");
break;
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/Edit_Fold.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ void FoldToggleLevel(int lev, FOLD_ACTION action) {
int line = 0;

switch (pLexCurrent->iLexer) {
case SCLEX_NULL:
case SCLEX_PYTHON: {
case SCLEX_PYTHON:
case SCLEX_NULL: {
struct EditFoldStack foldStack = { 0, { 0 }};
++lev;
while (line < lineCount) {
Expand Down Expand Up @@ -182,8 +182,8 @@ void FoldToggleDefault(FOLD_ACTION action) {
int line = 0;

switch (pLexCurrent->iLexer) {
case SCLEX_NULL:
case SCLEX_PYTHON: {
case SCLEX_PYTHON:
case SCLEX_NULL: {
struct EditFoldStack foldStack = { 0, { 0 }};
while (line < lineCount) {
int level = SciCall_GetFoldLevel(line);
Expand Down
14 changes: 3 additions & 11 deletions src/Notepad2.c
Original file line number Diff line number Diff line change
Expand Up @@ -2277,14 +2277,8 @@ void MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) {

EnableCmd(hmenu, IDM_VIEW_SHOWEXCERPT, i);

i = (int)SendMessage(hwndEdit, SCI_GETLEXER, 0, 0);
EnableCmd(hmenu, IDM_EDIT_LINECOMMENT,
!(i == SCLEX_NULL || i == SCLEX_CSS || i == SCLEX_DIFF));
EnableCmd(hmenu, IDM_EDIT_STREAMCOMMENT,
!(i == SCLEX_NULL || i == SCLEX_VBSCRIPT || i == SCLEX_MAKEFILE || i == SCLEX_VB || i == SCLEX_ASM ||
i == SCLEX_SQL || i == SCLEX_PERL || i == SCLEX_PYTHON || i == SCLEX_PROPERTIES || i == SCLEX_CONF ||
i == SCLEX_POWERSHELL || i == SCLEX_BATCH || i == SCLEX_DIFF || i == SCLEX_BASH || i == SCLEX_TCL ||
i == SCLEX_AU3 || i == SCLEX_RUBY || i == SCLEX_CMAKE));
EnableCmd(hmenu, IDM_EDIT_LINECOMMENT, bCurrentLexerHasLineComment);
EnableCmd(hmenu, IDM_EDIT_STREAMCOMMENT, bCurrentLexerHasBlockComment);

EnableCmd(hmenu, IDM_EDIT_INSERT_ENCODING, *mEncoding[iEncoding].pszParseNames);

Expand Down Expand Up @@ -2390,9 +2384,7 @@ void MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) {
CheckCmd(hmenu, IDM_VIEW_FULLSCREEN_HIDE_TOOL, bFullScreenHideToolbar);
CheckCmd(hmenu, IDM_VIEW_FULLSCREEN_HIDE_STATUS, bFullScreenHideStatusbar);

//i = (int)SendMessage(hwndEdit, SCI_GETLEXER, 0, 0);
//EnableCmd(hmenu, IDM_VIEW_AUTOCLOSETAGS, (i == SCLEX_HTML || i == SCLEX_XML));
CheckCmd(hmenu, IDM_VIEW_AUTOCLOSETAGS, bAutoCloseTags /*&& (i == SCLEX_HTML || i == SCLEX_XML)*/);
CheckCmd(hmenu, IDM_VIEW_AUTOCLOSETAGS, bAutoCloseTags);
CheckCmd(hmenu, IDM_VIEW_HIGHLIGHTCURRENTLINE, bHighlightCurrentLine);

CheckCmd(hmenu, IDM_VIEW_REUSEWINDOW, bReuseWindow);
Expand Down
34 changes: 33 additions & 1 deletion src/Styles.c
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,8 @@ static BOOL bCustomColorLoaded = FALSE;
static int iLexerLoadedCount = 0;

BOOL bUse2ndDefaultStyle;
BOOL bCurrentLexerHasLineComment;
BOOL bCurrentLexerHasBlockComment;
static UINT fStylesModified = STYLESMODIFIED_NONE;
static BOOL fWarnedNoIniFile = FALSE;
static int iBaseFontSize = 11*SC_FONT_SIZE_MULTIPLIER; // 11 pt in lexDefault
Expand Down Expand Up @@ -805,6 +807,33 @@ void Style_UpdateLexerKeywordAttr(PEDITLEXER pLexNew) {
}
}

static inline BOOL DidLexerHasLineComment(int iLexer) {
return !(iLexer == SCLEX_NULL
|| iLexer == SCLEX_DIFF
);
}

static inline BOOL DidLexerHasBlockComment(int iLexer) {
return !(iLexer == SCLEX_NULL
|| iLexer == SCLEX_BASH
|| iLexer == SCLEX_BATCH
|| iLexer == SCLEX_CMAKE
|| iLexer == SCLEX_CONF
|| iLexer == SCLEX_DIFF
|| iLexer == SCLEX_LLVM
|| iLexer == SCLEX_MAKEFILE
|| iLexer == SCLEX_PERL
|| iLexer == SCLEX_PROPERTIES
|| iLexer == SCLEX_PYTHON
|| iLexer == SCLEX_RUBY
|| iLexer == SCLEX_SMALI
|| iLexer == SCLEX_TEXINFO
|| iLexer == SCLEX_VB
|| iLexer == SCLEX_VBSCRIPT
|| iLexer == SCLEX_VIM
);
}

static void Style_Parse(struct DetailStyle *style, LPCWSTR lpszStyle);
static void Style_SetParsed(HWND hwnd, const struct DetailStyle *style, int iStyle);
static inline void Style_SetDefaultStyle(HWND hwnd, int index) {
Expand Down Expand Up @@ -1083,6 +1112,9 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) {

// Save current lexer
pLexCurrent = pLexNew;
rid = pLexCurrent->iLexer;
bCurrentLexerHasLineComment = DidLexerHasLineComment(rid);
bCurrentLexerHasBlockComment = DidLexerHasBlockComment(rid);
UpdateStatusBarCache(STATUS_LEXER);
UpdateLineNumberWidth();
UpdateFoldMarginWidth();
Expand Down Expand Up @@ -2203,7 +2235,7 @@ void Style_SetIndentGuides(HWND hwnd, BOOL bShow) {
int iIndentView = SC_IV_NONE;
if (bShow) {
if (!flagSimpleIndentGuides) {
if (SendMessage(hwnd, SCI_GETLEXER, 0, 0) == SCLEX_PYTHON) {
if (pLexCurrent->iLexer == SCLEX_PYTHON) {
iIndentView = SC_IV_LOOKFORWARD;
} else {
iIndentView = SC_IV_LOOKBOTH;
Expand Down
2 changes: 2 additions & 0 deletions src/Styles.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@
extern PEDITLEXER pLexCurrent;
extern int np2LexLangIndex;
extern BOOL bUse2ndDefaultStyle;
extern BOOL bCurrentLexerHasLineComment;
extern BOOL bCurrentLexerHasBlockComment;
extern UINT8 currentLexKeywordAttr[NUMKEYWORD];

BOOL IsDocWordChar(int ch);
Expand Down

0 comments on commit f4a828e

Please sign in to comment.