about summary refs log tree commit diff stats
path: root/go.sum
diff options
context:
space:
mode:
authorReto Brunner <reto@labrat.space>2019-12-18 06:33:56 +0100
committerDrew DeVault <sir@cmpwn.com>2019-12-21 09:27:47 -0500
commit684978e77da62c02d99eb8310b8cc75fdbca9888 (patch)
tree86b7a5f84a4a6d8a8fcf263c2b343fed87f07e56 /go.sum
parentb57a47a74f3b3febdbd13abcaf64eee97c81bf56 (diff)
downloadaerc-684978e77da62c02d99eb8310b8cc75fdbca9888.tar.gz
widgets: add msgInfoFromUids helper
Diffstat (limited to 'go.sum')
0 files changed, 0 insertions, 0 deletions
title='Blame the previous revision' href='/akspecs/aerc/blame/ui/exline.go?h=0.6.0&id=07f7cac2f3c5b7b74d16296d5afb57ff7e908130'>^
661e3ec ^


384fe0d ^
a073d76 ^
d35213e ^
a073d76 ^
d35213e ^
661e3ec ^


1418e1b ^
661e3ec ^

6728a11 ^
a073d76 ^

d35213e ^
a073d76 ^


661e3ec ^

1418e1b ^
661e3ec ^








1418e1b ^
d35213e ^
80e891a ^

384fe0d ^
d35213e ^


661e3ec ^


384fe0d ^


661e3ec ^





384fe0d ^
661e3ec ^


384fe0d ^
661e3ec ^


384fe0d ^
661e3ec ^


384fe0d ^
661e3ec ^




384fe0d ^

661e3ec ^




384fe0d ^

661e3ec ^




80e891a ^




661e3ec ^
80e891a ^
661e3ec ^
80e891a ^
661e3ec ^



80e891a ^
384fe0d ^
661e3ec ^


80e891a ^
661e3ec ^

80e891a ^
384fe0d ^
661e3ec ^
80e891a ^
661e3ec ^
80e891a ^
24dfc47 ^


a073d76 ^
80e891a ^
24dfc47 ^


a073d76 ^
8d20e92 ^

661e3ec ^



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
               

        
                                  
                                       

                                          



                       


                    
                      
                                
                           
                      
                   


                   
                                        

 
                                                                

                                
                            


                                  

 
                                                                  








                                      
                                         
                             

                                                                          
                                                                     


                                         


                                   


                                                                  

   .</span>
   <span class="Constant"> .]                                                 ┊foo                                              .</span>
   <span class="Constant"> .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4                                                .</span>
   <span class="Constant"> .                                                  ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .                                                  ┊                                                 .</span>
  ]
]

