@@ -1455,6 +1455,10 @@ var locale = {
14551455 name : "Enhance Mod+A selection in text" ,
14561456 desc : "First select the current line, second select the current text block, third select the entire text."
14571457 } ,
1458+ collapsePersistentEnter : {
1459+ name : "Collapse Persistent Enter" ,
1460+ desc : "Adds same-level header line without expanding when pressing Enter on a collapsed header."
1461+ } ,
14581462 puncRectify : {
14591463 name : "Punc rectify" ,
14601464 desc : "Automatically convert English punctuation (, . ? !) between Chinese characters to full-width punctuation during typing (reversible)."
@@ -1655,6 +1659,10 @@ var locale2 = {
16551659 name : "\u589E\u5F3A Ctrl/Cmd+A \u529F\u80FD" ,
16561660 desc : "\u7B2C\u4E00\u6B21\u9009\u4E2D\u5F53\u524D\u884C\uFF0C\u7B2C\u4E8C\u6B21\u9009\u4E2D\u5F53\u524D\u6587\u672C\u5757\uFF0C\u7B2C\u4E09\u6B21\u9009\u4E2D\u5168\u6587\u3002"
16571661 } ,
1662+ collapsePersistentEnter : {
1663+ name : "\u6807\u9898\u6298\u53E0\u4FDD\u5E8F" ,
1664+ desc : "\u5728\u6298\u53E0\u7684\u540C\u7EA7\u6807\u9898\u884C\u6309\u56DE\u8F66\u4E0D\u4F1A\u5C55\u5F00\uFF0C\u76F4\u63A5\u6DFB\u52A0\u540C\u7EA7\u6807\u9898\u884C"
1665+ } ,
16581666 puncRectify : {
16591667 name : "\u6807\u70B9\u77EB\u6B63" ,
16601668 desc : "\u4EC5\u5728\u8F93\u5165\u8FC7\u7A0B\u4E2D\uFF0C\u4E2D\u6587\u95F4\u7684\u82F1\u6587\u6807\u70B9\uFF08,.?!\uFF09\u81EA\u52A8\u8F6C\u6362\u4E3A\u5168\u89D2\uFF08\u53EF\u64A4\u9500\uFF09"
@@ -1855,6 +1863,10 @@ var locale3 = {
18551863 name : "\u0423\u043B\u0443\u0447\u0448\u0438\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435 Mod+A \u0432 \u0442\u0435\u043A\u0441\u0442\u0435" ,
18561864 desc : "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0432\u044B\u0434\u0435\u043B\u0438\u0442\u0435 \u0442\u0435\u043A\u0443\u0449\u0443\u044E \u0441\u0442\u0440\u043E\u043A\u0443, \u0437\u0430\u0442\u0435\u043C \u0432\u044B\u0434\u0435\u043B\u0438\u0442\u0435 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0431\u043B\u043E\u043A, \u0437\u0430\u0442\u0435\u043C \u0432\u044B\u0434\u0435\u043B\u0438\u0442\u0435 \u0432\u0435\u0441\u044C \u0442\u0435\u043A\u0441\u0442."
18571865 } ,
1866+ collapsePersistentEnter : {
1867+ name : "\u0421\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435 \u043F\u043E\u0441\u0442\u043E\u044F\u043D\u043D\u043E\u0433\u043E \u0432\u0432\u043E\u0434\u0430" ,
1868+ desc : "\u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u043E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u044B\u0435 \u0443\u0440\u043E\u0432\u043D\u0438 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u0432 \u0431\u0435\u0437 \u0440\u0430\u0441\u043A\u0440\u044B\u0442\u0438\u044F \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 Enter \u043D\u0430 \u0441\u0432\u0435\u0440\u043D\u0443\u0442\u043E\u043C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0435."
1869+ } ,
18581870 puncRectify : {
18591871 name : "\u041A\u043E\u0440\u0440\u0435\u043A\u0446\u0438\u044F \u043F\u0443\u043D\u043A\u0442\u0443\u0430\u0446\u0438\u0438" ,
18601872 desc : "\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0430\u044F \u043A\u043E\u043D\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044F \u0430\u043D\u0433\u043B\u0438\u0439\u0441\u043A\u043E\u0439 \u043F\u0443\u043D\u043A\u0442\u0443\u0430\u0446\u0438\u0438 (, . ? !) \u043C\u0435\u0436\u0434\u0443 \u043A\u0438\u0442\u0430\u0439\u0441\u043A\u0438\u043C\u0438 \u0441\u0438\u043C\u0432\u043E\u043B\u0430\u043C\u0438 \u0432 \u043F\u043E\u043B\u043D\u043E\u0448\u0438\u0440\u0438\u043D\u043D\u0443\u044E \u043F\u0443\u043D\u043A\u0442\u0443\u0430\u0446\u0438\u044E \u043F\u0440\u0438 \u043D\u0430\u0431\u043E\u0440\u0435 \u0442\u0435\u043A\u0441\u0442\u0430 (\u043E\u0431\u0440\u0430\u0442\u0438\u043C\u043E)."
@@ -2055,6 +2067,10 @@ var locale4 = {
20552067 name : "\u589E\u5F37 Mod+A \u529F\u80FD" ,
20562068 desc : "\u7B2C\u4E00\u6B21\u9078\u4E2D\u7576\u524D\u884C\uFF0C\u7B2C\u4E8C\u6B21\u9078\u4E2D\u7576\u524D\u6587\u672C\u584A\uFF0C\u7B2C\u4E09\u6B21\u9078\u4E2D\u5168\u6587\u3002"
20572069 } ,
2070+ collapsePersistentEnter : {
2071+ name : "\u6A19\u984C\u6298\u53E0\u4FDD\u5E8F" ,
2072+ desc : "\u5728\u6298\u53E0\u7684\u540C\u7EA7\u6A19\u984C\u884C\u6309\u56DE\u8ECA\u4E0D\u6703\u5C55\u958B\uFF0C\u76F4\u63A5\u6DFB\u52A0\u540C\u7D1A\u6A19\u984C\u884C"
2073+ } ,
20582074 puncRectify : {
20592075 name : "\u6A19\u9EDE\u77EB\u6B63" ,
20602076 desc : "\u50C5\u5728\u8F38\u5165\u904E\u7A0B\u4E2D\uFF0C\u4E2D\u6587\u9593\u7684\u82F1\u6587\u6A19\u9EDE\uFF08,.?!\uFF09\u81EA\u52D5\u8F49\u63DB\u70BA\u5168\u89D2\uFF08\u53EF\u53D6\u6D88\uFF09"
@@ -2193,7 +2209,8 @@ var DEFAULT_SETTINGS = {
21932209 TryFixChineseIM : true ,
21942210 PuncRectify : false ,
21952211 FixMacOSContextMenu : false ,
2196- TryFixMSIME : false
2212+ TryFixMSIME : false ,
2213+ CollapsePersistentEnter : false
21972214} ;
21982215var locale5 = en_US_default ;
21992216var EasyTypingSettingTab = class extends import_obsidian2 . PluginSettingTab {
@@ -2436,6 +2453,12 @@ var EasyTypingSettingTab = class extends import_obsidian2.PluginSettingTab {
24362453 await this . plugin . saveSettings ( ) ;
24372454 } ) ;
24382455 } ) ;
2456+ new import_obsidian2 . Setting ( containerEl ) . setName ( locale5 . settings . collapsePersistentEnter . name ) . setDesc ( locale5 . settings . collapsePersistentEnter . desc ) . addToggle ( ( toggle ) => {
2457+ toggle . setValue ( this . plugin . settings . CollapsePersistentEnter ) . onChange ( async ( value ) => {
2458+ this . plugin . settings . CollapsePersistentEnter = value ;
2459+ await this . plugin . saveSettings ( ) ;
2460+ } ) ;
2461+ } ) ;
24392462 new import_obsidian2 . Setting ( containerEl ) . setName ( locale5 . settings . fixMicrosoftIME . name ) . setDesc ( locale5 . settings . fixMicrosoftIME . desc ) . addToggle ( ( toggle ) => {
24402463 toggle . setValue ( this . plugin . settings . TryFixMSIME ) . onChange ( async ( value ) => {
24412464 this . plugin . settings . TryFixMSIME = value ;
@@ -2923,6 +2946,9 @@ function getTabstopGroupsFromView(view) {
29232946 const currentTabstopGroups = view . state . field ( tabstopsStateField ) ;
29242947 return currentTabstopGroups ;
29252948}
2949+ function hasTabstops ( view ) {
2950+ return getTabstopGroupsFromView ( view ) . length > 0 ;
2951+ }
29262952function addTabstops ( view , tabstopGroups ) {
29272953 view . dispatch ( {
29282954 effects : [ addTabstopsEffect . of ( tabstopGroups ) ]
@@ -3486,10 +3512,10 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin {
34863512 if ( this . onFormatArticle === true )
34873513 return ;
34883514 let cursor_changed = update . transactions . find ( ( tr2 ) => tr2 . selection ) != null ;
3489- if ( ( update . docChanged || cursor_changed ) && ! update . view . composing && ! isInsideCurTabstop ( update . view ) ) {
3515+ if ( hasTabstops ( update . view ) && ( update . docChanged || cursor_changed ) && ! update . view . composing && ! isInsideCurTabstop ( update . view ) ) {
34903516 removeAllTabstops ( update . view ) ;
34913517 }
3492- if ( update . transactions . find ( ( tr2 ) => tr2 . isUserEvent ( "undo" ) ) ) {
3518+ if ( hasTabstops ( update . view ) && update . transactions . find ( ( tr2 ) => tr2 . isUserEvent ( "undo" ) ) ) {
34933519 removeAllTabstops ( update . view ) ;
34943520 }
34953521 let notSelected = true ;
@@ -3653,7 +3679,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin {
36533679 return false ;
36543680 } ;
36553681 this . handleEnter = ( view ) => {
3656- var _a ;
3682+ var _a , _b ;
36573683 let state = view . state ;
36583684 let doc = state . doc ;
36593685 const tree = ( 0 , import_language3 . syntaxTree ) ( state ) ;
@@ -3663,8 +3689,43 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin {
36633689 const pos = s . main . to ;
36643690 let line = doc . lineAt ( pos ) ;
36653691 let codeBlockInfo = getCodeBlockInfoInPos ( state , pos ) ;
3692+ if ( this . settings . CollapsePersistentEnter ) {
3693+ const editor = this . app . workspace . getActiveViewOfType ( import_obsidian3 . MarkdownView ) . editor ;
3694+ let fold_offsets = editor . getFoldOffsets ( ) ;
3695+ let all_foldable_lines = editor . getAllFoldableLines ( ) ;
3696+ let folded_lines = [ ] ;
3697+ for ( let offset of fold_offsets ) {
3698+ let folded = all_foldable_lines . find ( ( l ) => l . from == offset ) ;
3699+ if ( folded ) {
3700+ folded_lines . push ( folded ) ;
3701+ }
3702+ }
3703+ let folded_line = folded_lines . find ( ( l ) => pos >= l . from && pos <= l . to ) ;
3704+ if ( folded_line ) {
3705+ let folded_first_line = doc . lineAt ( folded_line . from ) . text ;
3706+ let reg_headings = / ^ # + / ;
3707+ if ( reg_headings . test ( folded_first_line ) ) {
3708+ let heading_level = ( _a = folded_first_line . match ( / ^ # + / ) ) == null ? void 0 : _a [ 0 ] . length ;
3709+ let new_heading_level = heading_level ;
3710+ let new_heading_line = "\n" + "#" . repeat ( new_heading_level ) + " " ;
3711+ let folded_last_line = doc . lineAt ( folded_line . to ) . text ;
3712+ let folded_last_line_is_blank = / ^ \s * $ / . test ( folded_last_line ) ;
3713+ let new_heading_line_pos = editor . offsetToPos ( folded_line . to ) ;
3714+ let new_cursor_pos = { line : new_heading_line_pos . line + 1 , ch : new_heading_level + 1 } ;
3715+ if ( this . settings . StrictModeEnter && ! folded_last_line_is_blank && ( this . app . vault . config . strictLineBreaks || false ) ) {
3716+ new_heading_line = "\n\n" + "#" . repeat ( new_heading_level ) + " " ;
3717+ new_cursor_pos = { line : new_heading_line_pos . line + 2 , ch : new_heading_level + 1 } ;
3718+ }
3719+ editor . replaceRange ( new_heading_line , new_heading_line_pos ) ;
3720+ editor . setCursor ( editor . offsetToPos ( folded_line . from ) ) ;
3721+ editor . exec ( "toggleFold" ) ;
3722+ editor . setCursor ( new_cursor_pos ) ;
3723+ return true ;
3724+ }
3725+ }
3726+ }
36663727 if ( this . settings . BetterCodeEdit && codeBlockInfo && codeBlockInfo . code_start_pos !== doc . lineAt ( codeBlockInfo . start_pos ) . to && pos >= codeBlockInfo . code_start_pos && pos <= codeBlockInfo . code_end_pos ) {
3667- let line_indent_str = ( ( _a = line . text . match ( / ^ \s * / ) ) == null ? void 0 : _a [ 0 ] ) || "" ;
3728+ let line_indent_str = ( ( _b = line . text . match ( / ^ \s * / ) ) == null ? void 0 : _b [ 0 ] ) || "" ;
36683729 view . dispatch ( {
36693730 changes : { from : pos , to : pos , insert : "\n" + line_indent_str } ,
36703731 selection : { anchor : pos + line_indent_str . length + 1 , head : pos + line_indent_str . length + 1 } ,
@@ -3682,7 +3743,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin {
36823743 if ( pos == line . from )
36833744 return false ;
36843745 if ( getPosLineType2 ( state , pos ) == "quote" /* quote */ ) {
3685- let reg_quote = / ^ ( \s * ) ( > + ) / ;
3746+ let reg_quote = / ^ ( \s * ) ( > + ? ) / ;
36863747 let quote_match = line . text . match ( reg_quote ) ;
36873748 if ( ! quote_match )
36883749 return false ;
@@ -3695,9 +3756,9 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin {
36953756 let space_str2 = " " ;
36963757 if ( quote_content . endsWith ( " " ) )
36973758 space_str2 = "" ;
3698- let inserted_str = space_str2 + "\n" + quote_match [ 0 ] + " " ;
3759+ let inserted_str = space_str2 + "\n" + quote_match [ 0 ] ;
36993760 if ( this . settings . StrictLineMode == "enter_twice" /* EnterTwice */ ) {
3700- inserted_str = "\n" + quote_match [ 0 ] + " \n" + quote_match [ 0 ] + " " ;
3761+ inserted_str = "\n" + quote_match [ 0 ] + "\n" + quote_match [ 0 ] ;
37013762 }
37023763 view . dispatch ( {
37033764 changes : { from : pos , to : pos , insert : inserted_str } ,
@@ -3799,7 +3860,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin {
37993860 } ;
38003861 this . triggerCvtRule = ( view , cursor_pos ) => {
38013862 let rules = [ ] ;
3802- if ( this . settings . BaseObEditEnhance )
3863+ if ( this . settings . QuoteSpace )
38033864 rules = rules . concat ( this . ExtraBasicConvRules ) ;
38043865 if ( this . settings . QuoteSpace )
38053866 rules = rules . concat ( this . QuoteSpaceRules ) ;
@@ -4603,7 +4664,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin {
46034664 const line = doc . lineAt ( selection . head ) ;
46044665 const lineContent = line . text ;
46054666 const listMatch = lineContent . match ( / ^ ( \s * ) ( [ - * + ] \[ .\] | [ - * + ] | \d + \. ) \s / ) ;
4606- const quoteMatch = lineContent . match ( / ^ ( \s * ) ( > + ) ( \s ) ? / ) ;
4667+ const quoteMatch = lineContent . match ( / ^ ( \s * ) ( > + ? ) / ) ;
46074668 let changes ;
46084669 let newCursorPos ;
46094670 let prefix = "" ;
@@ -4617,7 +4678,7 @@ var EasyTypingPlugin = class extends import_obsidian3.Plugin {
46174678 prefix = indent + ( parseInt ( listMarker ) + 1 ) + ". " ;
46184679 }
46194680 } else if ( quoteMatch ) {
4620- prefix = quoteMatch [ 1 ] + quoteMatch [ 2 ] + " " ;
4681+ prefix = quoteMatch [ 1 ] + quoteMatch [ 2 ] ;
46214682 }
46224683 changes = [ { from : line . to , insert : "\n" + prefix } ] ;
46234684 newCursorPos = line . to + 1 + prefix . length ;
0 commit comments