我开发了一个基于代码的聊天组件。每个聊天都是一些代码片段。对于用户输入,我使用monaco-editor。它工作正常。
但是一旦用户点击发送按钮,我就会从摩纳哥编辑器获得原始输入。我需要将此用户输入附加到聊天列表并再次突出显示此输入。
有没有办法可以使用摩纳哥编辑器来做到这一点?或者我必须将highlight.js与 Monaco 一起使用吗?
在我的项目中,我使用 C# Roslyn 脚本来实现一些可以让我的客户单独编写的自动化。我在运行时编译并运行它。
现在我想要一个带有智能感知和拼写检查的 c# 网络编辑器。对于代码完成,我还想通过我的 API 获取一些私有块数据包以提供给脚本。
实际上,我使用 Visual Studio Code 做到了这一点。但是在自托管网页上有相同的行为会很好。
我找到了 Monaco-editor 和 omnisharp 项目。我认为这很好,因为 Visual Studio Code 也使用它。
有谁知道将这些东西组合在一起的示例项目或开源项目?我相信我不是第一个有这个想法的人。
我正在尝试使用Microsoft Monaco初始化文本/代码编辑器。我想使用核心 JavaScript甚至 jQuery 但没有 NodeJS 依赖。那可能吗?
一些相关的例子:
我有以下代码,但它不起作用:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
</head>
<body>
<div id="container" style="width:800px;height:600px;border:1px solid grey"></div>
<script type="text/javascript" src="https://microsoft.github.io/monaco-editor/node_modules/monaco-editor/min/vs/loader.js"></script>
<script>
require.config({ paths: { 'vs': 'monaco-editor/min/vs' }});
require(['vs/editor/editor.main'], function() {
window.editor = monaco.editor.create(document.getElementById('container'), {
value: [
'function x() {',
'\tconsole.log("Hello world!");',
'}'
].join('\n'),
language: 'javascript'
});
});
function save() {
// get the value of the data …Run Code Online (Sandbox Code Playgroud) 我正在一个 Web 项目中使用monaco 编辑器(又名VS Code引擎)。
我使用它来允许用户编辑一些具有 JSON 架构集的 JSON,以帮助提供一些自动完成功能。
当他们保存更改并希望重新编辑他们的工作时,我加载回编辑器的 JSON 会转换为字符串,但这会将代码呈现在一行上,我更希望 JSON 更漂亮,就好像用户右键单击并使用上下文菜单或键盘快捷键等中的“设置文档格式”命令。
所以这
{ "enable": true, "description": "Something" }
Run Code Online (Sandbox Code Playgroud)
会变成这样
{
"enable": true,
"description:" "Something"
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下方法,但使用超时来等待/猜测内容何时加载感觉非常hacky
require(['vs/editor/editor.main'], function() {
// JSON object we want to edit
const jsonCode = [{
"enabled": true,
"description": "something"
}];
const modelUri = monaco.Uri.parse("json://grid/settings.json");
const jsonModel = monaco.editor.createModel(JSON.stringify(jsonCode), "json", modelUri);
const editor = monaco.editor.create(document.getElementById('container'), {
model: jsonModel
});
// TODO: YUK see if we can remove timeout, as …Run Code Online (Sandbox Code Playgroud)我想在一些固定文本下的页面中嵌入一个摩纳哥编辑器,我希望Monaco编辑器的高度完全填充页面的其余部分.人们给了我一个答案在这里:JSBin:
<html>
<style>
html, body, .rb {
margin: 0;
height: 100%;
}
.rb {
display: table;
width: 100%;
border-collapse: collapse;
}
.top, .myME {
display: table-row;
}
.buffer {
display: table-cell;
}
.top .buffer {
background: lightblue;
height:1%;
}
.myME .buffer {
background: tomato;
}
#container {
position:relative;
}
#container > * {
overflow:auto;
max-width:100%;
max-height:100%;
}
</style>
<body>
<div class="rb">
<div class="top">
<div class="buffer">
1<br/>2<br/>3<br/>4<br/>
</div>
</div>
<div class="myME">
<div class="buffer" id="container">
</div>
</div>
</div> …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过对周围的 div 进行样式设置摩纳哥编辑器的字体大小。那种方法行不通。所以我看到摩纳哥编辑器有一个属性 font-size 。所以我尝试了这个属性。不幸的是这对我来说也不起作用。最好的方法是使用 CSS,因为我同时设计了一些东西。
在Monaco Editor中,使用标准初始化,例如:
monaco.editor.create(document.getElementById("container"), {
value: "",
language: "csharp"
});
Run Code Online (Sandbox Code Playgroud)
将有一个开箱即用的局部变量代码完成.例如,使用上面的标准初始化,并键入如下代码:
string testVariable = "This is a string";
int aValue = 123;
Run Code Online (Sandbox Code Playgroud)
代码完成将识别"testVariable"和"aValue"变量,并在代码完成列表中显示它们.
但是,如果我们将registerCompletionItemProvider添加到初始化中,如下所示:
//Custom Code Completion function
function createCompleters() {
return [
{
label: 'customFunction1',
kind: monaco.languages.CompletionItemKind.Function,
documentation: "My first Custom Function",
insertText: 'customFunction1()'
},
{
label: 'customFunction2',
kind: monaco.languages.CompletionItemKind.Function,
documentation: "My second Custom Function",
insertText: 'customFunction2()'
}
];
}
//Register the custom completion function into Monaco Editor
monaco.languages.registerCompletionItemProvider('csharp', {
provideCompletionItems: function(model, position) {
return createCompleters();
}
});
//Continue with …Run Code Online (Sandbox Code Playgroud) 我想在markdown中使用子弹点而不是星号(*)字符来创建vscode渲染列表,以便顶级使用•,下一个将使用◦等.
我的第一种方法是使用FontForge创建一个连字字体,用◦替换*,用◦替换空格加*,用▪替换两个空格加*,依此类推,但是使用连字有明显的问题,它不是上下文敏感的,所以所有星号将被替换,而不仅仅是那些领先一行的星号.
查看vscode文本修饰API,它似乎仅限于更改字体样式和颜色,而不是字体系列.有没有办法在视觉上替换vscode中的字符?它们仍应在源代码中保存为星号,以便有效降价.
markdown ligature visual-studio-code vscode-extensions monaco-editor
是否可以完全隐藏摩纳哥编辑器的排水沟。我尝试了以下选项:
lineNumbers: 'off',
glyphMargin: false,
folding: false
Run Code Online (Sandbox Code Playgroud)
这减少了装订线的大小,但它仍然是大约 10 像素宽,并且在悬停时它会变长。有没有办法完全压制它?