Editor 创建源代码编辑器需要知道什么?
假设我想为ocaml编程语言创建一个源代码编辑器,从哪里开始?我希望创建一个Windows平台的编辑器作为一个爱好项目。我的主要技能是网络开发。我很久以前就开发了windows应用程序。我不知道今天可用的工具是如何完成的。我有VisualStudio 2008和C是我选择的语言。Editor 创建源代码编辑器需要知道什么?,editor,ocaml,Editor,Ocaml,假设我想为ocaml编程语言创建一个源代码编辑器,从哪里开始?我希望创建一个Windows平台的编辑器作为一个爱好项目。我的主要技能是网络开发。我很久以前就开发了windows应用程序。我不知道今天可用的工具是如何完成的。我有VisualStudio 2008和C是我选择的语言。如果您在VisualStudio中最舒服,那么您可以使用VisualStudio shell创建基于该基础的IDE。 下面是一个播客,提供了一个很好的概述: 此外,作为参考,IronPython Studio是使用Vi
如果您在VisualStudio中最舒服,那么您可以使用VisualStudio shell创建基于该基础的IDE。
下面是一个播客,提供了一个很好的概述: 此外,作为参考,IronPython Studio是使用Visual Studio 2008 Shell创建的: 浏览这些源代码可以为您提供一个良好的起点。您需要知道:- OCAML语法、功能、关键字、函数等
- 我想这是你的母语
- 您需要知道要实现哪些功能
- …如果它使用GUI或仅从nano/vim这样的终端
- 语法突出显示的工作原理
- 如何打开和保存文件
- 自动完成的工作原理
- 等等
您可以从编辑器中的一个开始使用。更轻的替代方法是使用 示例:
源代码编辑器只是一个记事本,它是所有额外的功能,如智能感知、代码突出显示等,构成了一个IDE(我猜这真的是你想要的吗?),是的,IDE,但并不是像eclipse或visual studio这样的重量级IDE。类似记事本的东西,但可以编译和执行代码。它们不能编译和执行代码。编译器(如GCC)编译,处理器执行。IDE只启动编译器。是的,是的,我知道我的程序将调用编译器(ocamlc)。一个键盘快捷键将启动它。我的意思是在外观和感觉上像记事本一样简单。听起来你想要vim或emacs…非常感谢你的回答Ben。我一定会看一看vs外壳和ironpython工作室的概述。谢谢科宁。谢谢你的回答。这正是我要找的。我需要一个开始的地方。就是这样。谢谢,没问题。大多数人不知道的是,科宁是荷兰国王。这里的每个人都不知道我是国王。顺便说一句,thx我现在几乎有2000rep了^^^^ SciTE是我第二喜欢的编辑器。我会看看你提到的两种工具。谢谢这看起来与我的能力格格不入。但我会在舒服的时候再看一看。谢谢
// http://www.codeproject.com/Messages/3401956/NET-Richedit-Control.aspx
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace RichEditor
{
public class RichTextBoxEx : RichTextBox
{
IntPtr mHandle = IntPtr.Zero;
protected override CreateParams CreateParams
{
get
{
// Prevent module being loaded multiple times.
if (this.mHandle == IntPtr.Zero)
{
// load the library to obtain an instance of the RichEdit50 class.
this.mHandle = LoadLibrary("msftedit.dll");
}
// If module loaded, reset ClassName.
if (this.mHandle != IntPtr.Zero)
{
CreateParams cParams = base.CreateParams;
// Check Unicode or ANSI system and set appropriate ClassName.
if (Marshal.SystemDefaultCharSize == 1)
{
cParams.ClassName = "RichEdit50A";
}
else
{
cParams.ClassName = "RichEdit50W";
}
return cParams;
}
else // Module wasnt loaded, return default .NET RichEdit20 CreateParams.
{
return base.CreateParams;
}
}
}
~RichTextBoxEx()
{
//Free loaded Library.
if (mHandle != IntPtr.Zero)
{
FreeLibrary(mHandle);
}
}
[DllImport("kernel32.dll", SetLastError = true)]
private static extern IntPtr LoadLibrary(String lpFileName);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool FreeLibrary(IntPtr hModule);
}
}