<span class="muScenario">scenario</span> copy-a-sandbox-to-editor-2 [
  trace-until <span class="Constant">100/app</span>  <span class="Comment"># trace too long</span>
  assume-screen <span class="Constant">100/width</span>, <span class="Constant">10/height</span>
  <span class="Comment"># basic recipe</span>
  <span class="Constant">1</span>:address:array:character<span class="Special"> &lt;- </span>new <span class="Constant">[ </span>
<span class="Constant">recipe foo [</span>
<span class="Constant">  reply 4</span>
<span class="Constant">]</span>]
  <span class="Comment"># run it</span>
  <span class="Constant">2</span>:address:array:character<span class="Special"> &lt;- </span>new <span class="Constant">[foo]</span>
  assume-console [
    press F4
  ]
  <span class="Constant">3</span>:address:programming-environment-data<span class="Special"> &lt;- </span>new-programming-environment screen:address:screen, <span class="Constant">1</span>:address:array:character, <span class="Constant">2</span>:address:array:character
  event-loop screen:address:screen, console:address:console, <span class="Constant">3</span>:address:programming-environment-data
  screen-should-contain [
   <span class="Constant"> .                                                                                 run (F4)           .</span>
   <span class="Constant"> .                                                  ┊                                                 .</span>
   <span class="Constant"> .recipe foo [                                      ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .  reply 4                                         ┊0   edit          copy            delete         .</span>
   <span class="Constant"> .]                                                 ┊foo                                              .</span>
   <span class="Constant"> .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4                                                .</span>
   <span class="Constant"> .                                                  ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .                                                  ┊                                                 .</span>
  ]
  <span class="Comment"># click at right edge of 'copy' button (just before 'delete')</span>
  assume-console [
    left-click <span class="Constant">3</span>, <span class="Constant">84</span>
  ]
  run [
    event-loop screen:address:screen, console:address:console, <span class="Constant">3</span>:address:programming-environment-data
  ]
  <span class="Comment"># it copies into editor</span>
  screen-should-contain [
   <span class="Constant"> .                                                                                 run (F4)           .</span>
   <span class="Constant"> .                                                  ┊foo                                              .</span>
   <span class="Constant"> .recipe foo [                                      ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .  reply 4                                         ┊0   edit          copy            delete         .</span>
   <span class="Constant"> .]                                                 ┊foo                                              .</span>
   <span class="Constant"> .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4                                                .</span>
   <span class="Constant"> .                                                  ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .                                                  ┊                                                 .</span>
  ]
  <span class="Comment"># cursor should be in the right place</span>
  assume-console [
    type <span class="Constant">[0]</span>
  ]
  run [
    event-loop screen:address:screen, console:address:console, <span class="Constant">3</span>:address:programming-environment-data
  ]
  screen-should-contain [
   <span class="Constant"> .                                                                                 run (F4)           .</span>
   <span class="Constant"> .                                                  ┊0foo                                             .</span>
   <span class="Constant"> .recipe foo [                                      ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .  reply 4                                         ┊0   edit          copy            delete         .</span>
   <span class="Constant"> .]                                                 ┊foo                                              .</span>
   <span class="Constant"> .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4                                                .</span>
   <span class="Constant"> .                                                  ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .                                                  ┊                                                 .</span>
  ]
]

<span class="muRecipe">after</span> <span class="Constant">&lt;global-touch&gt;</span> [
  <span class="Comment"># support 'copy' button</span>
  <span class="Delimiter">{</span>
    copy?:boolean<span class="Special"> &lt;- </span>should-attempt-copy? click-row, click-column, env
    <span class="muControl">break-unless</span> copy?
    copy?, env<span class="Special"> &lt;- </span>try-copy-sandbox click-row, env
    <span class="muControl">break-unless</span> copy?
    hide-screen screen
    screen<span class="Special"> &lt;- </span>render-sandbox-side screen, env
    screen<span class="Special"> &lt;- </span>update-cursor screen, recipes, current-sandbox, sandbox-in-focus?, env
    show-screen screen
    <span class="muControl">loop</span> <span class="Constant">+next-event:label</span>
  <span class="Delimiter">}</span>
]

<span class="Comment"># some preconditions for attempting to copy a sandbox</span>
<span class="muRecipe">def</span> should-attempt-copy? click-row:number, click-column:number, env:address:programming-environment-data<span class="muRecipe"> -&gt; </span>result:boolean [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  <span class="Comment"># are we below the sandbox editor?</span>
  click-sandbox-area?:boolean<span class="Special"> &lt;- </span>click-on-sandbox-area? click-row, click-column, env
  <span class="muControl">reply-unless</span> click-sandbox-area?, <span class="Constant">0/false</span>
  <span class="Comment"># narrower, is the click in the columns spanning the 'copy' button?</span>
  first-sandbox:address:editor-data<span class="Special"> &lt;- </span>get *env, <span class="Constant">current-sandbox:offset</span>
  assert first-sandbox, <span class="Constant">[!!]</span>
  sandbox-left-margin:number<span class="Special"> &lt;- </span>get *first-sandbox, <span class="Constant">left:offset</span>
  sandbox-right-margin:number<span class="Special"> &lt;- </span>get *first-sandbox, <span class="Constant">right:offset</span>
  _, _, copy-button-left:number, copy-button-right:number, _<span class="Special"> &lt;- </span>sandbox-menu-columns sandbox-left-margin, sandbox-right-margin
  copy-button-vertical-area?:boolean<span class="Special"> &lt;- </span>within-range? click-column, copy-button-left, copy-button-right
  <span class="muControl">reply-unless</span> copy-button-vertical-area?, <span class="Constant">0/false</span>
  <span class="Comment"># finally, is sandbox editor empty?</span>
  current-sandbox:address:editor-data<span class="Special"> &lt;- </span>get *env, <span class="Constant">current-sandbox:offset</span>
  result<span class="Special"> &lt;- </span>empty-editor? current-sandbox
]

