mirror of https://git.door43.org/Andley/BG4e
vault backup: 2023-09-13 09:35:26
Affected files: .obsidian/community-plugins.json .obsidian/plugins/control-characters/data.json .obsidian/plugins/control-characters/main.js .obsidian/plugins/control-characters/manifest.json .obsidian/plugins/control-characters/styles.css .obsidian/plugins/obsidian-hider/data.json .obsidian/workspace.json BG4E-ExpPreaching/JesusChrist-vs-ChristJesus.md BG4E-ExpPreaching/Sermon-1-Key.md images/00015.png images/DFNTG-cover.png images/DGGNT-cover.png images/Mounce-Reader2.png images/Pasted image 20210803200538.png
This commit is contained in:
parent
92bcb1c288
commit
ad1c92b848
|
@ -3,5 +3,6 @@
|
|||
"obsidian-hider",
|
||||
"obsidian-tidy-footnotes",
|
||||
"obsidian-git",
|
||||
"wikilinks-to-mdlinks-obsidian"
|
||||
"wikilinks-to-mdlinks-obsidian",
|
||||
"control-characters"
|
||||
]
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"newLine": false,
|
||||
"tab": true,
|
||||
"space": true,
|
||||
"enabled": true,
|
||||
"selection": false
|
||||
}
|
|
@ -0,0 +1,331 @@
|
|||
/*
|
||||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||
if you want to view the source, please visit the github repository of this plugin
|
||||
https://github.com/joethei/obsidian-non-printing-chars
|
||||
*/
|
||||
|
||||
var __create = Object.create;
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
||||
var __export = (target, all) => {
|
||||
__markAsModule(target);
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __reExport = (target, module2, desc) => {
|
||||
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
||||
for (let key of __getOwnPropNames(module2))
|
||||
if (!__hasOwnProp.call(target, key) && key !== "default")
|
||||
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
||||
}
|
||||
return target;
|
||||
};
|
||||
var __toModule = (module2) => {
|
||||
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
||||
};
|
||||
var __async = (__this, __arguments, generator) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
var fulfilled = (value) => {
|
||||
try {
|
||||
step(generator.next(value));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
};
|
||||
var rejected = (value) => {
|
||||
try {
|
||||
step(generator.throw(value));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
};
|
||||
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
||||
step((generator = generator.apply(__this, __arguments)).next());
|
||||
});
|
||||
};
|
||||
|
||||
// src/main.ts
|
||||
__export(exports, {
|
||||
default: () => ControlCharacterPlugin
|
||||
});
|
||||
var import_obsidian4 = __toModule(require("obsidian"));
|
||||
var import_state2 = __toModule(require("@codemirror/state"));
|
||||
|
||||
// src/SettingsTab.ts
|
||||
var import_obsidian = __toModule(require("obsidian"));
|
||||
var ControlCharactersSettingsTab = class extends import_obsidian.PluginSettingTab {
|
||||
constructor(plugin) {
|
||||
super(plugin.app, plugin);
|
||||
this.plugin = plugin;
|
||||
}
|
||||
display() {
|
||||
const { containerEl } = this;
|
||||
containerEl.empty();
|
||||
containerEl.createEl("h2", { text: "Control Characters" });
|
||||
new import_obsidian.Setting(containerEl).setName("Only show control characters in selection").addToggle((toggle) => {
|
||||
toggle.setValue(this.plugin.settings.selection).onChange((value) => __async(this, null, function* () {
|
||||
this.plugin.settings.selection = value;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
containerEl.createEl("h3", { text: "Show" });
|
||||
new import_obsidian.Setting(containerEl).setName("Space").addToggle((toggle) => {
|
||||
toggle.setValue(this.plugin.settings.space).onChange((value) => __async(this, null, function* () {
|
||||
this.plugin.settings.space = value;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian.Setting(containerEl).setName("Tab").addToggle((toggle) => {
|
||||
toggle.setValue(this.plugin.settings.tab).onChange((value) => __async(this, null, function* () {
|
||||
this.plugin.settings.tab = value;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
new import_obsidian.Setting(containerEl).setName("New line").addToggle((toggle) => {
|
||||
toggle.setValue(this.plugin.settings.newLine).onChange((value) => __async(this, null, function* () {
|
||||
this.plugin.settings.newLine = value;
|
||||
yield this.plugin.saveSettings();
|
||||
}));
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// src/NormalDecoration.ts
|
||||
var import_view3 = __toModule(require("@codemirror/view"));
|
||||
|
||||
// src/StatefulDecoration.ts
|
||||
var import_state = __toModule(require("@codemirror/state"));
|
||||
var import_view = __toModule(require("@codemirror/view"));
|
||||
var statefulDecorations = defineStatefulDecoration();
|
||||
function defineStatefulDecoration() {
|
||||
const update = import_state.StateEffect.define();
|
||||
const field = import_state.StateField.define({
|
||||
create() {
|
||||
return import_view.Decoration.none;
|
||||
},
|
||||
update(deco, tr) {
|
||||
return tr.effects.reduce((deco2, effect) => effect.is(update) ? effect.value : deco2, deco.map(tr.changes));
|
||||
},
|
||||
provide: (field2) => import_view.EditorView.decorations.from(field2)
|
||||
});
|
||||
return { update, field };
|
||||
}
|
||||
|
||||
// src/StatefulDecorationSet.ts
|
||||
var import_view2 = __toModule(require("@codemirror/view"));
|
||||
var import_obsidian2 = __toModule(require("obsidian"));
|
||||
var StatefulDecorationSet = class {
|
||||
constructor(editor) {
|
||||
this.decoCache = Object.create(null);
|
||||
this.debouncedUpdate = (0, import_obsidian2.debounce)(this.updateAsyncDecorations, 10, true);
|
||||
this.editor = editor;
|
||||
}
|
||||
computeAsyncDecorations(tokens) {
|
||||
return __async(this, null, function* () {
|
||||
const decorations = [];
|
||||
for (const token of tokens) {
|
||||
let deco = this.decoCache[token.value];
|
||||
if (!deco) {
|
||||
deco = this.decoCache[token.value] = import_view2.Decoration.mark({
|
||||
class: "control-character",
|
||||
attributes: { type: token.value }
|
||||
});
|
||||
}
|
||||
decorations.push(deco.range(token.from, token.to));
|
||||
}
|
||||
return import_view2.Decoration.set(decorations, true);
|
||||
});
|
||||
}
|
||||
updateAsyncDecorations(tokens) {
|
||||
return __async(this, null, function* () {
|
||||
const decorations = yield this.computeAsyncDecorations(tokens);
|
||||
if (decorations || this.editor.state.field(statefulDecorations.field).size) {
|
||||
this.editor.dispatch({ effects: statefulDecorations.update.of(decorations || import_view2.Decoration.none) });
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// src/FrontmatterParser.ts
|
||||
var import_obsidian3 = __toModule(require("obsidian"));
|
||||
function parseFrontmatter(view, settings) {
|
||||
const result = {
|
||||
enabled: settings.enabled,
|
||||
newLine: settings.newLine,
|
||||
selection: settings.selection,
|
||||
space: settings.space,
|
||||
tab: settings.tab
|
||||
};
|
||||
const matches = view.state.sliceDoc().match(/---([\s\S]*?)---/);
|
||||
if (matches && matches.length !== 0) {
|
||||
for (const match of matches) {
|
||||
const replaced = match.replace(/---/g, "");
|
||||
try {
|
||||
const frontmatter = (0, import_obsidian3.parseYaml)(replaced);
|
||||
if (frontmatter.hasOwnProperty("cc")) {
|
||||
result.enabled = frontmatter.cc;
|
||||
}
|
||||
if (frontmatter.hasOwnProperty("cc-tab")) {
|
||||
result.tab = frontmatter["cc-tab"];
|
||||
}
|
||||
if (frontmatter.hasOwnProperty("cc-newline")) {
|
||||
result.newLine = frontmatter["cc-newline"];
|
||||
}
|
||||
if (frontmatter.hasOwnProperty("cc-space")) {
|
||||
result.space = frontmatter["cc-space"];
|
||||
}
|
||||
if (frontmatter.hasOwnProperty("cc-selection")) {
|
||||
result.selection = frontmatter["cc-selection"];
|
||||
}
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// src/NormalDecoration.ts
|
||||
function buildViewPlugin(plugin) {
|
||||
return import_view3.ViewPlugin.fromClass(class {
|
||||
constructor(view) {
|
||||
this.decoManager = new StatefulDecorationSet(view);
|
||||
this.buildAsyncDecorations(view, plugin.settings);
|
||||
}
|
||||
update(update) {
|
||||
if (update.docChanged || update.viewportChanged) {
|
||||
const frontmatter = parseFrontmatter(update.view, plugin.settings);
|
||||
if (!frontmatter.enabled || frontmatter.selection) {
|
||||
this.decoManager.debouncedUpdate([]);
|
||||
return;
|
||||
}
|
||||
this.buildAsyncDecorations(update.view, frontmatter);
|
||||
}
|
||||
}
|
||||
buildAsyncDecorations(view, settings) {
|
||||
const targetElements = [];
|
||||
for (const { from, to } of view.visibleRanges) {
|
||||
targetElements.push(...plugin.getTokens(view, from, to, settings));
|
||||
}
|
||||
this.decoManager.debouncedUpdate(targetElements);
|
||||
}
|
||||
});
|
||||
}
|
||||
function normalDecoration(plugin) {
|
||||
return [statefulDecorations.field, buildViewPlugin(plugin)];
|
||||
}
|
||||
|
||||
// src/settings.ts
|
||||
var DEFAULT_SETTINGS = {
|
||||
newLine: true,
|
||||
tab: true,
|
||||
space: true,
|
||||
enabled: true,
|
||||
selection: false
|
||||
};
|
||||
|
||||
// src/SelectionHighlight.ts
|
||||
var import_view4 = __toModule(require("@codemirror/view"));
|
||||
function buildViewPlugin2(plugin) {
|
||||
return import_view4.ViewPlugin.fromClass(class {
|
||||
constructor(view) {
|
||||
this.decoManager = new StatefulDecorationSet(view);
|
||||
const frontmatter = parseFrontmatter(view, plugin.settings);
|
||||
if (!frontmatter.selection) {
|
||||
return;
|
||||
}
|
||||
this.buildAsyncDecorations(view, parseFrontmatter(view, plugin.settings));
|
||||
}
|
||||
update(update) {
|
||||
const frontmatter = parseFrontmatter(update.view, plugin.settings);
|
||||
if (!frontmatter.selection) {
|
||||
return;
|
||||
}
|
||||
if (update.selectionSet || update.docChanged || update.viewportChanged) {
|
||||
this.buildAsyncDecorations(update.view, frontmatter);
|
||||
}
|
||||
}
|
||||
buildAsyncDecorations(view, settings) {
|
||||
const targetElements = [];
|
||||
for (const range of view.state.selection.ranges) {
|
||||
targetElements.push(...plugin.getTokens(view, range.from, range.to, settings));
|
||||
}
|
||||
this.decoManager.debouncedUpdate(targetElements);
|
||||
}
|
||||
});
|
||||
}
|
||||
function selectionDecorations(plugin) {
|
||||
return [statefulDecorations.field, buildViewPlugin2(plugin)];
|
||||
}
|
||||
|
||||
// src/types.ts
|
||||
var ControlCharacter;
|
||||
(function(ControlCharacter2) {
|
||||
ControlCharacter2["NEWLINE"] = "newline";
|
||||
ControlCharacter2["SPACE"] = "space";
|
||||
ControlCharacter2["TAB"] = "tab";
|
||||
ControlCharacter2["OTHER"] = "other";
|
||||
})(ControlCharacter || (ControlCharacter = {}));
|
||||
|
||||
// src/main.ts
|
||||
var ControlCharacterPlugin = class extends import_obsidian4.Plugin {
|
||||
onload() {
|
||||
return __async(this, null, function* () {
|
||||
if (!this.app.vault.getConfig("legacyEditor")) {
|
||||
yield this.loadSettings();
|
||||
this.registerEditorExtension(import_state2.Prec.lowest(normalDecoration(this)));
|
||||
this.registerEditorExtension(import_state2.Prec.lowest(selectionDecorations(this)));
|
||||
this.addSettingTab(new ControlCharactersSettingsTab(this));
|
||||
this.addCommand({
|
||||
id: "toggle",
|
||||
name: "Show/hide control characters",
|
||||
callback: () => __async(this, null, function* () {
|
||||
this.settings.enabled = !this.settings.enabled;
|
||||
console.log(this.settings.enabled);
|
||||
yield this.saveSettings();
|
||||
this.app.workspace.updateOptions();
|
||||
})
|
||||
});
|
||||
this.app.workspace.trigger("parse-style-settings");
|
||||
} else {
|
||||
new import_obsidian4.Notice("Control Characters: You are using the legacy editor, this plugin is not supported there");
|
||||
}
|
||||
});
|
||||
}
|
||||
onunload() {
|
||||
}
|
||||
loadSettings() {
|
||||
return __async(this, null, function* () {
|
||||
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
|
||||
});
|
||||
}
|
||||
saveSettings() {
|
||||
return __async(this, null, function* () {
|
||||
yield this.saveData(this.settings);
|
||||
});
|
||||
}
|
||||
getTokens(view, from, to, settings) {
|
||||
const targetElements = [];
|
||||
const text = view.state.sliceDoc(from, to);
|
||||
for (const match of text.matchAll(/[\u00A0\u202F\u2007\u2060\s]/gu)) {
|
||||
const index = from + match.index;
|
||||
if (match.toString() === "\n" && settings.newLine) {
|
||||
targetElements.push({ from: index - 1, to: index, value: ControlCharacter.NEWLINE });
|
||||
continue;
|
||||
}
|
||||
let value;
|
||||
if (match.toString() === " " && settings.tab) {
|
||||
value = ControlCharacter.TAB;
|
||||
} else if (match.toString() === " " && settings.space) {
|
||||
value = ControlCharacter.SPACE;
|
||||
} else {
|
||||
value = ControlCharacter.OTHER;
|
||||
}
|
||||
targetElements.push({ from: index, to: index + 1, value });
|
||||
}
|
||||
return targetElements;
|
||||
}
|
||||
};
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "control-characters",
|
||||
"name": "Control Characters",
|
||||
"version": "0.3.0",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "Show control/non-printing characters in edit mode",
|
||||
"author": "Johannes Theiner",
|
||||
"authorUrl": "https://github.com/joethei",
|
||||
"isDesktopOnly": false
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||
if you want to view the source, please visit the github repository of this plugin
|
||||
https://github.com/joethei/obsidian-non-printing-chars
|
||||
*/body{--control-character-color:var(--interactive-accent);--control-character-space:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M12 18a6 6 0 1 0 0-12 6 6 0 0 0 0 12z'/%3E%3C/svg%3E");--control-character-tab:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath d='M12.29 8.12 15.17 11H2c-.55 0-1 .45-1 1s.45 1 1 1h13.17l-2.88 2.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L13.7 6.7a.996.996 0 0 0-1.41 0c-.38.39-.39 1.03 0 1.42zM20 7v10c0 .55.45 1 1 1s1-.45 1-1V7c0-.55-.45-1-1-1s-1 .45-1 1z'/%3E%3C/svg%3E");--control-character-newline:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='.84em' height='1em' viewBox='0 0 1280 1536'%3E%3Cpath fill='currentColor' d='M1278 61v73q0 29-18.5 61t-42.5 32q-50 0-54 1-26 6-32 31-3 11-3 64v1152q0 25-18 43t-43 18H959q-25 0-43-18t-18-43V257H755v1218q0 25-17.5 43t-43.5 18H586q-26 0-43.5-18t-17.5-43V979q-147-12-245-59-126-58-192-179-64-117-64-259 0-166 88-286Q200 78 321 37 432 0 738 0h479q25 0 43 18t18 43z'/%3E%3C/svg%3E");--control-character-other:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Crect width='20' height='20' x='2' y='2' fill='currentColor' rx='2'/%3E%3C/svg%3E")}
|
||||
|
||||
/* @settings
|
||||
|
||||
name: Control Characters
|
||||
id: control-characters
|
||||
settings:
|
||||
-
|
||||
id: control-character-color
|
||||
title: Color
|
||||
type: variable-themed-color
|
||||
format: hex
|
||||
default-light: '#007AFF'
|
||||
default-dark: '#007AFF'
|
||||
-
|
||||
id: control-character-space
|
||||
title: Symbol for space
|
||||
description: Icon SVG URI encoded
|
||||
type: variable-text
|
||||
default: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath fill="currentColor" d="M12 18a6 6 0 1 0 0-12a6 6 0 0 0 0 12z"%2F%3E%3C%2Fsvg%3E')
|
||||
-
|
||||
id: control-character-tab
|
||||
title: Symbol for tab
|
||||
type: variable-text
|
||||
description: Icon SVG URI encoded
|
||||
default: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Cpath d="M12.29 8.12L15.17 11H2c-.55 0-1 .45-1 1s.45 1 1 1h13.17l-2.88 2.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L13.7 6.7a.996.996 0 0 0-1.41 0c-.38.39-.39 1.03 0 1.42zM20 7v10c0 .55.45 1 1 1s1-.45 1-1V7c0-.55-.45-1-1-1s-1 .45-1 1z"%2F%3E%3C%2Fsvg%3E')
|
||||
-
|
||||
id: control-character-newline
|
||||
title: Symbol for new line
|
||||
type: variable-text
|
||||
description: Icon SVG URI encoded
|
||||
default: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 20 20"%3E%3Cpath fill="currentColor" d="M15 2H7.54c-.83 0-1.59.2-2.28.6c-.7.41-1.25.96-1.65 1.65C3.2 4.94 3 5.7 3 6.52s.2 1.58.61 2.27c.4.69.95 1.24 1.65 1.64c.69.41 1.45.61 2.28.61h.43V17c0 .27.1.51.29.71c.2.19.44.29.71.29c.28 0 .51-.1.71-.29c.2-.2.3-.44.3-.71V5c0-.27.09-.51.29-.71c.2-.19.44-.29.71-.29s.51.1.71.29c.19.2.29.44.29.71v12c0 .27.1.51.3.71c.2.19.43.29.71.29c.27 0 .51-.1.71-.29c.19-.2.29-.44.29-.71V4H15c.27 0 .5-.1.7-.3c.2-.19.3-.43.3-.7s-.1-.51-.3-.71A.984.984 0 0 0 15 2z"%2F%3E%3C%2Fsvg%3E')
|
||||
-
|
||||
id: control-character-other
|
||||
title: Symbol for other non printing control characters
|
||||
type: variable-text
|
||||
description: Icon SVG URI encoded
|
||||
default: url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"%3E%3Crect width="20" height="20" x="2" y="2" fill="currentColor" rx="2"%2F%3E%3C%2Fsvg%3E')
|
||||
*/.control-character[type=newline]:after{content:" ";-webkit-mask-image:var(--control-character-newline);mask-image:var(--control-character-newline)}.control-character[type=newline]:after,.control-character[type=space]{background:var(--control-character-color);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.control-character[type=space]{-webkit-mask-image:var(--control-character-space);mask-image:var(--control-character-space)}.control-character[type=tab]{-webkit-mask-image:var(--control-character-tab);mask-image:var(--control-character-tab)}.control-character[type=other],.control-character[type=tab]{background:var(--control-character-color);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.control-character[type=other]{-webkit-mask-image:var(--control-character-other);mask-image:var(--control-character-other);-webkit-mask-size:unset;mask-size:unset}
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"hideRibbon": false,
|
||||
"hideRibbon": true,
|
||||
"hideStatus": false,
|
||||
"hideTabs": true,
|
||||
"hideScroll": false,
|
||||
|
@ -9,7 +9,8 @@
|
|||
"hideSearchSuggestions": false,
|
||||
"hideSearchCounts": false,
|
||||
"hideInstructions": false,
|
||||
"hideMeta": false,
|
||||
"hidePropertiesReading": false,
|
||||
"hideVault": false,
|
||||
"hideMeta": false,
|
||||
"frameless": false
|
||||
}
|
|
@ -4,31 +4,22 @@
|
|||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "31231bb799c6b46c",
|
||||
"id": "f1c756dcf5cc5c0b",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "9d6aaf62d9be9ed1",
|
||||
"id": "3eaae06956359fca",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "image",
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "images/key.png"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "678edf3c19987a83",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "release-notes",
|
||||
"state": {
|
||||
"currentVersion": "1.4.11"
|
||||
"file": "BG4E-ExpPreaching/Sermon-1-Key.md",
|
||||
"mode": "preview",
|
||||
"source": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 1
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
|
@ -86,7 +77,8 @@
|
|||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 200
|
||||
"width": 200,
|
||||
"collapsed": true
|
||||
},
|
||||
"right": {
|
||||
"id": "1464b72f66019d33",
|
||||
|
@ -102,7 +94,7 @@
|
|||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "images/key.png"
|
||||
"file": "BG4E-ExpPreaching/Sermon-1-Key.md"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -123,7 +115,7 @@
|
|||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "images/key.png",
|
||||
"file": "BG4E-ExpPreaching/Sermon-1-Key.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
|
@ -140,7 +132,7 @@
|
|||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "images/key.png",
|
||||
"file": "BG4E-ExpPreaching/Sermon-1-Key.md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
|
@ -156,12 +148,12 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 2
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 362.5
|
||||
"width": 362.5,
|
||||
"collapsed": true
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
|
@ -173,20 +165,23 @@
|
|||
"workspaces:Manage workspace layouts": false
|
||||
}
|
||||
},
|
||||
"active": "678edf3c19987a83",
|
||||
"active": "3eaae06956359fca",
|
||||
"lastOpenFiles": [
|
||||
"images/Mounce-Reader.png",
|
||||
"images/key.png",
|
||||
"images/00015.png",
|
||||
"images/IGNT-cover.png",
|
||||
"images/IGNT-封面.png",
|
||||
"images/IGG-cover.png",
|
||||
"images/icon-Home.png",
|
||||
"images/Guthrie-Reader.jpg",
|
||||
"images/GGBB-cover.png",
|
||||
"images/GGBB-封面.png",
|
||||
"images/GDNTG-cover.png",
|
||||
"BG4E-ExpPreaching/Sermon-2.md",
|
||||
"BG4E-ExpPreaching/Sermon-1-Key.md",
|
||||
"BG4E-ExpPreaching/Sermon-3.md",
|
||||
"BG4E-ExpPreaching/Sermon-1.md",
|
||||
"BG4E-ExpPreaching/JesusChrist-vs-ChristJesus.md",
|
||||
"images/key.png",
|
||||
"images/Pasted image 20221208210229.png",
|
||||
"images/Pasted image 20221208210320.png",
|
||||
"images/Pasted image 20230317084649.png",
|
||||
"images/Pasted image 20230317084752.png",
|
||||
"images/Pasted image 20230403142914.png",
|
||||
"images/Pasted image 20211020143849.png",
|
||||
"images/Pasted image 20211020143723.png",
|
||||
"images/Pasted image 20211018144032.png",
|
||||
"images/Pasted image 20210918060146.png",
|
||||
"62-1John/123John-Style.md",
|
||||
"40-Matthew/Sermon-on-the-Mount.Interlinear.md",
|
||||
"40-Matthew/Sermon-on-the-Mount.Notes.md",
|
||||
|
@ -195,19 +190,15 @@
|
|||
"40-Matthew/Mat.5.1-2.md",
|
||||
"40-Matthew/Sermon-on-the-Mount-Interlinear.BIBa.md",
|
||||
"60-1Peter/1Pe.1.1-2.md",
|
||||
"BG4E-ExpPreaching/Sermon-1.md",
|
||||
"46-1Corinthians/1Co.15.1-11.md",
|
||||
"Phrasing-Signs.md",
|
||||
"BG4E-ExpPreaching/Sermon-3.md",
|
||||
"BG4E-ExpPreaching/Sermon-4.md",
|
||||
"BG4E-ExpPreaching/Sermon-2.md",
|
||||
"BG4E-ExpPreaching/Sermon-5-Key.md",
|
||||
"BG4E-ExpPreaching/Sermon-5.md",
|
||||
"BG4E-ExpPreaching/Sermon-c.md",
|
||||
"BG4E-ExpPreaching/Sermon-b.md",
|
||||
"BG4E-ExpPreaching/Sermon-a.md",
|
||||
"BG4E-ExpPreaching/Sermon-3-Key.md",
|
||||
"BG4E-ExpPreaching/JesusChrist-vs-ChristJesus.md",
|
||||
"60-1Peter/1Pe.1.3-9.md",
|
||||
"60-1Peter/1Pe.1.10-12.md",
|
||||
"Syntax/GGBB Apposition vs Epexgetisis.md",
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
- Matt. 1:18 Τοῦ δὲ <mark>Ἰησοῦ</mark> <mark>Χριστοῦ</mark> ἡ γένεσις οὕτως ἦν. μνηστευθείσης τῆς μητρὸς αὐτοῦ Μαρίας τῷ Ἰωσήφ, πρὶν ἢ συνελθεῖν αὐτοὺς εὑρέθη ἐν γαστρὶ ἔχουσα ἐκ πνεύματος ἁγίου.
|
||||
- Matt. 26:63 ὁ δὲ <mark>Ἰησοῦ</mark>ς ἐσιώπα. καὶ ὁ ἀρχιερεὺς εἶπεν αὐτῷ· ἐξορκίζω σε κατὰ τοῦ θεοῦ τοῦ ζῶντος ἵνα ἡμῖν εἴπῃς εἰ σὺ εἶ ὁ <mark>χριστὸς</mark> ὁ υἱὸς τοῦ θεοῦ.
|
||||
- Matt. 27:17 συνηγμένων οὖν αὐτῶν εἶπεν αὐτοῖς ὁ Πιλᾶτος· τίνα θέλετε ἀπολύσω ὑμῖν, <mark>Ἰησοῦν</mark> τὸν Βαραββᾶν ἢ <mark>Ἰησοῦν</mark> τὸν λεγόμενον <mark>χριστόν</mark>;
|
||||
- Matt. 27:22 λέγει αὐτοῖς ὁ Πιλᾶτος· τί οὖν ποιήσω <mark>Ἰησοῦν</mark> τὸν λεγόμενον <mark>χριστόν</mark>; λέγουσιν πάντες· σταυρωθήτω.
|
||||
- Matt. 27:22 λέγει αὐτοῖς ὁ Πιλᾶτος· τί οὖν ποιήσω <mark>Ἰησοῦν</mark> τὸν λεγόμενον <mark>χριστόν</mark>; λέγουσιν πάντες· σταυρωθήτω.
|
||||
- Mk. 1:1 Ἀρχὴ τοῦ εὐαγγελίου <mark>Ἰησοῦ</mark> <mark>Χριστοῦ</mark> υἱοῦ θεοῦ.
|
||||
- Mk. 12:35 Καὶ ἀποκριθεὶς ὁ <mark>Ἰησοῦ</mark>ς ἔλεγεν διδάσκων ἐν τῷ ἱερῷ· πῶς λέγουσιν οἱ γραμματεῖς ὅτι ὁ <mark>χριστὸς</mark> υἱὸς Δαυίδ ἐστιν;
|
||||
- Jn. 1:17 ὅτι ὁ νόμος διὰ Μωϋσέως ἐδόθη, ἡ χάρις καὶ ἡ ἀλήθεια διὰ <mark>Ἰησοῦ</mark> <mark>Χριστοῦ</mark> ἐγένετο.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## Sermon-1 (林前15:1-11) 參考解答
|
||||
|
||||
#### 句法圖析 (Syntax Diagram)
|
||||
### 句法圖析 (Syntax Diagram)
|
||||
|
||||
- 15:1a (<RUBY><ruby><ruby><strong>Γνωρίζω</strong><rt>γνωρίζω</rt></ruby><rt>I make known</rt></ruby><rt>V-PAI-1S</rt></RUBY>)P <RUBY><ruby><ruby>δὲ<rt>δέ</rt></ruby><rt>now</rt></ruby><rt>CONJ</rt></RUBY> (<RUBY><ruby><ruby>ὑμῖν,<rt>σύ</rt></ruby><rt>to you</rt></ruby><rt>P-2DP</rt></RUBY>)C (<RUBY><ruby><ruby>ἀδελφοί,<rt>ἀδελφός</rt></ruby><rt>brothers</rt></ruby><rt>N-VPM</rt></RUBY>)=C (<mark><RUBY><ruby><ruby>τὸ<rt>ὁ</rt></ruby><rt>the</rt></ruby><rt>T-ASN</rt></RUBY> <RUBY><ruby><ruby>εὐαγγέλιον<rt>εὐαγγέλιον</rt></ruby><rt>gospel</rt></ruby><rt>N-ASN</rt></RUBY>°¹</mark>)C
|
||||
- 15:1b (<RUBY><ruby><ruby>ὃ<rt>ὅς</rt></ruby><rt>that</rt></ruby><rt>R-ASN</rt></RUBY>°¹⮥)C (<RUBY><ruby><ruby><strong>εὐηγγελισάμην</strong><rt>εὐαγγελίζομαι</rt></ruby><rt>I proclaimed</rt></ruby><rt>V-AMI-1S</rt></RUBY>)P (<RUBY><ruby><ruby>ὑμῖν,<rt>σύ</rt></ruby><rt>to you</rt></ruby><rt>P-2DP</rt></RUBY>)C
|
||||
|
@ -41,7 +41,7 @@
|
|||
|
||||
<div style='page-break-after: always;'></div>
|
||||
|
||||
#### 句法筆記 (Syntax Notes)
|
||||
### 句法筆記 (Syntax Notes)
|
||||
|
||||
- 15:1 Γνωρίζω δὲ ὑμῖν , ἀδελφοί , τὸ εὐαγγέλιον ὃ εὐηγγελισάμην ὑμῖν , ὃ καὶ παρελάβετε , ἐν ᾧ καὶ ἑστήκατε , 弟兄們,我如今把先前所傳給你們的福音告訴你們知道;這福音你們也領受了,又靠著站立得住,
|
||||
- 15:1a Γνωρίζω:可以接兩個補語 (BAGD),直接受格 (τὸ εὐαγγέλιον) 表達「某事」,間接受格 (ὑμῖν) 表達「某人」。
|
||||
|
@ -86,7 +86,7 @@
|
|||
|
||||
<div style='page-break-after: always;'></div>
|
||||
|
||||
#### 語意圖析 (Semantic Diagram)
|
||||
### 語意圖析 (Semantic Diagram)
|
||||
|
||||
|
||||
![../images/2023-05-10-1Co.15.1-11b 1.png](../images/2023-05-10-1Co.15.1-11b%201.png)
|
||||
|
@ -94,7 +94,7 @@
|
|||
|
||||
<div style='page-break-after: always;'></div>
|
||||
|
||||
#### 大綱 (Outline)
|
||||
### 大綱 (Outline)
|
||||
|
||||
- (0) 開場:神學院有什麼用?!
|
||||
- 來神學院學什麼?對弟兄姊妹有用嗎?能解決教會的問題嗎?
|
||||
|
@ -126,12 +126,12 @@
|
|||
|
||||
<div style='page-break-after: always;'></div>
|
||||
|
||||
#### 小抄 (memo)
|
||||
### 小抄 (memo)
|
||||
|
||||
|
||||
![../images/2023-05-10-1Co.15.1-11小抄.jpg|500x520](../images/2023-05-10-1Co.15.1-11%E5%B0%8F%E6%8A%84.jpg)
|
||||
|
||||
|
||||
#### 講道影片
|
||||
### 講道影片
|
||||
|
||||
https://youtu.be/1iBlCf7-zFM
|
BIN
images/00015.png
BIN
images/00015.png
Binary file not shown.
Before Width: | Height: | Size: 173 KiB |
Binary file not shown.
Before Width: | Height: | Size: 58 KiB |
Binary file not shown.
Before Width: | Height: | Size: 50 KiB |
Binary file not shown.
Before Width: | Height: | Size: 30 KiB |
Binary file not shown.
Before Width: | Height: | Size: 818 KiB |
Loading…
Reference in New Issue