ScrapBindings-settings
2024-05-27
14:25:52 使用中止
2023-12-25
16:21:25 間違えて format
まで消してしまっていたのを復元
2023-12-18
12:35:25 日刊記録sheet作成系コマンドを消す
2023-09-13
12:54:56 <S-C-x>
, <S-C-d>
でブラウザ機能を起動しないようにした
chrome用
2022-05-09
08:12:01 意味なかった
2022-04-30
06:50:05
moduleを新しいのに差し替えた
06:20:52 つかっていない makeJudgeTimeFromSelection()
を削除した
2022-04-20
2022-03-12
2022-02-10
2022-01-05
2021-08-12
15:32:10 <C-j>
などを消した
2021-07-11
2021-06-08
もう動かないコードを含んでいるので、外したかった
22:14:44 update a library
2021-05-22
10:30:23 <input>
から予定を入れる機能を入れた
2021-05-03
18:26:55
2021-03-15
07:37:34
importするfileの数をなるべく減らす
01:25:45 exportの名前を変えた
s/tritask/task
2021-03-13
2021-01-05
2021-01-03
09:28:01 timestamp挿入commandを別ページに切り出した
2021-01-02
2020-12-30
07:26:26 debug
を変更した
07:17:05 設定変数を分割して見やすくした
07:16:33 tab
/ shift+tab
でインデントを操作できるようにした
config.jsimport { lightFormat, addDays } from "../date-fns/mod.ts";
import {
caret, getCharDOM, getLineDOM, press, insertText,
moveLeft, moveUp, moveDown, moveRight,
goHeadLine, goLastLine,
scrollUp, scrollDown,
scrollHalfUp, scrollHalfDown,
} from "../scrapbox-userscript-std/dom.ts";
ページ遷移
config.js
const navigation = [
// リンクを踏む
{key: "ctrl+]", command: () => {
const { position: { line, char } } = caret();
getCharDOM(line, char)?.closest("a.page-link")?.click?.()
// なかったらその行の中で一番先頭のリンクを踏む
??getLineDOM(line)?.querySelector?.("a.page-link")?.click?.();
return false;
},},
// 戻る
{key: "ctrl+o", command: () => {
history.back();
return false;
},},
];
cursor移動
config.jsconst motion = [
// 移動系
{key: 'ctrl+home', command: () => {goHeadLine();return false;},},
{key: 'ctrl+end', command: () => {goLastLine();return false;},},
{key: 'ctrl+u', command: () => {scrollHalfUp();return false;},},
{key: 'ctrl+d', command: () => {scrollHalfDown();return false;},},
{key: 'ctrl+b', command: () => {scrollUp();return false;},},
{key: 'ctrl+f', command: () => {scrollDown();return false;},},
];
indent操作
tab
を使ったindentはここを参考にした
code blockでも tab
でindentできるようにした
code block中でtab文字は使わない
01:20:46 リンク補完のときに誤動作するのでやめた
config.jsconst indent = [/*
{key: 'tab', command: () => {
if (scrapboxDOM.cursorLine.getElementsByClassName('table-block').length !== 0) return true;
if (!!scrapboxDOM.popupMenu) return true;
indentLines();
return false;
},},
{key: 'shift+tab', command: () => {
if (scrapboxDOM.cursorLine.getElementsByClassName('table-block').length !== 0) return true;
if (!!scrapboxDOM.popupMenu) return true;
deindentLines();
return false;
},},*/
];
テキスト編集
2022-04-26 07:21:34 ページを開かないやつも作りたい
2022-04-27 12:49:37 作った
config.jsimport { makeNewPage } from "../custom-new-page/mod.ts";
import {
newPageHook,
splittedLinkHook,
taskLineHook,
} from "../for-custom-new-page/mod.ts";
const hooks = [taskLineHook, newPageHook, splittedLinkHook];
const edit = [
{key: 'ctrl+shift+x', command: () => {
const project = window.prompt("Create a new page at", scrapbox.Project.name);
if (!project) return;
makeNewPage({ project, mode: "self", hooks })?.();
return false;
},},
{key: 'ctrl+shift+d', command: () => {
const project = window.prompt("Create a new page at", scrapbox.Project.name);
if (!project) return;
makeNewPage({ project, mode: "noopen", hooks })?.();
return false;
},},
];
config.js// timestampを無効化する
// alt+tの誤動作を防止する
scrapbox.TimeStamp.removeAllFormats();
const timestamp = [
{key: 'alt+t alt+t', command: () => {
insertText(lightFormat(new Date(), '#yyyy-MM-dd HH:mm:ss '));
return false;
},},
{key: 'alt+t alt+j', command: () => {
insertText(lightFormat(new Date(), 'yyyy-MM-dd HH:mm:ss '));
return false;
},},
{key: 'alt+t alt+k', command: () => {
insertText(lightFormat(new Date(), 'HH:mm:ss '));
return false;
},},
{key: 'alt+t alt+l', command: () => {
insertText(lightFormat(new Date(), 'yyyy-MM-dd'));
return false;
},},
];
debug用
config.js.disabled(js)import {selection} from '../scrapbox-selection-3/script.js';
import {tidySpaces} from '../選択範囲の行の空白を整えるUserScript/script.js';
import {sortLines} from '../選択範囲の行を並び替えるUserScript/script.js';
const debug = [
// 選択範囲の情報を取得する
{key: 'ctrl+s ctrl+s', command: () => {
console.log(selection.text);
return false;
},},
// 空白をいい感じにする
{key: 'shift+alt+f', command: () => {tidySpaces(); return false;},},
// 辞書順に並び替える
{key: 'shift+alt+g', command: () => {sortLines(); return false;},},
];
config.jsimport { mobile } from "../物理キーボード用拡張shortcut_keyを導入するScrapBindingsの設定/script.js";
import { taskCommon } from "./task-common.ts";
export const config = [
...navigation,
...motion,
...indent,
...edit,
...timestamp,
...mobile,
...taskCommon,
//...debug,
];
bundlerを介さないと実行できないので注意
任意のprojectから使いたいもの
予定タスク以外は現在日付で展開させたいかも
$ deno check -r=https://scrapbox.io --remote https://scrapbox.io/api/code/takker/ScrapBindings-settings/task-common.ts
task-common.tsimport {
transport, createTask, toString
} from "../takker99%2Ftakker-scheduler/deps.ts";
import {
parse, toTaskLine
} from "../takker99%2Ftakker-scheduler/workflow.ts";
import {
caret, getLines, replaceLines
} from "../scrapbox-userscript-std/dom.ts";
import type { Scrapbox } from "../scrapbox-jp%2Ftypes/userscript.ts";
declare const scrapbox: Scrapbox;
export const taskCommon = [
{key: 'alt+a alt+c', command: () => {
(async () => {
const [start, end] = getLineRange();
const text = getLines().slice(start, end + 1).map((line) => {
const text = line.text;
const link = line.text.match(/\[([^\]]+)\]/)?.[1];
if (!link) return text;
const result = parse(link);
if (!result || !result.ok) return text;
const task = result.value;
if (task.freshness?.status === "done") return text;
const taskLine = toTaskLine(task);
taskLine.title = `[${link}]`;
if (!taskLine) return text;
return toString(taskLine);
}).join("\n");
await replaceLines(start, end, text);
await createTask();
})();
return false;
},},
{key: 'alt+a alt+m', command: () => {
if (scrapbox.Layout !== "page") return;
transport({
from: {
project: scrapbox.Project.name,
title: scrapbox.Page.title,
},
to: "takker-memex",
});
return false;
},},
];
/** 選択範囲に含まれる行かカーソルがいる行を返す
*
* ported from https://github.com/takker99/takker-scheduler/blob/0.7.6/commands/getLineRange.ts
*/
const getLineRange = (): readonly [number, number] => {
const { selectionRange: { start, end }, selectedText, position } = caret();
return selectedText === ""
? [position.line, position.line]
: start.line > end.line
? [end.line, start.line]
: [start.line, end.line] as const;
};
$ deno check -r=https://scrapbox.io --remote https://scrapbox.io/api/code/takker/ScrapBindings-settings/task.ts
task.tsimport {
addTask, startTask, endTask, posterioriEndTask,
walkDay, moveToday, format
} from "../takker99%2Ftakker-scheduler/deps.ts";
import type { Scrapbox } from "../scrapbox-jp%2Ftypes/userscript.ts";
declare const scrapbox: Scrapbox;
export const task = [
{key: 'alt+a alt+a', command: () => {addTask();return false;},},
{key: 'alt+a alt+s', command: () => {startTask();return false;},},
{key: 'alt+a alt+e', command: () => {endTask();return false;},},
{key: 'alt+a alt+0', command: () => {posterioriEndTask();return false;},},
{key: 'alt+a alt+1', command: () => {walkDay(1);return false;},},
{key: 'alt+a alt+2', command: () => {walkDay(2);return false;},},
{key: 'alt+a alt+3', command: () => {walkDay(3);return false;},},
{key: 'alt+a alt+4', command: () => {walkDay(4);return false;},},
{key: 'alt+a alt+5', command: () => {walkDay(5);return false;},},
{key: 'alt+a alt+t', command: () => {moveToday();return false;},},
{key: 'alt+a alt+l', command: () => {
window.open("https://script.google.com/macros/s/AKfycbyAgN8nmUXjVXL_tahDzVyyrMzFaI4CJVmIapk8G0GuxxVN-7oUbuDJOf31fP7SFjx9/exec");
return false;
},},
{key: 'alt+a alt+shift+s', command: () => {
if (scrapbox.Layout !== "page") return;
format(scrapbox.Project.name, scrapbox.Page.title);
return false;
},},
];