mirror of
https://github.com/neocities/neocities.git
synced 2025-04-25 09:42:36 +02:00
Merge branch 'editor_help_tooltips'
This commit is contained in:
commit
c994f9f4c1
18 changed files with 649657 additions and 9 deletions
|
@ -316,6 +316,7 @@ post '/settings/change_editor_settings' do
|
|||
owner.editor_font_size = params[:editor_font_size]
|
||||
owner.editor_keyboard_mode = params[:editor_keyboard_mode]
|
||||
owner.editor_tab_width = params[:editor_tab_width]
|
||||
owner.editor_help_tooltips = params[:editor_help_tooltips]
|
||||
owner.save_changes validate: false
|
||||
|
||||
@filename = params[:path]
|
||||
|
|
9
migrations/130_more_editor_settings.rb
Normal file
9
migrations/130_more_editor_settings.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
Sequel.migration do
|
||||
up {
|
||||
DB.add_column :sites, :editor_help_tooltips, :boolean, default: false
|
||||
}
|
||||
|
||||
down {
|
||||
DB.drop_column :sites, :editor_help_tooltips
|
||||
}
|
||||
end
|
22765
public/js/ace-linters/build/ace-language-client.js
Normal file
22765
public/js/ace-linters/build/ace-language-client.js
Normal file
File diff suppressed because one or more lines are too long
21707
public/js/ace-linters/build/ace-linters.js
Normal file
21707
public/js/ace-linters/build/ace-linters.js
Normal file
File diff suppressed because one or more lines are too long
13812
public/js/ace-linters/build/base-service.js
Normal file
13812
public/js/ace-linters/build/base-service.js
Normal file
File diff suppressed because it is too large
Load diff
53134
public/js/ace-linters/build/css-service.js
Normal file
53134
public/js/ace-linters/build/css-service.js
Normal file
File diff suppressed because one or more lines are too long
32000
public/js/ace-linters/build/html-service.js
Normal file
32000
public/js/ace-linters/build/html-service.js
Normal file
File diff suppressed because one or more lines are too long
105627
public/js/ace-linters/build/javascript-service.js
Normal file
105627
public/js/ace-linters/build/javascript-service.js
Normal file
File diff suppressed because one or more lines are too long
23587
public/js/ace-linters/build/json-service.js
Normal file
23587
public/js/ace-linters/build/json-service.js
Normal file
File diff suppressed because one or more lines are too long
17915
public/js/ace-linters/build/language-client.js
Normal file
17915
public/js/ace-linters/build/language-client.js
Normal file
File diff suppressed because one or more lines are too long
17047
public/js/ace-linters/build/lua-service.js
Normal file
17047
public/js/ace-linters/build/lua-service.js
Normal file
File diff suppressed because it is too large
Load diff
23373
public/js/ace-linters/build/php-service.js
Normal file
23373
public/js/ace-linters/build/php-service.js
Normal file
File diff suppressed because it is too large
Load diff
14903
public/js/ace-linters/build/python-service.js
Normal file
14903
public/js/ace-linters/build/python-service.js
Normal file
File diff suppressed because one or more lines are too long
821
public/js/ace-linters/build/service-manager.js
Normal file
821
public/js/ace-linters/build/service-manager.js
Normal file
|
@ -0,0 +1,821 @@
|
|||
(function webpackUniversalModuleDefinition(root, factory) {
|
||||
if(typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = factory();
|
||||
else if(typeof define === 'function' && define.amd)
|
||||
define([], factory);
|
||||
else {
|
||||
var a = factory();
|
||||
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
|
||||
}
|
||||
})(this, () => {
|
||||
return /******/ (() => { // webpackBootstrap
|
||||
/******/ "use strict";
|
||||
/******/ var __webpack_modules__ = ({
|
||||
|
||||
/***/ 2032:
|
||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ Go: () => (/* binding */ MessageType)
|
||||
/* harmony export */ });
|
||||
/* unused harmony exports BaseMessage, InitMessage, FormatMessage, CompleteMessage, ResolveCompletionMessage, HoverMessage, ValidateMessage, ChangeMessage, DeltasMessage, ChangeModeMessage, ChangeOptionsMessage, CloseDocumentMessage, CloseConnectionMessage, GlobalOptionsMessage, ConfigureFeaturesMessage, SignatureHelpMessage, DocumentHighlightMessage, GetSemanticTokensMessage, GetCodeActionsMessage, SetWorkspaceMessage, ExecuteCommandMessage, AppliedEditMessage */
|
||||
function _define_property(obj, key, value) {
|
||||
if (key in obj) {
|
||||
Object.defineProperty(obj, key, {
|
||||
value: value,
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true
|
||||
});
|
||||
} else {
|
||||
obj[key] = value;
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
class BaseMessage {
|
||||
constructor(documentIdentifier, callbackId){
|
||||
_define_property(this, "sessionId", void 0);
|
||||
_define_property(this, "documentUri", void 0);
|
||||
_define_property(this, "version", void 0);
|
||||
_define_property(this, "callbackId", void 0);
|
||||
this.sessionId = documentIdentifier.sessionId;
|
||||
this.documentUri = documentIdentifier.documentUri;
|
||||
this.callbackId = callbackId;
|
||||
}
|
||||
}
|
||||
class InitMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value, version, mode, options){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.init);
|
||||
_define_property(this, "mode", void 0);
|
||||
_define_property(this, "options", void 0);
|
||||
_define_property(this, "value", void 0);
|
||||
_define_property(this, "version", void 0);
|
||||
this.version = version;
|
||||
this.options = options;
|
||||
this.mode = mode;
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
class FormatMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value, format){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.format);
|
||||
_define_property(this, "value", void 0);
|
||||
_define_property(this, "format", void 0);
|
||||
this.value = value;
|
||||
this.format = format;
|
||||
}
|
||||
}
|
||||
class CompleteMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.complete);
|
||||
_define_property(this, "value", void 0);
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
class ResolveCompletionMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.resolveCompletion);
|
||||
_define_property(this, "value", void 0);
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
class HoverMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.hover);
|
||||
_define_property(this, "value", void 0);
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
class ValidateMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.validate);
|
||||
}
|
||||
}
|
||||
class ChangeMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value, version){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.change);
|
||||
_define_property(this, "value", void 0);
|
||||
_define_property(this, "version", void 0);
|
||||
this.value = value;
|
||||
this.version = version;
|
||||
}
|
||||
}
|
||||
class DeltasMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value, version){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.applyDelta);
|
||||
_define_property(this, "value", void 0);
|
||||
_define_property(this, "version", void 0);
|
||||
this.value = value;
|
||||
this.version = version;
|
||||
}
|
||||
}
|
||||
class ChangeModeMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value, version, mode){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.changeMode);
|
||||
_define_property(this, "mode", void 0);
|
||||
_define_property(this, "value", void 0);
|
||||
_define_property(this, "version", void 0);
|
||||
this.value = value;
|
||||
this.mode = mode;
|
||||
this.version = version;
|
||||
}
|
||||
}
|
||||
class ChangeOptionsMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, options, merge = false){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.changeOptions);
|
||||
_define_property(this, "options", void 0);
|
||||
_define_property(this, "merge", void 0);
|
||||
this.options = options;
|
||||
this.merge = merge;
|
||||
}
|
||||
}
|
||||
class CloseDocumentMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.closeDocument);
|
||||
}
|
||||
}
|
||||
class CloseConnectionMessage {
|
||||
constructor(callbackId){
|
||||
_define_property(this, "type", MessageType.closeConnection);
|
||||
_define_property(this, "callbackId", void 0);
|
||||
this.callbackId = callbackId;
|
||||
}
|
||||
}
|
||||
class GlobalOptionsMessage {
|
||||
constructor(serviceName, options, merge){
|
||||
_define_property(this, "type", MessageType.globalOptions);
|
||||
_define_property(this, "serviceName", void 0);
|
||||
_define_property(this, "options", void 0);
|
||||
_define_property(this, "merge", void 0);
|
||||
this.serviceName = serviceName;
|
||||
this.options = options;
|
||||
this.merge = merge;
|
||||
}
|
||||
}
|
||||
class ConfigureFeaturesMessage {
|
||||
constructor(serviceName, options){
|
||||
_define_property(this, "type", MessageType.configureFeatures);
|
||||
_define_property(this, "serviceName", void 0);
|
||||
_define_property(this, "options", void 0);
|
||||
this.serviceName = serviceName;
|
||||
this.options = options;
|
||||
}
|
||||
}
|
||||
class SignatureHelpMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.signatureHelp);
|
||||
_define_property(this, "value", void 0);
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
class DocumentHighlightMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.documentHighlight);
|
||||
_define_property(this, "value", void 0);
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
class GetSemanticTokensMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.getSemanticTokens);
|
||||
_define_property(this, "value", void 0);
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
class GetCodeActionsMessage extends BaseMessage {
|
||||
constructor(documentIdentifier, callbackId, value, context){
|
||||
super(documentIdentifier, callbackId);
|
||||
_define_property(this, "type", MessageType.getCodeActions);
|
||||
_define_property(this, "value", void 0);
|
||||
_define_property(this, "context", void 0);
|
||||
this.value = value;
|
||||
this.context = context;
|
||||
}
|
||||
}
|
||||
class SetWorkspaceMessage {
|
||||
constructor(value){
|
||||
_define_property(this, "type", MessageType.setWorkspace);
|
||||
_define_property(this, "value", void 0);
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
class ExecuteCommandMessage {
|
||||
constructor(serviceName, callbackId, command, args){
|
||||
_define_property(this, "callbackId", void 0);
|
||||
_define_property(this, "serviceName", void 0);
|
||||
_define_property(this, "type", MessageType.executeCommand);
|
||||
_define_property(this, "value", void 0);
|
||||
_define_property(this, "args", void 0);
|
||||
this.serviceName = serviceName;
|
||||
this.callbackId = callbackId;
|
||||
this.value = command;
|
||||
this.args = args;
|
||||
}
|
||||
}
|
||||
class AppliedEditMessage {
|
||||
constructor(value, serviceName, callbackId){
|
||||
_define_property(this, "callbackId", void 0);
|
||||
_define_property(this, "serviceName", void 0);
|
||||
_define_property(this, "type", MessageType.appliedEdit);
|
||||
_define_property(this, "value", void 0);
|
||||
this.serviceName = serviceName;
|
||||
this.callbackId = callbackId;
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
var MessageType;
|
||||
(function(MessageType) {
|
||||
MessageType[MessageType["init"] = 0] = "init";
|
||||
MessageType[MessageType["format"] = 1] = "format";
|
||||
MessageType[MessageType["complete"] = 2] = "complete";
|
||||
MessageType[MessageType["resolveCompletion"] = 3] = "resolveCompletion";
|
||||
MessageType[MessageType["change"] = 4] = "change";
|
||||
MessageType[MessageType["hover"] = 5] = "hover";
|
||||
MessageType[MessageType["validate"] = 6] = "validate";
|
||||
MessageType[MessageType["applyDelta"] = 7] = "applyDelta";
|
||||
MessageType[MessageType["changeMode"] = 8] = "changeMode";
|
||||
MessageType[MessageType["changeOptions"] = 9] = "changeOptions";
|
||||
MessageType[MessageType["closeDocument"] = 10] = "closeDocument";
|
||||
MessageType[MessageType["globalOptions"] = 11] = "globalOptions";
|
||||
MessageType[MessageType["configureFeatures"] = 12] = "configureFeatures";
|
||||
MessageType[MessageType["signatureHelp"] = 13] = "signatureHelp";
|
||||
MessageType[MessageType["documentHighlight"] = 14] = "documentHighlight";
|
||||
MessageType[MessageType["closeConnection"] = 15] = "closeConnection";
|
||||
MessageType[MessageType["capabilitiesChange"] = 16] = "capabilitiesChange";
|
||||
MessageType[MessageType["getSemanticTokens"] = 17] = "getSemanticTokens";
|
||||
MessageType[MessageType["getCodeActions"] = 18] = "getCodeActions";
|
||||
MessageType[MessageType["executeCommand"] = 19] = "executeCommand";
|
||||
MessageType[MessageType["applyEdit"] = 20] = "applyEdit";
|
||||
MessageType[MessageType["appliedEdit"] = 21] = "appliedEdit";
|
||||
MessageType[MessageType["setWorkspace"] = 22] = "setWorkspace";
|
||||
})(MessageType || (MessageType = {}));
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 7770:
|
||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ rL: () => (/* binding */ mergeObjects),
|
||||
/* harmony export */ z2: () => (/* binding */ notEmpty)
|
||||
/* harmony export */ });
|
||||
/* unused harmony exports mergeRanges, checkValueAgainstRegexpArray, convertToUri */
|
||||
|
||||
function mergeObjects(obj1, obj2, excludeUndefined = false) {
|
||||
if (!obj1) return obj2;
|
||||
if (!obj2) return obj1;
|
||||
if (excludeUndefined) {
|
||||
obj1 = excludeUndefinedValues(obj1);
|
||||
obj2 = excludeUndefinedValues(obj2);
|
||||
}
|
||||
const mergedObjects = {
|
||||
...obj2,
|
||||
...obj1
|
||||
}; // Give priority to obj1 values by spreading obj2 first, then obj1
|
||||
for (const key of Object.keys(mergedObjects)){
|
||||
if (obj1[key] && obj2[key]) {
|
||||
if (Array.isArray(obj1[key])) {
|
||||
mergedObjects[key] = obj1[key].concat(obj2[key]);
|
||||
} else if (Array.isArray(obj2[key])) {
|
||||
mergedObjects[key] = obj2[key].concat(obj1[key]);
|
||||
} else if (typeof obj1[key] === 'object' && typeof obj2[key] === 'object') {
|
||||
mergedObjects[key] = mergeObjects(obj1[key], obj2[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return mergedObjects;
|
||||
}
|
||||
function excludeUndefinedValues(obj) {
|
||||
const filteredEntries = Object.entries(obj).filter(([_, value])=>value !== undefined);
|
||||
return Object.fromEntries(filteredEntries);
|
||||
}
|
||||
function notEmpty(value) {
|
||||
return value !== null && value !== undefined;
|
||||
}
|
||||
//taken with small changes from ace-code
|
||||
function mergeRanges(ranges) {
|
||||
var list = ranges;
|
||||
list = list.sort(function(a, b) {
|
||||
return comparePoints(a.start, b.start);
|
||||
});
|
||||
var next = list[0], range;
|
||||
for(var i = 1; i < list.length; i++){
|
||||
range = next;
|
||||
next = list[i];
|
||||
var cmp = comparePoints(range.end, next.start);
|
||||
if (cmp < 0) continue;
|
||||
if (cmp == 0 && !range.isEmpty() && !next.isEmpty()) continue;
|
||||
if (comparePoints(range.end, next.end) < 0) {
|
||||
range.end.row = next.end.row;
|
||||
range.end.column = next.end.column;
|
||||
}
|
||||
list.splice(i, 1);
|
||||
next = range;
|
||||
i--;
|
||||
}
|
||||
return list;
|
||||
}
|
||||
function comparePoints(p1, p2) {
|
||||
return p1.row - p2.row || p1.column - p2.column;
|
||||
}
|
||||
function checkValueAgainstRegexpArray(value, regexpArray) {
|
||||
if (!regexpArray) {
|
||||
return false;
|
||||
}
|
||||
for(let i = 0; i < regexpArray.length; i++){
|
||||
if (regexpArray[i].test(value)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function convertToUri(filePath) {
|
||||
//already URI
|
||||
if (filePath.startsWith("file:///")) {
|
||||
return filePath;
|
||||
}
|
||||
return URI.file(filePath).toString();
|
||||
}
|
||||
|
||||
|
||||
/***/ })
|
||||
|
||||
/******/ });
|
||||
/************************************************************************/
|
||||
/******/ // The module cache
|
||||
/******/ var __webpack_module_cache__ = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/ // Check if module is in cache
|
||||
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
||||
/******/ if (cachedModule !== undefined) {
|
||||
/******/ return cachedModule.exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = __webpack_module_cache__[moduleId] = {
|
||||
/******/ // no module.id needed
|
||||
/******/ // no module.loaded needed
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/************************************************************************/
|
||||
/******/ /* webpack/runtime/define property getters */
|
||||
/******/ (() => {
|
||||
/******/ // define getter functions for harmony exports
|
||||
/******/ __webpack_require__.d = (exports, definition) => {
|
||||
/******/ for(var key in definition) {
|
||||
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
||||
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
||||
/******/ }
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/ })();
|
||||
/******/
|
||||
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
||||
/******/ (() => {
|
||||
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
||||
/******/ })();
|
||||
/******/
|
||||
/******/ /* webpack/runtime/make namespace object */
|
||||
/******/ (() => {
|
||||
/******/ // define __esModule on exports
|
||||
/******/ __webpack_require__.r = (exports) => {
|
||||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
||||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
||||
/******/ }
|
||||
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
||||
/******/ };
|
||||
/******/ })();
|
||||
/******/
|
||||
/************************************************************************/
|
||||
var __webpack_exports__ = {};
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ ServiceManager: () => (/* binding */ ServiceManager)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7770);
|
||||
/* harmony import */ var _message_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2032);
|
||||
function _define_property(obj, key, value) {
|
||||
if (key in obj) {
|
||||
Object.defineProperty(obj, key, {
|
||||
value: value,
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true
|
||||
});
|
||||
} else {
|
||||
obj[key] = value;
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
class ServiceManager {
|
||||
async getServicesCapabilitiesAfterCallback(documentIdentifier, message, callback) {
|
||||
let services = await callback(documentIdentifier, message.value, message.mode, message.options);
|
||||
if (services) {
|
||||
return Object.keys(services).reduce((acc, key)=>{
|
||||
var _services_key_serviceInstance, _services_key;
|
||||
acc[key] = ((_services_key = services[key]) === null || _services_key === void 0 ? void 0 : (_services_key_serviceInstance = _services_key.serviceInstance) === null || _services_key_serviceInstance === void 0 ? void 0 : _services_key_serviceInstance.serviceCapabilities) || null;
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
}
|
||||
async aggregateFeatureResponses(serviceInstances, feature, methodName, documentIdentifier, attrs) {
|
||||
return (await Promise.all(this.filterByFeature(serviceInstances, feature).map(async (service)=>{
|
||||
if (Array.isArray(attrs)) {
|
||||
return service[methodName](documentIdentifier, ...attrs);
|
||||
} else {
|
||||
return service[methodName](documentIdentifier, attrs);
|
||||
}
|
||||
}))).filter(_utils__WEBPACK_IMPORTED_MODULE_1__/* .notEmpty */ .z2);
|
||||
}
|
||||
applyOptionsToServices(serviceInstances, documentUri, options) {
|
||||
serviceInstances.forEach((service)=>{
|
||||
service.setOptions(documentUri, options);
|
||||
});
|
||||
}
|
||||
async closeAllConnections() {
|
||||
var services = this.$services;
|
||||
for(let serviceName in services){
|
||||
var _services_serviceName_serviceInstance, _services_serviceName;
|
||||
await ((_services_serviceName = services[serviceName]) === null || _services_serviceName === void 0 ? void 0 : (_services_serviceName_serviceInstance = _services_serviceName.serviceInstance) === null || _services_serviceName_serviceInstance === void 0 ? void 0 : _services_serviceName_serviceInstance.closeConnection());
|
||||
}
|
||||
}
|
||||
static async $initServiceInstance(service, ctx, workspaceUri) {
|
||||
let module;
|
||||
if ('type' in service) {
|
||||
if ([
|
||||
"socket",
|
||||
"webworker"
|
||||
].includes(service.type)) {
|
||||
module = await service.module();
|
||||
service.serviceInstance = new module["LanguageClient"](service, ctx, workspaceUri);
|
||||
} else throw "Unknown service type";
|
||||
} else {
|
||||
module = await service.module();
|
||||
service.serviceInstance = new module[service.className](service.modes);
|
||||
}
|
||||
if (service.options || service.initializationOptions) {
|
||||
var _service_options, _ref;
|
||||
service.serviceInstance.setGlobalOptions((_ref = (_service_options = service.options) !== null && _service_options !== void 0 ? _service_options : service.initializationOptions) !== null && _ref !== void 0 ? _ref : {});
|
||||
}
|
||||
service.serviceInstance.serviceData = service;
|
||||
return service.serviceInstance;
|
||||
}
|
||||
async $getServicesInstancesByMode(mode) {
|
||||
let services = this.findServicesByMode(mode);
|
||||
if (Object.keys(services).length === 0) {
|
||||
return [];
|
||||
}
|
||||
for(let serviceName in services){
|
||||
await this.initializeService(serviceName);
|
||||
}
|
||||
return services;
|
||||
}
|
||||
async initializeService(serviceName) {
|
||||
let service = this.$services[serviceName];
|
||||
if (!service.serviceInstance) {
|
||||
if (!this.serviceInitPromises[service.id]) {
|
||||
this.serviceInitPromises[service.id] = ServiceManager.$initServiceInstance(service, this.ctx, this.workspaceUri).then((instance)=>{
|
||||
service.serviceInstance = instance;
|
||||
service.serviceInstance.serviceName = serviceName;
|
||||
delete this.serviceInitPromises[service.id]; // Clean up
|
||||
return instance;
|
||||
});
|
||||
}
|
||||
return this.serviceInitPromises[service.id];
|
||||
} else {
|
||||
if (!service.serviceInstance.serviceName) {
|
||||
service.serviceInstance.serviceName = serviceName;
|
||||
}
|
||||
return service.serviceInstance;
|
||||
}
|
||||
}
|
||||
setGlobalOptions(serviceName, options, merge = false) {
|
||||
let service = this.$services[serviceName];
|
||||
if (!service) return;
|
||||
service.options = merge ? (0,_utils__WEBPACK_IMPORTED_MODULE_1__/* .mergeObjects */ .rL)(options, service.options) : options;
|
||||
if (service.serviceInstance) {
|
||||
service.serviceInstance.setGlobalOptions(service.options);
|
||||
}
|
||||
}
|
||||
setWorkspace(workspaceUri) {
|
||||
this.workspaceUri = workspaceUri;
|
||||
Object.values(this.$services).forEach((service)=>{
|
||||
var _service_serviceInstance;
|
||||
(_service_serviceInstance = service.serviceInstance) === null || _service_serviceInstance === void 0 ? void 0 : _service_serviceInstance.setWorkspace(this.workspaceUri);
|
||||
});
|
||||
}
|
||||
async addDocument(documentIdentifier, documentValue, mode, options) {
|
||||
if (!mode || !/^ace\/mode\//.test(mode)) return;
|
||||
mode = mode.replace("ace/mode/", "");
|
||||
mode = mode.replace(/golang$/, "go");
|
||||
let services = await this.$getServicesInstancesByMode(mode);
|
||||
if (Object.keys(services).length === 0) return;
|
||||
let documentItem = {
|
||||
uri: documentIdentifier.uri,
|
||||
version: documentIdentifier.version,
|
||||
languageId: mode,
|
||||
text: documentValue
|
||||
};
|
||||
Object.values(services).forEach((el)=>el.serviceInstance.addDocument(documentItem));
|
||||
this.$sessionIDToMode[documentIdentifier.uri] = mode;
|
||||
return services;
|
||||
}
|
||||
async changeDocumentMode(documentIdentifier, value, mode, options) {
|
||||
this.removeDocument(documentIdentifier);
|
||||
return await this.addDocument(documentIdentifier, value, mode, options);
|
||||
}
|
||||
removeDocument(document) {
|
||||
let services = this.getServicesInstances(document.uri);
|
||||
if (services.length > 0) {
|
||||
services.forEach((el)=>el.removeDocument(document));
|
||||
delete this.$sessionIDToMode[document.uri];
|
||||
}
|
||||
}
|
||||
getServicesInstances(documentUri) {
|
||||
let mode = this.$sessionIDToMode[documentUri];
|
||||
if (!mode) return []; //TODO:
|
||||
let services = this.findServicesByMode(mode);
|
||||
return Object.values(services).map((el)=>el.serviceInstance).filter(_utils__WEBPACK_IMPORTED_MODULE_1__/* .notEmpty */ .z2);
|
||||
}
|
||||
filterByFeature(serviceInstances, feature) {
|
||||
return serviceInstances.filter((el)=>{
|
||||
if (!el.serviceData.features[feature]) {
|
||||
return false;
|
||||
}
|
||||
const capabilities = el.serviceCapabilities;
|
||||
switch(feature){
|
||||
case "hover":
|
||||
return capabilities.hoverProvider == true;
|
||||
case "completion":
|
||||
return capabilities.completionProvider != undefined;
|
||||
case "completionResolve":
|
||||
var _capabilities_completionProvider;
|
||||
return ((_capabilities_completionProvider = capabilities.completionProvider) === null || _capabilities_completionProvider === void 0 ? void 0 : _capabilities_completionProvider.resolveProvider) === true;
|
||||
case "format":
|
||||
return capabilities.documentRangeFormattingProvider == true || capabilities.documentFormattingProvider == true;
|
||||
case "diagnostics":
|
||||
return capabilities.diagnosticProvider != undefined;
|
||||
case "signatureHelp":
|
||||
return capabilities.signatureHelpProvider != undefined;
|
||||
case "documentHighlight":
|
||||
return capabilities.documentHighlightProvider == true;
|
||||
case "semanticTokens":
|
||||
return capabilities.semanticTokensProvider != undefined;
|
||||
case "codeAction":
|
||||
return capabilities.codeActionProvider != undefined;
|
||||
case "executeCommand":
|
||||
return capabilities.executeCommandProvider != undefined;
|
||||
}
|
||||
});
|
||||
}
|
||||
findServicesByMode(mode) {
|
||||
let servicesWithName = {};
|
||||
Object.entries(this.$services).forEach(([key, value])=>{
|
||||
let extensions = value.modes.split('|');
|
||||
if (extensions.includes(mode)) servicesWithName[key] = this.$services[key];
|
||||
});
|
||||
return servicesWithName;
|
||||
}
|
||||
registerService(name, service) {
|
||||
service.id = name;
|
||||
service.features = this.setDefaultFeaturesState(service.features);
|
||||
this.$services[name] = service;
|
||||
}
|
||||
registerServer(name, clientConfig) {
|
||||
clientConfig.id = name;
|
||||
clientConfig.className = "LanguageClient";
|
||||
clientConfig.features = this.setDefaultFeaturesState(clientConfig.features);
|
||||
this.$services[name] = clientConfig;
|
||||
}
|
||||
configureFeatures(name, features) {
|
||||
features = this.setDefaultFeaturesState(features);
|
||||
if (!this.$services[name]) return;
|
||||
this.$services[name].features = features;
|
||||
}
|
||||
setDefaultFeaturesState(serviceFeatures) {
|
||||
var _features, _features1, _features2, _features3, _features4, _features5, _features6, _features7, _features8, _features9;
|
||||
let features = serviceFeatures !== null && serviceFeatures !== void 0 ? serviceFeatures : {};
|
||||
var _hover;
|
||||
(_hover = (_features = features).hover) !== null && _hover !== void 0 ? _hover : _features.hover = true;
|
||||
var _completion;
|
||||
(_completion = (_features1 = features).completion) !== null && _completion !== void 0 ? _completion : _features1.completion = true;
|
||||
var _completionResolve;
|
||||
(_completionResolve = (_features2 = features).completionResolve) !== null && _completionResolve !== void 0 ? _completionResolve : _features2.completionResolve = true;
|
||||
var _format;
|
||||
(_format = (_features3 = features).format) !== null && _format !== void 0 ? _format : _features3.format = true;
|
||||
var _diagnostics;
|
||||
(_diagnostics = (_features4 = features).diagnostics) !== null && _diagnostics !== void 0 ? _diagnostics : _features4.diagnostics = true;
|
||||
var _signatureHelp;
|
||||
(_signatureHelp = (_features5 = features).signatureHelp) !== null && _signatureHelp !== void 0 ? _signatureHelp : _features5.signatureHelp = true;
|
||||
var _documentHighlight;
|
||||
(_documentHighlight = (_features6 = features).documentHighlight) !== null && _documentHighlight !== void 0 ? _documentHighlight : _features6.documentHighlight = true;
|
||||
var _semanticTokens;
|
||||
(_semanticTokens = (_features7 = features).semanticTokens) !== null && _semanticTokens !== void 0 ? _semanticTokens : _features7.semanticTokens = true;
|
||||
var _codeAction;
|
||||
(_codeAction = (_features8 = features).codeAction) !== null && _codeAction !== void 0 ? _codeAction : _features8.codeAction = true;
|
||||
var _executeCommand;
|
||||
(_executeCommand = (_features9 = features).executeCommand) !== null && _executeCommand !== void 0 ? _executeCommand : _features9.executeCommand = true;
|
||||
return features;
|
||||
}
|
||||
constructor(ctx){
|
||||
_define_property(this, "$services", {});
|
||||
_define_property(this, "serviceInitPromises", {});
|
||||
_define_property(this, "$sessionIDToMode", {});
|
||||
_define_property(this, "ctx", void 0);
|
||||
_define_property(this, "workspaceUri", void 0);
|
||||
this.ctx = ctx;
|
||||
let doValidation = async (document, servicesInstances)=>{
|
||||
servicesInstances !== null && servicesInstances !== void 0 ? servicesInstances : servicesInstances = this.getServicesInstances(document.uri);
|
||||
if (servicesInstances.length === 0) {
|
||||
return;
|
||||
}
|
||||
//this is list of documents linked to services
|
||||
let documentUrisList = Object.keys(servicesInstances[0].documents);
|
||||
servicesInstances = this.filterByFeature(servicesInstances, "diagnostics");
|
||||
servicesInstances = servicesInstances.filter((el)=>{
|
||||
return el.serviceCapabilities.diagnosticProvider;
|
||||
});
|
||||
if (servicesInstances.length === 0) {
|
||||
return;
|
||||
}
|
||||
let postMessage = {
|
||||
"type": _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.validate
|
||||
};
|
||||
for (let documentUri of documentUrisList){
|
||||
var _ref;
|
||||
let diagnostics = (_ref = await Promise.all(servicesInstances.map((el)=>{
|
||||
return el.doValidation({
|
||||
uri: documentUri
|
||||
});
|
||||
}))) !== null && _ref !== void 0 ? _ref : [];
|
||||
postMessage["documentUri"] = documentUri;
|
||||
postMessage["value"] = diagnostics.flat();
|
||||
ctx.postMessage(postMessage);
|
||||
}
|
||||
};
|
||||
let provideValidationForServiceInstance = async (serviceName)=>{
|
||||
let service = this.$services[serviceName];
|
||||
if (!service) return;
|
||||
var serviceInstance = service.serviceInstance;
|
||||
if (serviceInstance) await doValidation(undefined, [
|
||||
serviceInstance
|
||||
]);
|
||||
};
|
||||
ctx.addEventListener("message", async (ev)=>{
|
||||
let message = ev.data;
|
||||
var _message_sessionId;
|
||||
let sessionID = (_message_sessionId = message["sessionId"]) !== null && _message_sessionId !== void 0 ? _message_sessionId : "";
|
||||
var _message_documentUri;
|
||||
let documentUri = (_message_documentUri = message["documentUri"]) !== null && _message_documentUri !== void 0 ? _message_documentUri : "";
|
||||
let version = message["version"];
|
||||
let postMessage = {
|
||||
"type": message.type,
|
||||
"sessionId": sessionID,
|
||||
"callbackId": message["callbackId"]
|
||||
};
|
||||
let serviceInstances = this.getServicesInstances(documentUri);
|
||||
let documentIdentifier = {
|
||||
uri: documentUri,
|
||||
version: version
|
||||
};
|
||||
switch(message.type){
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.format:
|
||||
serviceInstances = this.filterByFeature(serviceInstances, "format");
|
||||
if (serviceInstances.length > 0) {
|
||||
//we will use only first service to format
|
||||
postMessage["value"] = await serviceInstances[0].format(documentIdentifier, message.value, message.format);
|
||||
}
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.complete:
|
||||
postMessage["value"] = (await Promise.all(this.filterByFeature(serviceInstances, "completion").map(async (service)=>{
|
||||
return {
|
||||
completions: await service.doComplete(documentIdentifier, message["value"]),
|
||||
service: service.serviceData.className
|
||||
};
|
||||
}))).filter(_utils__WEBPACK_IMPORTED_MODULE_1__/* .notEmpty */ .z2);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.resolveCompletion:
|
||||
var _this_filterByFeature_find;
|
||||
let serviceName = message.value["service"];
|
||||
postMessage["value"] = await ((_this_filterByFeature_find = this.filterByFeature(serviceInstances, "completionResolve").find((service)=>{
|
||||
if (service.serviceData.className === serviceName) {
|
||||
return service;
|
||||
}
|
||||
})) === null || _this_filterByFeature_find === void 0 ? void 0 : _this_filterByFeature_find.doResolve(message.value));
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.change:
|
||||
serviceInstances.forEach((service)=>{
|
||||
service.setValue(documentIdentifier, message["value"]);
|
||||
});
|
||||
await doValidation(documentIdentifier, serviceInstances);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.applyDelta:
|
||||
serviceInstances.forEach((service)=>{
|
||||
service.applyDeltas(documentIdentifier, message["value"]);
|
||||
});
|
||||
await doValidation(documentIdentifier, serviceInstances);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.hover:
|
||||
postMessage["value"] = await this.aggregateFeatureResponses(serviceInstances, "hover", "doHover", documentIdentifier, message.value);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.validate:
|
||||
postMessage["value"] = await doValidation(documentIdentifier, serviceInstances);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.init:
|
||||
postMessage["value"] = await this.getServicesCapabilitiesAfterCallback(documentIdentifier, message, this.addDocument.bind(this));
|
||||
await doValidation(documentIdentifier);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.changeMode:
|
||||
postMessage["value"] = await this.getServicesCapabilitiesAfterCallback(documentIdentifier, message, this.changeDocumentMode.bind(this));
|
||||
await doValidation(documentIdentifier);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.changeOptions:
|
||||
this.applyOptionsToServices(serviceInstances, documentUri, message.options);
|
||||
await doValidation(documentIdentifier, serviceInstances);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.closeDocument:
|
||||
this.removeDocument(documentIdentifier);
|
||||
await doValidation(documentIdentifier, serviceInstances);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.closeConnection:
|
||||
await this.closeAllConnections();
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.globalOptions:
|
||||
this.setGlobalOptions(message.serviceName, message.options, message.merge);
|
||||
await provideValidationForServiceInstance(message.serviceName);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.configureFeatures:
|
||||
this.configureFeatures(message.serviceName, message.options);
|
||||
await provideValidationForServiceInstance(message.serviceName);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.signatureHelp:
|
||||
postMessage["value"] = await this.aggregateFeatureResponses(serviceInstances, "signatureHelp", "provideSignatureHelp", documentIdentifier, message.value);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.documentHighlight:
|
||||
let highlights = await this.aggregateFeatureResponses(serviceInstances, "documentHighlight", "findDocumentHighlights", documentIdentifier, message.value);
|
||||
postMessage["value"] = highlights.flat();
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.getSemanticTokens:
|
||||
serviceInstances = this.filterByFeature(serviceInstances, "semanticTokens");
|
||||
if (serviceInstances.length > 0) {
|
||||
//we will use only first service
|
||||
postMessage["value"] = await serviceInstances[0].getSemanticTokens(documentIdentifier, message.value);
|
||||
}
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.getCodeActions:
|
||||
let value = message.value;
|
||||
let context = message.context;
|
||||
postMessage["value"] = (await Promise.all(this.filterByFeature(serviceInstances, "codeAction").map(async (service)=>{
|
||||
return {
|
||||
codeActions: await service.getCodeActions(documentIdentifier, value, context),
|
||||
service: service.serviceName
|
||||
};
|
||||
}))).filter(_utils__WEBPACK_IMPORTED_MODULE_1__/* .notEmpty */ .z2);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.executeCommand:
|
||||
var _this_$services_message_serviceName_serviceInstance, _this_$services_message_serviceName;
|
||||
postMessage["value"] = (_this_$services_message_serviceName = this.$services[message.serviceName]) === null || _this_$services_message_serviceName === void 0 ? void 0 : (_this_$services_message_serviceName_serviceInstance = _this_$services_message_serviceName.serviceInstance) === null || _this_$services_message_serviceName_serviceInstance === void 0 ? void 0 : _this_$services_message_serviceName_serviceInstance.executeCommand(message.value, message.args);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.appliedEdit:
|
||||
var _this_$services_message_serviceName_serviceInstance1, _this_$services_message_serviceName1;
|
||||
postMessage["value"] = (_this_$services_message_serviceName1 = this.$services[message.serviceName]) === null || _this_$services_message_serviceName1 === void 0 ? void 0 : (_this_$services_message_serviceName_serviceInstance1 = _this_$services_message_serviceName1.serviceInstance) === null || _this_$services_message_serviceName_serviceInstance1 === void 0 ? void 0 : _this_$services_message_serviceName_serviceInstance1.sendAppliedResult(message.value, message.callbackId);
|
||||
break;
|
||||
case _message_types__WEBPACK_IMPORTED_MODULE_0__/* .MessageType */ .Go.setWorkspace:
|
||||
this.setWorkspace(message.value);
|
||||
break;
|
||||
}
|
||||
ctx.postMessage(postMessage);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/******/ return __webpack_exports__;
|
||||
/******/ })()
|
||||
;
|
||||
});
|
188744
public/js/ace-linters/build/typescript-service.js
Normal file
188744
public/js/ace-linters/build/typescript-service.js
Normal file
File diff suppressed because one or more lines are too long
42302
public/js/ace-linters/build/xml-service.js
Normal file
42302
public/js/ace-linters/build/xml-service.js
Normal file
File diff suppressed because it is too large
Load diff
71863
public/js/ace-linters/build/yaml-service.js
Normal file
71863
public/js/ace-linters/build/yaml-service.js
Normal file
File diff suppressed because one or more lines are too long
|
@ -22,6 +22,32 @@
|
|||
.footer-Base {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ace_tooltip a {
|
||||
color: #e93250;
|
||||
}
|
||||
|
||||
.ace_tooltip code {
|
||||
border-left: 0px;
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
.ace_tooltip {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.ace_tooltip li {
|
||||
line-height: normal;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.ace_tooltip div {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.ace_tooltip.ace_dark {
|
||||
background: rgb(48, 66, 75);
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="header-Outro editor">
|
||||
|
@ -147,7 +173,7 @@
|
|||
</div>
|
||||
<div class="modal-body">
|
||||
<p>
|
||||
Enable Code Suggestions:
|
||||
Enable Code Autocomplete:
|
||||
<input name="editor_autocomplete_enabled" type="hidden" value="false">
|
||||
<input name="editor_autocomplete_enabled" type="checkbox" value="true"
|
||||
<% if current_site.owner.editor_autocomplete_enabled %>
|
||||
|
@ -155,6 +181,15 @@
|
|||
<% end %>
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
Enable MDN Help:
|
||||
<input name="editor_help_tooltips" type="hidden" value="false">
|
||||
<input name="editor_help_tooltips" type="checkbox" value="true"
|
||||
<% if current_site.owner.editor_help_tooltips %>
|
||||
checked
|
||||
<% end %>
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
Font Size:
|
||||
<select name="editor_font_size">
|
||||
|
@ -189,6 +224,7 @@
|
|||
|
||||
<script src="/js/ace/ace.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="/js/ace/ext-language_tools.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="/js/ace-linters/build/ace-linters.js"></script>
|
||||
|
||||
<script>
|
||||
var unsavedChanges = false
|
||||
|
@ -275,6 +311,7 @@
|
|||
cache: false,
|
||||
success: function(resp) {
|
||||
ace.require("ace/ext/language_tools");
|
||||
|
||||
editor = ace.edit("editor")
|
||||
setTheme()
|
||||
<% if @ace_mode %>
|
||||
|
@ -289,8 +326,11 @@
|
|||
autoScrollEditorIntoView: true,
|
||||
// settings based options here
|
||||
<% if current_site.owner.editor_autocomplete_enabled %>
|
||||
enableBasicAutocompletion: true,
|
||||
enableLiveAutocompletion: true,
|
||||
enableBasicAutocompletion: true,
|
||||
enableLiveAutocompletion: true,
|
||||
behavioursEnabled: true,
|
||||
<% else %>
|
||||
behavioursEnabled: false,
|
||||
<% end %>
|
||||
enableSnippets: true,
|
||||
})
|
||||
|
@ -302,12 +342,10 @@
|
|||
editor.setKeyboardHandler("ace/keyboard/vscode");
|
||||
<% end %>
|
||||
|
||||
console.log(ace.version);
|
||||
console.log(editor.getOptions());
|
||||
|
||||
|
||||
// Disable autocomplete
|
||||
editor.setBehavioursEnabled(false)
|
||||
<% if current_site.owner.editor_help_tooltips %>
|
||||
var provider = LanguageProvider.fromCdn(window.location.origin + "/js/ace-linters/build");
|
||||
provider.registerEditor(editor);
|
||||
<% end %>
|
||||
|
||||
editor.setValue(resp, -1)
|
||||
editor.getSession().setUndoManager(new ace.UndoManager())
|
||||
|
|
Loading…
Add table
Reference in a new issue