⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scintillausage.html

📁 最强源代码编辑控件
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta name="generator" content="HTML Tidy, see www.w3.org" />
    <meta name="generator" content="SciTE" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>
      Scintilla Usage Notes
    </title>
<style type="text/css">
SPAN {
    font-family: Verdana, Arial, Helvetica;
    font-size: 9pt;
}
.S0 {
    color: #808080;
    font-family: Verdana, Arial, Helvetica;
}
.S1 {
    font-family: Comic Sans MS, Times New Roman, Times;
    color: #007F00;
    font-size: 8pt;
}
.S2 {
    font-family: Comic Sans MS, Times New Roman, Times;
    color: #007F00;
    font-size: 8pt;
}
.S3 {
    font-family: Verdana, Arial, Helvetica;
    color: #7F7F7F;
}
.S4 {
    font-family: Verdana, Arial, Helvetica;
    color: #007F7F;
}
.S5 {
    color: #00007F;
    font-weight: bold;
    font-family: Verdana, Arial, Helvetica;
}
.S6 {
    color: #7F007F;
    font-family: Courier New, Courier;
}
.S7 {
    color: #7F007F;
    font-family: Courier New, Courier;
}
.S8 {
    color: #007F7F;
}
.S9 {
    color: #7F7F00;
}
.S10 {
    font-weight: bold;
}
</style>
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <table bgcolor="#000000" width="100%" cellspacing="0" cellpadding="0" border="0">
      <tr>
        <td>
          <img src="SciTEIco.png" border="3" height="64" width="64" alt="Scintilla icon" />
        </td>
        <td>
          <a href="index.html" style="color:white;text-decoration:none"><font size="5">Scintilla
          Usage Notes</font></a>
        </td>
      </tr>
    </table>
    <h2>
       Implementing Auto-Indent
    </h2>
    <p>
       The key idea is to use the SCN_CHARADDED notification to add indentation after a newline.
    </p>
    <p>
       The lParam on the notification is a pointer to a SCNotification structure whose ch member
      specifies the character added. If a newline was added, the previous line can be retrieved and
      the same indentation can be added to the new line.
    </p>
    <p>
       Here is the relevant portion of code from SciTE: (SciTE.cxx SciTEWindow::CharAdded)
    </p>
    <span class='S5'>if</span><span class='S0'>&nbsp;</span> <span class='S10'>(</span><span
    class='S11'>ch</span><span class='S0'>&nbsp;</span> <span class='S10'>==</span><span
    class='S0'>&nbsp;</span> <span class='S7'>'\r'</span><span class='S0'>&nbsp;</span> <span
    class='S10'>||</span><span class='S0'>&nbsp;</span> <span class='S11'>ch</span><span
    class='S0'>&nbsp;</span> <span class='S10'>==</span><span class='S0'>&nbsp;</span> <span
    class='S7'>'\n'</span><span class='S10'>)</span><span class='S0'>&nbsp;</span> <span
    class='S10'>{</span><span class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S5'>char</span><span class='S0'>&nbsp;</span>
    <span class='S11'>linebuf</span><span class='S10'>[</span><span class='S4'>1000</span><span
    class='S10'>];</span><span class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S5'>int</span><span class='S0'>&nbsp;</span>
    <span class='S11'>curLine</span><span class='S0'>&nbsp;</span> <span class='S10'>=</span><span
    class='S0'>&nbsp;</span> <span class='S11'>GetCurrentLineNumber</span><span
    class='S10'>();</span><span class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S5'>int</span><span class='S0'>&nbsp;</span>
    <span class='S11'>lineLength</span><span class='S0'>&nbsp;</span> <span class='S10'>
    =</span><span class='S0'>&nbsp;</span> <span class='S11'>SendEditor</span><span
    class='S10'>(</span><span class='S11'>SCI_LINELENGTH</span><span class='S10'>,</span><span
    class='S0'>&nbsp;</span> <span class='S11'>curLine</span><span class='S10'>);</span><span
    class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S2'>
    //Platform::DebugPrintf("[CR]&nbsp;%d&nbsp;len&nbsp;=&nbsp;%d\n",&nbsp;curLine,&nbsp;lineLength);</span><span
     class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S5'>if</span><span class='S0'>&nbsp;</span> <span
    class='S10'>(</span><span class='S11'>curLine</span><span class='S0'>&nbsp;</span> <span
    class='S10'>&gt;</span><span class='S0'>&nbsp;</span> <span class='S4'>0</span><span
    class='S0'>&nbsp;</span> <span class='S10'>&amp;&amp;</span><span class='S0'>&nbsp;</span>
    <span class='S11'>lineLength</span><span class='S0'>&nbsp;</span> <span class='S10'>
    &lt;=</span><span class='S0'>&nbsp;</span> <span class='S4'>2</span><span
    class='S10'>)</span><span class='S0'>&nbsp;</span> <span class='S10'>{</span><span
    class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S5'>int</span><span class='S0'>&nbsp;</span>
    <span class='S11'>prevLineLength</span><span class='S0'>&nbsp;</span> <span class='S10'>
    =</span><span class='S0'>&nbsp;</span> <span class='S11'>SendEditor</span><span
    class='S10'>(</span><span class='S11'>SCI_LINELENGTH</span><span class='S10'>,</span><span
    class='S0'>&nbsp;</span> <span class='S11'>curLine</span><span class='S0'>&nbsp;</span> <span
    class='S10'>-</span><span class='S0'>&nbsp;</span> <span class='S4'>1</span><span
    class='S10'>);</span><span class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S5'>if</span><span class='S0'>&nbsp;</span> <span
    class='S10'>(</span><span class='S11'>prevLineLength</span><span class='S0'>&nbsp;</span> <span
    class='S10'>&lt;</span><span class='S0'>&nbsp;</span> <span class='S5'>sizeof</span><span
    class='S10'>(</span><span class='S11'>linebuf</span><span class='S10'>))</span><span
    class='S0'>&nbsp;</span> <span class='S10'>{</span><span class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S11'>WORD</span><span
    class='S0'>&nbsp;</span> <span class='S11'>buflen</span><span class='S0'>&nbsp;</span> <span
    class='S10'>=</span><span class='S0'>&nbsp;</span> <span class='S5'>sizeof</span><span
    class='S10'>(</span><span class='S11'>linebuf</span><span class='S10'>);</span><span
    class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S11'>memcpy</span><span
    class='S10'>(</span><span class='S11'>linebuf</span><span class='S10'>,</span><span
    class='S0'>&nbsp;</span> <span class='S10'>&amp;</span><span class='S11'>buflen</span><span
    class='S10'>,</span><span class='S0'>&nbsp;</span> <span class='S5'>sizeof</span><span
    class='S10'>(</span><span class='S11'>buflen</span><span class='S10'>));</span><span
    class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S11'>
    SendEditor</span><span class='S10'>(</span><span class='S11'>EM_GETLINE</span><span
    class='S10'>,</span><span class='S0'>&nbsp;</span> <span class='S11'>curLine</span><span
    class='S0'>&nbsp;</span> <span class='S10'>-</span><span class='S0'>&nbsp;</span> <span
    class='S4'>1</span><span class='S10'>,</span><span class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
    <span class='S5'>reinterpret_cast</span><span class='S10'>&lt;</span><span
    class='S11'>LPARAM</span><span class='S10'>&gt;(</span><span class='S5'>static_cast</span><span
    class='S10'>&lt;</span><span class='S5'>char</span><span class='S0'>&nbsp;</span> <span
    class='S10'>*&gt;(</span><span class='S11'>linebuf</span><span class='S10'>)));</span><span
    class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S11'>linebuf</span><span
    class='S10'>[</span><span class='S11'>prevLineLength</span><span class='S10'>]</span><span
    class='S0'>&nbsp;</span> <span class='S10'>=</span><span class='S0'>&nbsp;</span> <span
    class='S7'>'\0'</span><span class='S10'>;</span><span class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S5'>for</span><span
    class='S0'>&nbsp;</span> <span class='S10'>(</span><span class='S5'>int</span><span
    class='S0'>&nbsp;</span> <span class='S11'>pos</span><span class='S0'>&nbsp;</span> <span
    class='S10'>=</span><span class='S0'>&nbsp;</span> <span class='S4'>0</span><span
    class='S10'>;</span><span class='S0'>&nbsp;</span> <span class='S11'>linebuf</span><span
    class='S10'>[</span><span class='S11'>pos</span><span class='S10'>];</span><span
    class='S0'>&nbsp;</span> <span class='S11'>pos</span><span class='S10'>++)</span><span
    class='S0'>&nbsp;</span> <span class='S10'>{</span><span class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span
    class='S5'>if</span><span class='S0'>&nbsp;</span> <span class='S10'>(</span><span
    class='S11'>linebuf</span><span class='S10'>[</span><span class='S11'>pos</span><span
    class='S10'>]</span><span class='S0'>&nbsp;</span> <span class='S10'>!=</span><span
    class='S0'>&nbsp;</span> <span class='S7'>'&nbsp;'</span><span class='S0'>&nbsp;</span> <span
    class='S10'>&amp;&amp;</span><span class='S0'>&nbsp;</span> <span class='S11'>
    linebuf</span><span class='S10'>[</span><span class='S11'>pos</span><span
    class='S10'>]</span><span class='S0'>&nbsp;</span> <span class='S10'>!=</span><span
    class='S0'>&nbsp;</span> <span class='S7'>'\t'</span><span class='S10'>)</span><span
    class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
    <span class='S11'>linebuf</span><span class='S10'>[</span><span class='S11'>pos</span><span
    class='S10'>]</span><span class='S0'>&nbsp;</span> <span class='S10'>=</span><span
    class='S0'>&nbsp;</span> <span class='S7'>'\0'</span><span class='S10'>;</span><span
    class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S10'>}</span><span
    class='S0'><br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span class='S11'>
    SendEditor</span><span class='S10'>(</span><span class='S11'>EM_REPLACESEL</span><span
    class='S10'>,</span><span class='S0'>&nbsp;</span> <span class='S4'>0</span><span
    class='S10'>,</span><span class='S0'>&nbsp;</span> <span class='S5'>
    reinterpret_cast</span><span class='S10'>&lt;</span><span class='S11'>LPARAM</span><span
    class='S10'>&gt;(</span><span class='S5'>static_cast</span><span class='S10'>&lt;</span><span

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -