Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Json view settings #1

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion esbuild.config.mjs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import esbuild from "esbuild";
import process from "process";
import builtins from "builtin-modules";
import {json} from "@codemirror/lang-json";

const banner =
`/*
Expand Down
1 change: 0 additions & 1 deletion src/additionalTypes.d.ts

This file was deleted.

24 changes: 24 additions & 0 deletions src/helpers/view-settings-converter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { ExtSettings, ThreeStateSetting } from "../setting-data";
import { ViewSettings } from "../view-settings";
import { Vault } from "obsidian";

function ConvertToViewSetting(pluginViewSetting: ExtSettings, vault: Vault): ViewSettings {
return {
showLineNumber: GetBoolFromThreeState(pluginViewSetting.showLineNumber, vault, "showLineNumber"),
readableLineLength: GetBoolFromThreeState(pluginViewSetting.readableLineLength, vault, "readableLineLength")
};
}

function GetBoolFromThreeState(lineNumbersSetting: ThreeStateSetting, vault: Vault, vaultSetting: string): boolean {
switch (lineNumbersSetting) {
case ThreeStateSetting.System:
const vaultConfigValue = (vault as any).getConfig(vaultSetting);
return vaultConfigValue.toLowerCase() == "true";
case ThreeStateSetting.Yes:
return true;
default:
return false;
}
}

export { ConvertToViewSetting }
43 changes: 39 additions & 4 deletions src/loader-settings-tab.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { App, PluginSettingTab, Setting } from 'obsidian';
import LoaderPlugin from './main'
import { ThreeStateSetting } from "./setting-data";

export default class LoaderSettingTab extends PluginSettingTab {
plugin: LoaderPlugin;
Expand All @@ -14,24 +15,56 @@ export default class LoaderSettingTab extends PluginSettingTab {

containerEl.empty();

this.containerEl.createEl("h2", { text: "TXT files" });

new Setting(containerEl)
.setName('Load .txt files')
.addToggle(toggle => toggle
.setValue(this.plugin.settings.doLoadTxt)
.setValue(this.plugin.settings.txtSetting.doLoad)
.onChange(async (value) => {
this.plugin.settings.doLoadTxt = value;
this.plugin.settings.txtSetting.doLoad = value;
await this.plugin.saveSettings();
}));

new Setting(containerEl)
.setName("Show line number")
.setDesc("Show line number in the gutter.")
.addDropdown(cb=>cb
.addOption(ThreeStateSetting[ThreeStateSetting.System], "System value")
.addOption(ThreeStateSetting[ThreeStateSetting.No], "Disable")
.addOption(ThreeStateSetting[ThreeStateSetting.Yes], "Enable")
.setValue(ThreeStateSetting[this.plugin.settings.txtSetting.showLineNumber])
.onChange(async (value: string)=>{
this.plugin.settings.txtSetting.showLineNumber = ThreeStateSetting[value as keyof typeof ThreeStateSetting];
await this.plugin.saveSettings();
})
);

new Setting(containerEl)
.setName("Readable line length")
.setDesc("Limin maximum line length.")
.addDropdown(cb=>cb
.addOption(ThreeStateSetting[ThreeStateSetting.System], "System value")
.addOption(ThreeStateSetting[ThreeStateSetting.No], "Disable")
.addOption(ThreeStateSetting[ThreeStateSetting.Yes], "Enable")
.setValue(ThreeStateSetting[this.plugin.settings.txtSetting.readableLineLength])
.onChange(async (value: string)=>{
this.plugin.settings.txtSetting.readableLineLength = ThreeStateSetting[value as keyof typeof ThreeStateSetting];
await this.plugin.saveSettings();
})
);

new Setting(containerEl)
.setName('Create .txt files')
.addToggle(toggle => toggle
.setValue(this.plugin.settings.doCreateTxt)
.setValue(this.plugin.settings.txtSetting.doCreate)
.onChange(async (value) => {
this.plugin.settings.doCreateTxt = value;
this.plugin.settings.txtSetting.doCreate = value;
await this.plugin.saveSettings();
}));

this.containerEl.createEl("h2", { text: "JSON files" });

new Setting(containerEl)
.setName('Load .json files')
.addToggle(toggle => toggle
Expand All @@ -50,6 +83,8 @@ export default class LoaderSettingTab extends PluginSettingTab {
await this.plugin.saveSettings();
}));

this.containerEl.createEl("h2", { text: "XML files" });

new Setting(containerEl)
.setName('Load .xml files')
.addToggle(toggle => toggle
Expand Down
31 changes: 7 additions & 24 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,12 @@ import { Plugin, TFile, WorkspaceLeaf } from 'obsidian';
import LoaderSettingTab from './loader-settings-tab';
import * as constants from './constants'
import { path } from "./utils";
import JsonView from "./views/JsonView";
import TxtView from "./views/TxtView";

interface LoaderPluginSettings {
doLoadTxt: boolean;
doCreateTxt: boolean;
doLoadXml: boolean;
doCreateXml: boolean;
doLoadJson: boolean;
doCreateJson: boolean;
}

const DEFAULT_SETTINGS: LoaderPluginSettings = {
doLoadTxt: true,
doCreateTxt: true,
doLoadXml: true,
doCreateXml: true,
doLoadJson: true,
doCreateJson: true
}
import JsonView from "./views/json-view";
import TxtView from "./views/txt-view";
import { DEFAULT_SETTINGS, PluginSettings } from "./setting-data";

export default class LoaderPlugin extends Plugin {
settings: LoaderPluginSettings;
settings: PluginSettings;

async onload() {
await this.loadSettings();
Expand All @@ -44,17 +27,17 @@ export default class LoaderPlugin extends Plugin {
}

private TryRegisterTxt() {
if (this.settings.doLoadTxt) {
if (this.settings.txtSetting.doLoad) {
this.registerView(constants.VIEW_TYPE_TXT, (leaf: WorkspaceLeaf) => new TxtView(leaf, this));
this.registerExtensions([constants.EXT_TXT], constants.VIEW_TYPE_TXT);
}

if (this.settings.doCreateTxt)
if (this.settings.txtSetting.doCreate)
this.registerContextMenuCommand(constants.EXT_TXT);
}

private tryRegisterJson() {
if (this.settings.doLoadTxt) {
if (this.settings.doLoadJson) {
this.registerView(constants.VIEW_TYPE_JSON, (leaf: WorkspaceLeaf) => new JsonView(leaf, this));
this.registerExtensions([constants.EXT_JSON], constants.VIEW_TYPE_JSON);
}
Expand Down
33 changes: 33 additions & 0 deletions src/setting-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
export enum ThreeStateSetting {
System = 0,
No = 1,
Yes = -1
}

export interface ExtSettings {
doCreate: boolean,
doLoad: boolean,
showLineNumber: ThreeStateSetting,
readableLineLength: ThreeStateSetting
}

export interface PluginSettings {
txtSetting: ExtSettings
doLoadXml: boolean;
doCreateXml: boolean;
doLoadJson: boolean;
doCreateJson: boolean;
}

export const DEFAULT_SETTINGS: PluginSettings = {
txtSetting: {
doCreate: true,
doLoad: true,
showLineNumber: ThreeStateSetting.System,
readableLineLength: ThreeStateSetting.System
},
doLoadXml: true,
doCreateXml: true,
doLoadJson: true,
doCreateJson: true
}
4 changes: 4 additions & 0 deletions src/view-settings.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export interface ViewSettings {
showLineNumber: boolean,
readableLineLength: boolean
}
File renamed without changes.
19 changes: 16 additions & 3 deletions src/views/TxtView.ts → src/views/txt-view.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { TextFileView, WorkspaceLeaf } from "obsidian";
import { basicSetup, EditorView } from "codemirror";
import { EditorState } from "@codemirror/state";
import { basicSetup, EditorView, minimalSetup } from "codemirror";
import { EditorState, Extension } from "@codemirror/state";
import { VIEW_TYPE_TXT } from '../constants'
import LoaderPlugin from "../main";
import { lineNumbers } from "@codemirror/view";
import { ConvertToViewSetting } from "../helpers/view-settings-converter";

export default class TxtView extends TextFileView {

Expand All @@ -17,18 +19,29 @@ export default class TxtView extends TextFileView {

onload(): void {
super.onload();
const basicExtensions = this.getExtensions();
this.editorEl = this.contentEl.createDiv("mod-cm5");
this.cmEditor = new EditorView({
state: EditorState.create({
extensions: [
basicSetup,
minimalSetup,
...basicExtensions
],
}),
parent: this.editorEl,
})
this.app.workspace.trigger("codemirror", this.cmEditor);
}

getExtensions(): Extension[] {
const settings = this.plugin.settings;
const viewSettings = ConvertToViewSetting(settings.txtSetting, this.app.vault);
if(viewSettings.showLineNumber)
return [lineNumbers()];
else
return [];
}

// gets the title of the document
getDisplayText(): string {
if (this.file) {
Expand Down