feat(nvim): make jsx and tsx respect js indentation
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
ff174f96c7
commit
f1ed9770ed
4 changed files with 95 additions and 1 deletions
|
@ -34,7 +34,7 @@ in
|
||||||
# lua
|
# lua
|
||||||
''
|
''
|
||||||
vim.api.nvim_create_autocmd('FileType', {
|
vim.api.nvim_create_autocmd('FileType', {
|
||||||
pattern = { 'javascript', 'typescript', 'css', 'scss' },
|
pattern = { 'javascript', 'javascriptreact', 'javascript.jsx', 'typescript', 'typescriptreact', 'typescript.tsx', 'css', 'scss' },
|
||||||
command = 'setlocal ts=4 sw=4 sts=0 expandtab',
|
command = 'setlocal ts=4 sw=4 sts=0 expandtab',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
39
nixosModules/ags/v2/lib.ts
Normal file
39
nixosModules/ags/v2/lib.ts
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
import { Gdk } from 'astal';
|
||||||
|
import AstalHyprland from 'gi://AstalHyprland?version=0.1';
|
||||||
|
|
||||||
|
const Hyprland = AstalHyprland.get_default();
|
||||||
|
|
||||||
|
|
||||||
|
export const get_hyprland_monitor = (monitor: Gdk.Monitor): AstalHyprland.Monitor | undefined => {
|
||||||
|
const manufacturer = monitor.manufacturer?.replace(',', '');
|
||||||
|
const model = monitor.model?.replace(',', '');
|
||||||
|
const start = `${manufacturer} ${model}`;
|
||||||
|
|
||||||
|
return Hyprland.monitors.find((m) => m.description?.startsWith(start));
|
||||||
|
};
|
||||||
|
|
||||||
|
export const get_hyprland_monitor_desc = (monitor: Gdk.Monitor): string => {
|
||||||
|
const manufacturer = monitor.manufacturer?.replace(',', '');
|
||||||
|
const model = monitor.model?.replace(',', '');
|
||||||
|
const start = `${manufacturer} ${model}`;
|
||||||
|
|
||||||
|
return `desc:${Hyprland.monitors.find((m) => m.description?.startsWith(start))?.description}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const get_gdkmonitor_from_desc = (desc: string): Gdk.Monitor => {
|
||||||
|
const display = Gdk.Display.get_default();
|
||||||
|
|
||||||
|
for (let m = 0; m < (display?.get_n_monitors() ?? 0); m++) {
|
||||||
|
const monitor = display?.get_monitor(m);
|
||||||
|
|
||||||
|
if (monitor && desc === get_hyprland_monitor_desc(monitor)) {
|
||||||
|
return monitor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw Error(`Monitor ${desc} not found`);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const get_monitor_desc = (mon: AstalHyprland.Monitor): string => {
|
||||||
|
return `desc:${mon.description}`;
|
||||||
|
};
|
50
nixosModules/ags/v2/widgets/bar/fullscreen.tsx
Normal file
50
nixosModules/ags/v2/widgets/bar/fullscreen.tsx
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
import { Variable } from 'astal';
|
||||||
|
import AstalHyprland from 'gi://AstalHyprland?version=0.1';
|
||||||
|
|
||||||
|
const Hyprland = AstalHyprland.get_default();
|
||||||
|
|
||||||
|
import { get_monitor_desc } from '../../lib';
|
||||||
|
|
||||||
|
|
||||||
|
const FullscreenState = Variable({
|
||||||
|
monitors: [] as string[],
|
||||||
|
clientAddrs: new Map() as Map<string, string>,
|
||||||
|
});
|
||||||
|
|
||||||
|
Hyprland.connect('event', () => {
|
||||||
|
const arrayEquals = (a1: unknown[], a2: unknown[]) =>
|
||||||
|
a1.sort().toString() === a2.sort().toString();
|
||||||
|
|
||||||
|
const mapEquals = (m1: Map<string, string>, m2: Map<string, string>) =>
|
||||||
|
m1.size === m2.size &&
|
||||||
|
Array.from(m1.keys()).every((key) => m1.get(key) === m2.get(key));
|
||||||
|
|
||||||
|
const fs = FullscreenState.get();
|
||||||
|
const fsClients = Hyprland.get_clients().filter((c) => {
|
||||||
|
const mon = c.get_monitor();
|
||||||
|
|
||||||
|
return c.fullscreen &&
|
||||||
|
c.workspace.id === mon?.activeWorkspace.id;
|
||||||
|
});
|
||||||
|
|
||||||
|
const monitors = fsClients.map((c) =>
|
||||||
|
get_monitor_desc(c.monitor));
|
||||||
|
|
||||||
|
const clientAddrs = new Map(fsClients.map((c) => [
|
||||||
|
get_monitor_desc(c.monitor),
|
||||||
|
c.address ?? '',
|
||||||
|
]));
|
||||||
|
|
||||||
|
const hasChanged =
|
||||||
|
!arrayEquals(monitors, fs.monitors) ||
|
||||||
|
!mapEquals(clientAddrs, fs.clientAddrs);
|
||||||
|
|
||||||
|
if (hasChanged) {
|
||||||
|
FullscreenState.set({
|
||||||
|
monitors,
|
||||||
|
clientAddrs,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default FullscreenState;
|
|
@ -1,6 +1,11 @@
|
||||||
import { App, Astal, Gtk, idle, Variable } from 'astal';
|
import { App, Astal, Gtk, idle, Variable } from 'astal';
|
||||||
|
|
||||||
|
import FullscreenState from './fullscreen';
|
||||||
|
|
||||||
|
|
||||||
|
FullscreenState.subscribe((v) => {
|
||||||
|
console.log(v);
|
||||||
|
});
|
||||||
const isVisible = Variable<boolean>(false);
|
const isVisible = Variable<boolean>(false);
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
|
|
Loading…
Reference in a new issue