V07BiT
Главная
Emmet
JS-дополнение
JS-дополнение после точки
Lua-макрос для встроенного редактора Far Manager: после ввода точки у известного
объекта показывает список методов, свойств и событий и вставляет выбранное —
как в IDE. Работает по статическому словарю, без анализа кода (как классические
словари-плагины в vim).
Использование
В файле .js, .mjs, .cjs или
.jsx введите имя объекта и точку — сразу появится список.
Набрали Список Enter
document.getElementById, querySelector, body, onclick… document.getElementById('');
console.log, warn, error, group… console.log();
Math.E, LN2, max, random… Math.max();
window.location.assign, reload, replace… window.location.assign('');
метод вставляется сразу с закрывающей скобкой и ;; если первый
параметр — строка (DOMString, string и т.п.), сразу
ставятся кавычки: getElementById('');;
курсор — внутри скобок или, для строк, между кавычками — сразу вводите
аргумент;
свойства и события вставляются просто именем без скобок;
Enter — вставить, Esc — оставить только точку;
у неизвестных объектов (переменных, this, чисел) меню не
появляется — точка вставляется как обычно.
Как определяется объект
Берётся последний идентификатор перед точкой и ищется в словаре:
точное имя — Math, JSON, Date…
псевдоним глобальных объектов — document → Document,
window/top/parent/self →
Window, console → Console,
location → Location, navigator →
Navigator, history → History,
event → Event, localStorage /
sessionStorage → Storage;
имя с заглавной буквы — так работает window.location.
(последний сегмент location → Location).
Словарь
Словарь — файл jsdict.lua: 412 объектов, более 3600 членов
(методы, свойства, события DOM/JS: Document, Window,
Element, HTMLElement, все HTML-элементы,
Array, String, Object, Math,
JSON, WebGL, SVG и др.). Загружается макросом один раз, при первом
вызове.
Расширить словарь можно двумя способами:
вручную дописать объекты/члены в jsdict.lua (формат
{ n = "имя", p = { "параметры" }, d = "сигнатура", m = true } —
m означает метод, p — параметры для списка);
перегенерировать целиком из исходников:
node dev/build_jsdict.js <папка sublime-completions> jsdict.lua.
Исходные данные — пакет
JavaScript-Completions
(MIT, © 2014 Lorenzo Pichilli). Данные из описаний MDN/спецификаций, покрытие
объектов неполное (например, у
Location только методы). Формат
членов:
n — имя,
p — параметры,
d —
описание/сигнатура,
m — метод.
Ограничения
нет семантики: для переменных и произвольных цепочек
(a.b.c., результатов функций) список не появляется;
события-свойства вида onclick вставляются как
присваивание, а не addEventListener;
Node.js (fs., path.) и jQuery в словаре нет —
можно добавить как отдельные объекты.
Установка
Скачать архив JS-дополнения: farjs.7z
(страница загрузки — download.php ).
Убедитесь, что Far Manager завершён.
Распакуйте архив (нужен 7-Zip) прямо в папку макросов профиля — без подпапок:
%APPDATA%\Far Manager\Profile\Macros\scripts\.
Запустите Far Manager. При старте не должно быть ошибок (проверьте Alt+F8 ).
Файлы
Файл Назначение
js_far.luaмакрос: клавиша . в редакторе
jsdict.luaсловарь объектов
dev/build_jsdict.jsконвертер исходников в словарь
Полный справочник объектов
Все 412 объектов словаря jsdict.lua, сгруппированы по первой букве. Раскройте раздел, чтобы увидеть объекты и число членов.
A (14)
Объект Членов
AnalyserNode8
ApplicationCache18
Array23
ArrayBuffer3
Attr6
AudioBuffer5
AudioBufferSourceNode8
AudioDestinationNode1
AudioListener5
AudioParam8
AudioProcessingEvent3
AudioTrack5
AudioTrackList6
AutocompleteErrorEvent1
B (5)
Объект Членов
BarProp1
BeforeUnloadEvent1
Blob4
Boolean2
BroadcastChannel3
C (26)
Объект Членов
CSS1
CSSCharsetRule1
CSSGroupingRule3
CSSHostRule3
CSSImportRule3
CSSMarginRule2
CSSMediaRule1
CSSNamespaceRule2
CSSPageRule2
CSSRule13
CSSRuleList2
CSSStyleDeclaration12
CSSStyleRule2
CSSStyleSheet4
CanvasGradient1
CanvasPattern1
CanvasProxy1
CanvasRenderingContext2D67
ChannelMergerNode0
ChannelSplitterNode0
CharacterData13
CloseEvent3
Comment0
Console19
ConvolverNode2
CustomEvent2
D (17)
Объект Членов
DOMError2
DOMImplementation4
DOMSettableTokenList1
DOMTokenList6
DataTransfer9
DataTransferItem4
DataTransferItemList5
DataView19
Date45
DedicatedWorkerGlobalScope2
DelayNode1
Document148
DocumentFragment11
DocumentType7
DragEvent1
DrawingStyle11
DynamicsCompressorNode6
E (10)
Объект Членов
Element41
ElementTimeControl4
Elements2
Error2
ErrorEvent5
Event17
EventListener1
EventSource10
EventTarget3
External2
F (7)
Объект Членов
File2
FileList2
FileReader16
FileReaderSync3
Float32Array8
Float64Array8
Function5
G (3)
Объект Членов
GainNode1
GetSVGDocument1
Global12
H (73)
Объект Членов
HTMLAnchorElement8
HTMLAreaElement10
HTMLAudioElement0
HTMLBRElement0
HTMLBaseElement2
HTMLBodyElement13
HTMLButtonElement19
HTMLCanvasElement8
HTMLCollection3
HTMLContentElement3
HTMLDListElement0
HTMLDataElement1
HTMLDataListElement1
HTMLDetailsElement1
HTMLDialogElement5
HTMLDivElement0
HTMLElement96
HTMLEmbedElement5
HTMLFieldSetElement11
HTMLFormElement17
HTMLHRElement0
HTMLHeadElement0
HTMLHeadingElement0
HTMLHtmlElement0
HTMLIFrameElement10
HTMLImageElement11
HTMLInputElement55
HTMLKeygenElement14
HTMLLIElement1
HTMLLabelElement3
HTMLLegendElement1
HTMLLinkElement9
HTMLMapElement3
HTMLMediaElement44
HTMLMenuElement2
HTMLMenuItemElement8
HTMLMetaElement3
HTMLMeterElement7
HTMLModElement2
HTMLOListElement3
HTMLObjectElement17
HTMLOptGroupElement2
HTMLOptionElement8
HTMLOutputElement13
HTMLParagraphElement0
HTMLParamElement2
HTMLPreElement0
HTMLProgressElement4
HTMLQuoteElement1
HTMLScriptElement7
HTMLSelectElement25
HTMLShadowElement2
HTMLSourceElement2
HTMLSpanElement0
HTMLStyleElement4
HTMLTableCaptionElement0
HTMLTableCellElement4
HTMLTableColElement1
HTMLTableDataCellElement0
HTMLTableElement16
HTMLTableHeaderCellElement4
HTMLTableRowElement5
HTMLTableSectionElement3
HTMLTemplateElement1
HTMLTextAreaElement32
HTMLTimeElement1
HTMLTitleElement1
HTMLTrackElement11
HTMLUListElement0
HTMLUnknownElement0
HTMLVideoElement5
HashChangeEvent2
History7
I (16)
Объект Членов
IDBCursor8
IDBCursorWithValue1
IDBDatabase10
IDBFactory3
IDBIndex10
IDBKeyRange8
IDBObjectStore15
IDBOpenDBRequest2
IDBRequest7
IDBTransaction8
IDBVersionChangeEvent2
ImageBitmap2
ImageData3
Int16Array8
Int32Array8
Int8Array8
J (1)
L (1)
M (15)
Объект Членов
Math26
MediaController29
MediaElementAudioSourceNode0
MediaError5
MediaList5
MediaStreamAudioDestinationNode1
MediaStreamAudioSourceNode0
MessageChannel2
MessageEvent5
MessagePort4
MimeType4
MimeTypeArray3
Miscellaneous34
MutationObserver3
MutationRecord9
N (6)
Объект Членов
Navigator21
Node44
NodeFilter17
NodeIterator8
NodeList2
Number11
O (2)
Объект Членов
Object19
OfflineAudioCompletionEvent1
P (9)
Объект Членов
PageTransitionEvent1
Path2D13
PeriodicWave0
Plugin6
PluginArray4
PopStateEvent1
PortCollection4
ProcessingInstruction2
PseudoElement3
R (3)
Объект Членов
Range30
RegExp6
RelatedEvent1
S (165)
Объект Членов
SVGAElement13
SVGAltGlyphDefElement0
SVGAltGlyphElement3
SVGAltGlyphItemElement0
SVGAngle11
SVGAnimateColorElement3
SVGAnimateElement3
SVGAnimateMotionElement0
SVGAnimateTransformElement0
SVGAnimatedAngle2
SVGAnimatedBoolean2
SVGAnimatedEnumeration2
SVGAnimatedInteger2
SVGAnimatedLength2
SVGAnimatedLengthList2
SVGAnimatedNumber2
SVGAnimatedNumberList2
SVGAnimatedPathData4
SVGAnimatedPoints2
SVGAnimatedPreserveAspectRatio2
SVGAnimatedRect2
SVGAnimatedString2
SVGAnimatedTransformList2
SVGAnimationElement13
SVGCSSRule1
SVGCircleElement14
SVGClipPathElement15
SVGColor10
SVGColorProfileElement10
SVGColorProfileRule9
SVGComponentTransferFunctionElement13
SVGCursorElement8
SVGDefsElement11
SVGDescElement5
SVGDocument5
SVGElement5
SVGElementInstance8
SVGElementInstanceList2
SVGEllipseElement15
SVGExternalResourcesRequired1
SVGFEBlendElement14
SVGFEColorMatrixElement13
SVGFEComponentTransferElement6
SVGFECompositeElement19
SVGFEConvolveMatrixElement21
SVGFEDiffuseLightingElement10
SVGFEDisplacementMapElement15
SVGFEDistantLightElement2
SVGFEFloodElement5
SVGFEFuncAElement0
SVGFEFuncBElement0
SVGFEFuncGElement0
SVGFEFuncRElement0
SVGFEGaussianBlurElement9
SVGFEImageElement10
SVGFEMergeElement5
SVGFEMergeNodeElement1
SVGFEMorphologyElement12
SVGFEOffsetElement8
SVGFEPointLightElement3
SVGFESpecularLightingElement11
SVGFESpotLightElement8
SVGFETileElement6
SVGFETurbulenceElement17
SVGFilterElement19
SVGFilterPrimitiveStandardAttributes5
SVGFitToViewBox2
SVGFontElement4
SVGFontFaceElement0
SVGFontFaceFormatElement0
SVGFontFaceNameElement0
SVGFontFaceSrcElement0
SVGFontFaceUriElement0
SVGForeignObjectElement15
SVGGElement11
SVGGlyphElement3
SVGGlyphRefElement10
SVGGradientElement15
SVGHKernElement0
SVGICCColor2
SVGImageElement17
SVGLangSpace2
SVGLength17
SVGLengthList8
SVGLineElement15
SVGLinearGradientElement4
SVGLocatable6
SVGMPathElement2
SVGMarkerElement23
SVGMaskElement19
SVGMatrix17
SVGMetadataElement0
SVGMissingGlyphElement3
SVGNumber1
SVGNumberList8
SVGPaint14
SVGPathElement38
SVGPathSeg22
SVGPathSegArcAbs7
SVGPathSegArcRel7
SVGPathSegClosePath0
SVGPathSegCurvetoCubicAbs6
SVGPathSegCurvetoCubicRel6
SVGPathSegCurvetoCubicSmoothAbs4
SVGPathSegCurvetoCubicSmoothRel4
SVGPathSegCurvetoQuadraticAbs4
SVGPathSegCurvetoQuadraticRel4
SVGPathSegCurvetoQuadraticSmoothAbs2
SVGPathSegCurvetoQuadraticSmoothRel2
SVGPathSegLinetoAbs2
SVGPathSegLinetoHorizontalAbs1
SVGPathSegLinetoHorizontalRel1
SVGPathSegLinetoRel2
SVGPathSegLinetoVerticalAbs1
SVGPathSegLinetoVerticalRel1
SVGPathSegList8
SVGPathSegMovetoAbs2
SVGPathSegMovetoRel2
SVGPatternElement23
SVGPoint3
SVGPointList8
SVGPolygonElement13
SVGPolylineElement13
SVGPreserveAspectRatio16
SVGRadialGradientElement5
SVGRect4
SVGRectElement17
SVGRenderingIntent6
SVGSVGElement60
SVGScriptElement3
SVGSetElement0
SVGStopElement4
SVGStringList8
SVGStylable3
SVGStyleElement5
SVGSwitchElement11
SVGSymbolElement8
SVGTRefElement1
SVGTSpanElement0
SVGTests4
SVGTextContentElement24
SVGTextElement1
SVGTextPathElement10
SVGTextPositioningElement5
SVGTitleElement5
SVGTransform16
SVGTransformList10
SVGTransformable1
SVGURIReference1
SVGUnitTypes3
SVGUseElement18
SVGVKernElement0
SVGViewElement8
SVGViewSpec8
SVGZoomAndPan4
SVGZoomEvent5
ScriptProcessorNode2
ShadowRoot11
SharedWorker2
SharedWorkerGlobalScope3
Storage6
StorageEvent5
String21
StyleSheet7
StyleSheetList2
T (11)
Объект Членов
Text2
TextMetrics12
TextTrack11
TextTrackCue7
TextTrackCueList3
TextTrackList6
TimeEvent3
TimeRanges3
Touch1
TrackEvent1
TreeWalker11
U (5)
Объект Членов
URL3
Uint16Array8
Uint32Array8
Uint8Array8
Uint8ClampedArray8
V (3)
Объект Членов
ValidityState11
VideoTrack5
VideoTrackList7
W (18)
Объект Членов
WebGLActiveInfo3
WebGLBuffer0
WebGLContextEvent1
WebGLFramebuffer0
WebGLObject0
WebGLProgram0
WebGLRenderbuffer0
WebGLRenderingContext436
WebGLShader0
WebGLShaderPrecisionFormat3
WebGLTexture0
WebGLUniformLocation0
WebSocket16
Window124
Worker4
WorkerGlobalScope16
WorkerLocation0
WorkerNavigator10
X (2)
Объект Членов
XMLDocument1
XMLHttpRequest19
Генератор полного справочника — dev/gen_js_help.lua. Обновление
справочника: перегенерировать jsdict.lua, затем запустить генератор.
↑