Space config for smart quotes (close #1114) (#1121)

pull/1124/head
Marek S. Łukasiewicz 2024-10-17 22:34:47 +02:00 committed by GitHub
parent cb39ad5004
commit f37cf23ba7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 50 additions and 6 deletions

View File

@ -39,3 +39,9 @@ export type ActionButton = {
export type EmojiConfig = {
aliases: string[][];
};
export type SmartQuotesConfig = {
enabled?: boolean;
double?: { left?: string; right?: string };
single?: { left?: string; right?: string };
};

View File

@ -1,4 +1,9 @@
import type { ActionButton, EmojiConfig, Shortcut } from "./client.ts";
import type {
ActionButton,
EmojiConfig,
Shortcut,
SmartQuotesConfig,
} from "./client.ts";
export interface ConfigContainer {
config: Config;
@ -30,6 +35,7 @@ export type LibraryDef = {
export type Config = {
indexPage: string;
shortcuts?: Shortcut[];
// DEPRECATED: Use smartQuotes instead
useSmartQuotes?: boolean;
maximumAttachmentSize?: number;
libraries?: LibraryDef[];
@ -44,6 +50,7 @@ export type Config = {
spaceIgnore?: string;
emoji?: EmojiConfig;
autoCloseBrackets: string;
smartQuotes?: SmartQuotesConfig;
schema: SchemaConfig;

View File

@ -81,12 +81,36 @@ function keyBindingForQuote(
}
export function createSmartQuoteKeyBindings(client: Client): KeyBinding[] {
if (client.config?.useSmartQuotes === false) {
// Also check the deprecated useSmartQuotes, default is true so either can disable
if (
client.config?.useSmartQuotes === false ||
client.config?.smartQuotes?.enabled === false
) {
return [];
}
let doubleLeft = "“";
let doubleRight = "”";
let singleLeft = "";
let singleRight = "";
const config = client.config?.smartQuotes;
if (config) {
if (typeof config.double?.left === "string") {
doubleLeft = config.double!.left;
}
if (typeof config.double?.right === "string") {
doubleRight = config.double!.right;
}
if (typeof config.single?.left === "string") {
singleLeft = config.single!.left;
}
if (typeof config.single?.right === "string") {
singleRight = config.single!.right;
}
}
return [
keyBindingForQuote('"', "“", "”"),
keyBindingForQuote("'", "", ""),
keyBindingForQuote('"', doubleLeft, doubleRight),
keyBindingForQuote("'", singleLeft, singleRight),
];
}

View File

@ -56,10 +56,17 @@ shortcuts:
- command: "{[Upload: File]}"
priority: 1
# Toggles between “smart” quotes (left and right) and "simple" 'quotes' (good ol' ASCII)
useSmartQuotes: true
# Choose which characters to auto-close
autoCloseBrackets: "([{`"
# Options for “smart” quotes (left and right) used outside of code fragments, these are the defaults:
smartQuotes:
enabled: true # Set to false for "simple" 'quotes' (good ol' ASCII)
double:
left: '“'
right: '”'
single:
left: ""
right: ""
# Defines files to ignore in a format compatible with .gitignore
spaceIgnore: |