<span class="muRecipe">def</span> try-copy-sandbox click-row:number, env:address:programming-environment-data<span class="muRecipe"> -&gt; </span>clicked-on-copy-button?:boolean, env:address:programming-environment-data [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  <span class="Comment"># identify the sandbox to copy, if the click was actually on the 'copy' button</span>
  sandbox:address:sandbox-data<span class="Special"> &lt;- </span>find-sandbox env, click-row
  <span class="muControl">return-unless</span> sandbox, <span class="Constant">0/false</span>
  clicked-on-copy-button?<span class="Special"> &lt;- </span>copy <span class="Constant">1/true</span>
  text:address:array:character<span class="Special"> &lt;- </span>get *sandbox, <span class="Constant">data:offset</span>
  current-sandbox:address:editor-data<span class="Special"> &lt;- </span>get *env, <span class="Constant">current-sandbox:offset</span>
  current-sandbox<span class="Special"> &lt;- </span>insert-text current-sandbox, text
  <span class="Comment"># reset scroll</span>
  *env<span class="Special"> &lt;- </span>put *env, <span class="Constant">render-from:offset</span>, <span class="Constant">-1</span>
  <span class="Comment"># position cursor in sandbox editor</span>
  *env<span class="Special"> &lt;- </span>put *env, <span class="Constant">sandbox-in-focus?:offset</span>, <span class="Constant">1/true</span>
]

<span class="muRecipe">def</span> find-sandbox env:address:programming-environment-data, click-row:number<span class="muRecipe"> -&gt; </span>result:address:sandbox-data [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  curr-sandbox:address:sandbox-data<span class="Special"> &lt;- </span>get *env, <span class="Constant">sandbox:offset</span>
  <span class="Delimiter">{</span>
    start:number<span class="Special"> &lt;- </span>get *curr-sandbox, <span class="Constant">starting-row-on-screen:offset</span>
    found?:boolean<span class="Special"> &lt;- </span>equal click-row, start
    <span class="muControl">return-if</span> found?, curr-sandbox
    curr-sandbox<span class="Special"> &lt;- </span>get *curr-sandbox, <span class="Constant">next-sandbox:offset</span>
    <span class="muControl">loop</span>
  <span class="Delimiter">}</span>
  <span class="muControl">return</span> <span class="Constant">0/not-found</span>
]

<span class="muRecipe">def</span> click-on-sandbox-area? click-row:number, click-column:number, env:address:programming-environment-data<span class="muRecipe"> -&gt; </span>result:boolean [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  current-sandbox:address:editor-data<span class="Special"> &lt;- </span>get *env, <span class="Constant">current-sandbox:offset</span>
  sandbox-left-margin:number<span class="Special"> &lt;- </span>get *current-sandbox, <span class="Constant">left:offset</span>
  on-sandbox-side?:boolean<span class="Special"> &lt;- </span>greater-or-equal click-column, sandbox-left-margin
  <span class="muControl">return-unless</span> on-sandbox-side?, <span class="Constant">0/false</span>
  first-sandbox:address:sandbox-data<span class="Special"> &lt;- </span>get *env, <span class="Constant">sandbox:offset</span>
  <span class="muControl">return-unless</span> first-sandbox, <span class="Constant">0/false</span>
  first-sandbox-begins:number<span class="Special"> &lt;- </span>get *first-sandbox, <span class="Constant">starting-row-on-screen:offset</span>
  result<span class="Special"> &lt;- </span>greater-or-equal click-row, first-sandbox-begins
]

<span class="muRecipe">def</span> empty-editor? editor:address:editor-data<span class="muRecipe"> -&gt; </span>result:boolean [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  head:address:duplex-list:character<span class="Special"> &lt;- </span>get *editor, <span class="Constant">data:offset</span>
  first:address:duplex-list:character<span class="Special"> &lt;- </span>next head
  result<span class="Special"> &lt;- </span>not first
]

