附註:原有的預覽功能(眼睛圖示)會繼續保留。我覺得有方式可以確認閱讀更多按鈕的顯示位置還是有一定幫助的。不過大部分情況不會需要使用到這個功能。
@leemiyinghao: *編輯器更新* mosir更新了新版的編輯器。加強文字樣式、複製貼上、以及提及(@)功能。 - **文字樣式預覽**:編輯器中可以完整預覽文字樣式套用後的排版,並且樣式語法在不需要顯示時會自動隱藏。 - **文字樣式快捷鍵**:選取一段文字之後可以用`ˋ`、`*`、或是`~`快速套用樣式。 - **文字樣式選單**:樣式選單可以用來關閉及切換樣式了。 - **複製貼上**:修正複製貼上時會產生多餘換行的bug,並且支援從其他網頁編輯器複製貼上的文字。 - **提及**:增加可以直接搜尋的提及按鈕、自動補全選單支援方向鍵及Enter操作。 - **字數限制**:編輯器中會以紅色文字顯示超過字數限制的部分。 其他更動: - 引用(`>`)不再強制加上斜體樣式,您可以自行選擇是否在內容中加入斜體。 - 列表(`-`、`1.`)、引用(`>`)、程式碼區塊(`ˋˋˋ`)不再強制加上排版間隔,您可以自行選擇是否增加空行。 - 修正程式碼區塊(`ˋˋˋ`)語法加上空白會失效的問題。 本次修改會影響發文、草稿、編輯,以及個人檔案簡介、作品集簡介的編輯器。
一點mur
原本做了蠻多survey,像是CodeMirror、Lexical、ProseMirror、TipTap。最後還是決定沿用現有的Slate架構。
最根本的原因還是mosir用的是自己開發的parser。而且這個parser夠快,編輯的同時掃完整段文字不是什麼問題,也就不需要大部分editor framework的incremental update。就連Slate也只用了簡單的decorator function。
但這部分還是蠻尷尬的就是了。Slate的node tree對這個編輯器來說完全沒有任何意義,反而是為了繞過framework的一些內建功能讓程式寫了一堆很奇妙的邏輯。
可是為了支援selection mapping跟redo/undo,又暫時找不到比Slate輕的選擇。(不我不想讓LLM刻一個contenteditable出來)
這塊大概會一直是mosir的技術債跑不掉,除非哪天有發現更輕的lib,或是我自己想不開寫個自己的thin editor framework。