Skip to content

Commit 91d9a26

Browse files
authored
Merge pull request #48 from appliedengdesign/bugfix/linenumberer
Line Numberer Fix
2 parents dfe8a05 + 05af17b commit 91d9a26

File tree

17 files changed

+320
-291
lines changed

17 files changed

+320
-291
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,15 @@ G-Code Syntax is customizable and provides many configuration settings to allow
112112
| `gcode.general.units` | Choose the units for the file. Options are Auto, Inch or Metric |
113113
| `gcode.general.outputLevel` | Configure Output level for debugging purposes |
114114
| `gcode.lineNumberer.addSpaceAfter` | Add space after line number |
115+
| `gcode.lineNumberer.defaultIncrement` | Default Line Numberer Increment |
116+
| `gcode.lineNumberer.defaultStart` | Default Line Numberer Start |
117+
| `gcode.lineNumberer.enableQuickPick` | Enable or Disable Input for the Line Numberer (Will use above defaults) |
115118
| `gcode.lineNumberer.frequency` | Frequency of line number additions (Every Line or at Tool Changes) |
116119
| `gcode.lineNumberer.ignoreBlank` | Ignore Blank lines when numbering |
117120
| `gcode.lineNumberer.ignoreComments` | Ignore Comments when numbering |
121+
| `gcode.lineNumberer.ignoreExtra` | Additional characters to ignore (Beginning of Line, Default is %) |
118122
| `gcode.lineNumberer.ignoreProgramNumbers` | Ignore Program numbers, e.g. `O12345` |
123+
| `gcode.lineNumberer.matchLineNumber` | When numbering, match the N number to file's line number. (Default is off) |
119124
| `gcode.views.maxAutoRefresh` | Value for limiting the autoRefresh maximum lines |
120125
| `gcode.views.navTree.autoRefresh` | Tree auto-refreshes as changes are made to the g-code. ( Disabled by default ) |
121126
| `gcode.views.stats.autoRefresh` | Auto-refresh the stats view when changes are made to the g-code. (Disabled by default) |

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,24 @@
239239
"markdownDescription": "Add Space After Line Number",
240240
"scope": "window"
241241
},
242+
"gcode.lineNumberer.defaultIncrement": {
243+
"type": "number",
244+
"default": 10,
245+
"markdownDescription": "Default Line Numberer Increment",
246+
"scope": "window"
247+
},
248+
"gcode.lineNumberer.defaultStart": {
249+
"type": "number",
250+
"default": 10,
251+
"markdownDescription": "Default Line Numberer Start",
252+
"scope": "window"
253+
},
254+
"gcode.lineNumbere.enableQuickPick": {
255+
"type": "boolean",
256+
"default": true,
257+
"markdownDescription": "Enable or Disable Input for Line Numberer (Will use above defaults).",
258+
"scope": "window"
259+
},
242260
"gcode.lineNumberer.frequency": {
243261
"type": "string",
244262
"default": "Every Line",
@@ -264,12 +282,29 @@
264282
"markdownDescription": "Ignore Comments when Numbering",
265283
"scope": "window"
266284
},
285+
"gcode.lineNumberer.ignoreExtra": {
286+
"type": "array",
287+
"items": {
288+
"type": "string"
289+
},
290+
"default": [
291+
"%"
292+
],
293+
"markdownDescription": "Additional characters to ignore (Beginning of Line)",
294+
"scope": "window"
295+
},
267296
"gcode.lineNumberer.ignoreProgramNumbers": {
268297
"type": "boolean",
269298
"default": true,
270299
"markdownDescription": "Ignore program numbers, e.g. `O12345`",
271300
"scope": "window"
272301
},
302+
"gcode.lineNumberer.matchLineNumber": {
303+
"type": "boolean",
304+
"default": false,
305+
"markdownDescription": "When numbering, match N number to file's line number.",
306+
"scope": "window"
307+
},
273308
"gcode.views.maxAutoRefresh": {
274309
"type": "integer",
275310
"default": "10000",

src/control.ts

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { CodesWebview } from './webviews/codesWebview';
2020
import { MachineTypeControl } from './util/machineType';
2121
import { GCodeHoverControl } from './hovers/gcodeHoverControl';
2222
import { defaults } from './util/configuration/defaults';
23-
import { registerCommands } from './util/commands/functions';
23+
import { registerCommands } from './util/commands';
2424

2525
const cfgUnits = 'general.units';
2626
const cfgAutoRef = {
@@ -48,28 +48,26 @@ export class Control {
4848
// Webviews
4949
private static _codesWebview: CodesWebview | undefined;
5050

51-
private static async checkVersion() {
52-
const gcodeVersion = new Version(constants.extension.version);
53-
51+
private static async _checkVersion() {
5452
const prevVer = this._stateController.getVersion();
5553

56-
const newVer = gcodeVersion.compareWith(prevVer.getVersion()) === 1 ? true : false;
54+
const newVer = this._version.compareWith(prevVer.getVersion()) === 1 ? true : false;
5755

5856
if (newVer) {
5957
// Extension has been updated
6058

6159
// Update globalState version
6260
Logger.log('Updating...');
63-
void this._stateController.updateVer(gcodeVersion);
61+
await this._stateController.updateVer(this._version);
6462

65-
Logger.log(`G-Code upgraded from ${prevVer.getVersionAsString()} to ${gcodeVersion.getVersionAsString()}`);
66-
await this.showWhatsNew(gcodeVersion);
63+
Logger.log(`G-Code upgraded from ${prevVer.getVersionAsString()} to ${this._version.getVersionAsString()}`);
64+
await this._showWhatsNew(this._version);
6765
} else {
6866
return;
6967
}
7068
}
7169

72-
private static async showWhatsNew(ver: Version) {
70+
private static async _showWhatsNew(ver: Version) {
7371
// Show Whats New Message
7472
await Messages.showWhatsNewMessage(ver);
7573
}
@@ -79,23 +77,33 @@ export class Control {
7977
// Initialize G-Code Extension
8078
this._context = context;
8179
this._config = config;
80+
this._version = new Version(constants.extension.version);
8281

8382
// Initialze Configuration
83+
Logger.log('Loading Configuration...');
8484
Config.initialize(this._context, this._config);
8585

86+
// Load State Controller
87+
Logger.log('Loading State Controller...');
88+
this._stateController = new StateControl(context);
89+
90+
// Check Version
91+
Logger.log('Checking Version...');
92+
void this._checkVersion();
93+
8694
// Register Commands
95+
Logger.log('Registering Commands...');
8796
context.subscriptions.push(...registerCommands());
8897

8998
// Load StatusBars
9099
context.subscriptions.push((this._statusBarControl = new StatusBarControl()));
91100

92101
// Load Machine Type
102+
Logger.log('Loading Machine Type Controller...');
93103
context.subscriptions.push((this._machineTypeControl = new MachineTypeControl()));
94104

95-
// Load State Controller
96-
this._stateController = new StateControl(context);
97-
98105
// Load Hover Controller
106+
Logger.log('Loading Hover Controller...');
99107
context.subscriptions.push((this._hoverController = new GCodeHoverControl()));
100108

101109
// Units
@@ -125,7 +133,6 @@ export class Control {
125133

126134
// Load Nav Tree
127135
Logger.log('Loading Nav Tree...');
128-
129136
context.subscriptions.push((this._navTree = new NavTreeView()));
130137

131138
Logger.log(
@@ -147,11 +154,10 @@ export class Control {
147154
GCommands.ShowSupportGCode,
148155
);
149156

150-
// Check Version
151-
void this.checkVersion();
152-
153157
// Set Up Webviews
154158
context.subscriptions.push((this._codesWebview = new CodesWebview()));
159+
160+
Logger.log('Done Initializing.');
155161
}
156162

157163
static terminate() {
@@ -186,6 +192,10 @@ export class Control {
186192
return this._config;
187193
}
188194

195+
static get version() {
196+
return this._version;
197+
}
198+
189199
static get machineType() {
190200
return this._machineTypeControl;
191201
}

src/extension.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export function activate(context: ExtensionContext) {
1616
Logger.initialize(context);
1717
Logger.enable();
1818

19+
Logger.log('Initializing G-Code...');
20+
1921
// Initialize Controller
2022
Control.initialize(context, configuration);
2123

src/hovers/gcodeHoverControl.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class GCodeHoverControl implements Disposable {
2222
this._enabled = <boolean>configuration.getParam('general.hovers.enabled');
2323

2424
if (this._enabled) {
25-
Logger.log('Loading Hover Controller...');
25+
Logger.log('Hovers: Enabled');
2626
this.register(window.activeTextEditor);
2727
}
2828
}
@@ -36,11 +36,11 @@ export class GCodeHoverControl implements Disposable {
3636
if (configuration.changed(e, 'general.hovers.enabled')) {
3737
if (this._enabled) {
3838
// Disable and Dispose
39-
Logger.log('Disabling Hover Controller...');
39+
Logger.log('Hovers: Disabled');
4040
this.unregister();
4141
} else {
4242
// Enable
43-
Logger.log('Enabling Hover Controller...');
43+
Logger.log('Hovers: Enabled');
4444
this.register(window.activeTextEditor);
4545
}
4646
}

src/util/commands/addComment.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77

88
import { Range, window } from 'vscode';
99
import { constants, GCommands } from '../constants';
10+
import { Messages } from '../messages';
1011
import { GCommand } from './base';
1112

1213
export class AddComment extends GCommand {
1314
constructor() {
1415
super(GCommands.AddComment);
1516
}
1617

17-
execute() {
18+
async execute() {
1819
const editor = window.activeTextEditor;
1920
let replace = '';
2021

@@ -34,9 +35,11 @@ export class AddComment extends GCommand {
3435
replace += `(${lines[i]})${i + 1 === lines.length ? '' : '\n'}`;
3536
}
3637

37-
void editor.edit(editBuilder => {
38+
await editor.edit(editBuilder => {
3839
editBuilder.replace(select, replace);
3940
});
41+
} else {
42+
await Messages.showErrorMessage('Editor does not contain G-Code');
4043
}
4144
}
4245
}

src/util/commands/addLineNumbers.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import { configuration } from '../configuration/config';
99
import { GCommands } from '../constants';
10-
import { LineNumberer, LineNumbererOptions } from '../lineNumberer';
10+
import { LineNumberer } from '../lineNumberer';
1111
import { LineNumbersInput } from '../quickpicks/lineNumbers';
1212
import { GCommand } from './base';
1313

@@ -17,18 +17,15 @@ export class AddLineNumbers extends GCommand {
1717
}
1818

1919
async execute() {
20-
const lnInputs = new LineNumbersInput();
21-
const state = await lnInputs.collect();
22-
23-
const opts: LineNumbererOptions = {};
20+
const ln = new LineNumberer();
2421

25-
opts.addSpaceAfter = configuration.getParam('lineNumberer.addSpaceAfter');
26-
opts.frequency = configuration.getParam('lineNumberer.frequency');
27-
opts.ignoreBlank = configuration.getParam('lineNumberer.ignoreBlank');
28-
opts.ignoreComments = configuration.getParam('lineNumberer.ignoreComments');
29-
opts.ignoreProgramNumbers = configuration.getParam('lineNumberer.ignoreProgramNumbers');
22+
if (configuration.getParam('lineNumberer.enableQuickPick')) {
23+
const lnInputs = new LineNumbersInput();
24+
const state = await lnInputs.collect();
3025

31-
const ln = new LineNumberer();
32-
await ln.addNumbers(state.start, state.increment, true, opts);
26+
await ln.addNumbers(state.start, state.increment);
27+
} else {
28+
await ln.addNumbers();
29+
}
3330
}
3431
}

src/util/commands/functions.ts

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/util/commands/cmds.ts renamed to src/util/commands/index.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,28 @@
55

66
'use strict';
77

8+
import { Disposable } from 'vscode';
9+
import { AddComment } from './addComment';
10+
import { AddLineNumbers } from './addLineNumbers';
11+
import { RemoveComment } from './removeComment';
12+
import { RemoveLineNumbers } from './removeLineNumbers';
13+
import { ShowGCodeSettings } from './showGCodeSettings';
14+
import { ShowSupportGCode } from './showSupportGCode';
15+
816
export { AddComment } from './addComment';
917
export { AddLineNumbers } from './addLineNumbers';
1018
export { RemoveComment } from './removeComment';
1119
export { RemoveLineNumbers } from './removeLineNumbers';
1220
export { ShowGCodeSettings } from './showGCodeSettings';
1321
export { ShowSupportGCode } from './showSupportGCode';
22+
23+
export function registerCommands(): Disposable[] {
24+
return [
25+
new AddComment(),
26+
new AddLineNumbers(),
27+
new RemoveComment(),
28+
new RemoveLineNumbers(),
29+
new ShowGCodeSettings(),
30+
new ShowSupportGCode(),
31+
];
32+
}

src/util/commands/removeLineNumbers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ export class RemoveLineNumbers extends GCommand {
1616

1717
async execute() {
1818
const ln = new LineNumberer();
19-
await ln.removeNumbers(true);
19+
await ln.removeNumbers();
2020
}
2121
}

src/util/configuration/defaults.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import { StatusBarAlignment } from 'vscode';
99
import { GCodeUnits } from '../../gcodeUnits';
10-
import { LineNumberFrequency } from '../lineNumberer';
10+
import { LineNumbererOptions, LineNumberFrequency } from '../lineNumberer';
1111

1212
export enum TraceLevel {
1313
Silent = 'silent',
@@ -35,12 +35,7 @@ export interface GCodeConfiguration {
3535
outputLevel: TraceLevel;
3636
};
3737

38-
lineNumberer: {
39-
addSpaceAfter: boolean;
40-
frequency: LineNumberFrequency;
41-
ignoreBlank: boolean;
42-
ignoreProgramNumbers: boolean;
43-
};
38+
lineNumberer: LineNumbererOptions;
4439

4540
views: {
4641
maxAutoRefresh: number;
@@ -74,9 +69,16 @@ export const defaults: GCodeConfiguration = {
7469
},
7570
lineNumberer: {
7671
addSpaceAfter: true,
72+
defaultIncrement: 10,
73+
defaultStart: 10,
74+
enableQuickPick: true,
7775
frequency: LineNumberFrequency.EveryLine,
7876
ignoreBlank: true,
77+
ignoreComments: true,
78+
ignoreExtra: [],
7979
ignoreProgramNumbers: true,
80+
matchLineNumber: false,
81+
showProgress: true,
8082
},
8183
views: {
8284
maxAutoRefresh: 10000,

0 commit comments

Comments
 (0)