<span class="muRecipe">def</span> within-range? x:number, low:number, high:number<span class="muRecipe"> -&gt; </span>result:boolean [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  not-too-far-left?:boolean<span class="Special"> &lt;- </span>greater-or-equal x, low
  not-too-far-right?:boolean<span class="Special"> &lt;- </span>lesser-or-equal x, high
  result<span class="Special"> &lt;- </span>and not-too-far-left? not-too-far-right?
]

<span class="muScenario">scenario</span> copy-fails-if-sandbox-editor-not-empty [
  trace-until <span class="Constant">100/app</span>  <span class="Comment"># trace too long</span>
  assume-screen <span class="Constant">100/width</span>, <span class="Constant">10/height</span>
  <span class="Comment"># basic recipe</span>
  <span class="Constant">1</span>:address:array:character<span class="Special"> &lt;- </span>new <span class="Constant">[ </span>
<span class="Constant">recipe foo [</span>
<span class="Constant">  reply 4</span>
<span class="Constant">]</span>]
  <span class="Comment"># run it</span>
  <span class="Constant">2</span>:address:array:character<span class="Special"> &lt;- </span>new <span class="Constant">[foo]</span>
  assume-console [
    press F4
  ]
  <span class="Constant">3</span>:address:programming-environment-data<span class="Special"> &lt;- </span>new-programming-environment screen:address:screen, <span class="Constant">1</span>:address:array:character, <span class="Constant">2</span>:address:array:character
  event-loop screen:address:screen, console:address:console, <span class="Constant">3</span>:address:programming-environment-data
  screen-should-contain [
   <span class="Constant"> .                                                                                 run (F4)           .</span>
   <span class="Constant"> .                                                  ┊                                                 .</span>
   <span class="Constant"> .recipe foo [                                      ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .  reply 4                                         ┊0   edit          copy            delete         .</span>
   <span class="Constant"> .]                                                 ┊foo                                              .</span>
   <span class="Constant"> .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4                                                .</span>
   <span class="Constant"> .                                                  ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .                                                  ┊                                                 .</span>
  ]
  <span class="Comment"># type something into the sandbox editor, then click on the 'copy' button</span>
  assume-console [
    left-click <span class="Constant">2</span>, <span class="Constant">70</span>  <span class="Comment"># put cursor in sandbox editor</span>
    type <span class="Constant">[0]</span>  <span class="Comment"># type something</span>
    left-click <span class="Constant">3</span>, <span class="Constant">70</span>  <span class="Comment"># click 'copy' button</span>
  ]
  run [
    event-loop screen:address:screen, console:address:console, <span class="Constant">3</span>:address:programming-environment-data
  ]
  <span class="Comment"># copy doesn't happen</span>
  screen-should-contain [
   <span class="Constant"> .                                                                                 run (F4)           .</span>
   <span class="Constant"> .                                                  ┊0                                                .</span>
   <span class="Constant"> .recipe foo [                                      ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .  reply 4                                         ┊0   edit          copy            delete         .</span>
   <span class="Constant"> .]                                                 ┊foo                                              .</span>
   <span class="Constant"> .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4                                                .</span>
   <span class="Constant"> .                                                  ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .                                                  ┊                                                 .</span>
  ]
  <span class="Comment"># cursor should be in the right place</span>
  assume-console [
    type <span class="Constant">[1]</span>
  ]
  run [
    event-loop screen:address:screen, console:address:console, <span class="Constant">3</span>:address:programming-environment-data
  ]
  screen-should-contain [
   <span class="Constant"> .                                                                                 run (F4)           .</span>
   <span class="Constant"> .                                                  ┊01                                               .</span>
   <span class="Constant"> .recipe foo [                                      ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .  reply 4                                         ┊0   edit          copy            delete         .</span>
   <span class="Constant"> .]                                                 ┊foo                                              .</span>
   <span class="Constant"> .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊4                                                .</span>
   <span class="Constant"> .                                                  ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━.</span>
   <span class="Constant"> .                                                  ┊                                                 .</span>
  ]
]
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->