UNPKG

@dcloudio/uni-debugger

Version:

uni-app debugger

64 lines (59 loc) 1.89 kB
// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. Sources.GoToLineQuickOpen = class extends QuickOpen.FilteredListWidget.Provider { /** * @override * @param {?number} itemIndex * @param {string} promptValue */ selectItem(itemIndex, promptValue) { const uiSourceCode = this._currentUISourceCode(); if (!uiSourceCode) return; const position = this._parsePosition(promptValue); if (!position) return; Common.Revealer.reveal(uiSourceCode.uiLocation(position.line - 1, position.column - 1)); } /** * @override * @param {string} query * @return {string} */ notFoundText(query) { if (!this._currentUISourceCode()) return Common.UIString('No file selected.'); const position = this._parsePosition(query); if (!position) return Common.UIString('Type a number to go to that line.'); let text = Common.UIString('Go to line ') + position.line; if (position.column && position.column > 1) text += Common.UIString(' and column ') + position.column; text += '.'; return text; } /** * @param {string} query * @return {?{line: number, column: number}} */ _parsePosition(query) { const parts = query.match(/([0-9]+)(\:[0-9]*)?/); if (!parts || !parts[0] || parts[0].length !== query.length) return null; const line = parseInt(parts[1], 10); let column; if (parts[2]) column = parseInt(parts[2].substring(1), 10); return {line: Math.max(line | 0, 1), column: Math.max(column | 0, 1)}; } /** * @return {?Workspace.UISourceCode} */ _currentUISourceCode() { const sourcesView = UI.context.flavor(Sources.SourcesView); if (!sourcesView) return null; return sourcesView.currentUISourceCode(); } };