Added an upgrade function to fix renamed behavior nodes in the unlikely event that someone was changing behavior settings this way instead of using references.
49 lines
1.9 KiB
TypeScript
49 lines
1.9 KiB
TypeScript
import type { Tree } from "web-tree-sitter";
|
|
|
|
import { findDevicetreeNode } from "./parser";
|
|
import { TextEdit } from "./textedit";
|
|
|
|
// Map of { "deprecated path": "replacement name" } for devicetree nodes.
|
|
// Relocating nodes to another place in the tree is not supported.
|
|
const NODES = {
|
|
"/behaviors/behavior_backlight": "bcklight",
|
|
"/behaviors/behavior_caps_word": "caps_word",
|
|
"/behaviors/behavior_ext_power": "extpower",
|
|
"/behaviors/behavior_key_press": "key_press",
|
|
"/behaviors/behavior_key_repeat": "key_repeat",
|
|
"/behaviors/behavior_key_toggle": "key_toggle",
|
|
"/behaviors/behavior_layer_tap": "layer_tap",
|
|
"/behaviors/behavior_mod_tap": "mod_tap",
|
|
"/behaviors/behavior_momentary_layer": "momentary_layer",
|
|
"/behaviors/behavior_none": "none",
|
|
"/behaviors/behavior_outputs": "outputs",
|
|
"/behaviors/behavior_behavior_reset": "sysreset",
|
|
"/behaviors/behavior_reset_dfu": "bootload",
|
|
"/behaviors/behavior_rgb_underglow": "rgb_ug",
|
|
"/behaviors/behavior_sensor_rotate_key_press": "enc_key_press",
|
|
"/behaviors/behavior_sticky_key": "sticky_key",
|
|
"/behaviors/behavior_sticky_layer": "sticky_layer",
|
|
"/behaviors/behavior_to_layer": "to_layer",
|
|
"/behaviors/behavior_toggle_layer": "toggle_layer",
|
|
"/behaviors/behavior_transparent": "transparent",
|
|
"/behaviors/macro_control_mode_tap": "macro_tap",
|
|
"/behaviors/macro_control_mode_press": "macro_press",
|
|
"/behaviors/macro_control_mode_release": "macro_release",
|
|
"/behaviors/macro_control_tap_time": "macro_tap_time",
|
|
"/behaviors/macro_control_wait_time": "macro_wait_time",
|
|
};
|
|
|
|
export function upgradeNodeNames(tree: Tree) {
|
|
const edits: TextEdit[] = [];
|
|
|
|
for (const [path, newName] of Object.entries(NODES)) {
|
|
for (const node of findDevicetreeNode(tree, path)) {
|
|
const name = node.childForFieldName("name");
|
|
if (name) {
|
|
edits.push(TextEdit.fromNode(name, newName));
|
|
}
|
|
}
|
|
}
|
|
|
|
return edits;
|
|
}
|