yi.cabal

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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
name:           yi
version:        0.6.2.5
category:       Development, Editor
synopsis:       The Haskell-Scriptable Editor
description:
  Yi is a text editor written in Haskell and extensible in Haskell. The goal of the Yi project is
  to provide a flexible, powerful, and correct editor for haskell hacking.
license:        GPL
license-file:   LICENSE
author:         AUTHORS
maintainer:     yi-devel@googlegroups.com
homepage:       http://haskell.org/haskellwiki/Yi
bug-reports:    http://code.google.com/p/yi-editor/issues/list
Cabal-Version:  >= 1.6
tested-with:    GHC==7.0.1
build-type:     Simple
data-files:
  art/yi+lambda-fat.pdf
  art/yi+lambda-fat.32.png
  art/dependencies.png
  art/plain-folder.png
  art/hs-source-folder.png
  art/exposed-module.png
  art/hidden-module.png
  art/exposed-file-module.png
  art/hidden-file-module.png
  art/package.png
  art/project.png
  art/c-source.png
  art/h-source.png
  art/text-file.png
  art/license-file.png
  art/setup-script.png
  art/setup-script.png
extra-source-files: src/Yi/Lexer/common.hsinc

flag scion
  Default: False
  Description: Use the scion library to provide extra commands that interface with GHC (experimental)

flag ghcAPI
  Description: Enable linking with GHC API for advanced features.
  Default: False
  -- Can be useful to disable; ghc package is difficult to rebuild;
  --  * normally not available for profiling.      
  --  * links against old/new version of bytestring
  --  * links against old version of Cabal
  -- ...

flag hacking
  Default: False
  Description:
     Hacking mode:
        * Create HackerMain.hs by copying your ~/.yi/yi.hs
        * Skip library compilation
        * You can run yi in-place with dist/build/yi/yi

flag testing
  Description: bake-in the self-checks

library
  hs-source-dirs: src
  if flag(hacking)
    buildable: False
  else
    exposed-modules:
        Yi
        Yi.Boot
        Yi.Buffer
        Yi.Buffer.Basic
        Yi.Buffer.HighLevel
        Yi.Buffer.Indent
        Yi.Buffer.Normal
        Yi.Buffer.Misc
        Yi.Buffer.Region
        Yi.Buffer.Undo
        Yi.Command
        Yi.Completion
        Yi.Config
        Yi.Config.Default
        Yi.Config.Misc
        Yi.Core
        Yi.Debug
        Yi.Dired
        Yi.Dynamic
        Yi.Editor 
        Yi.Eval
        Yi.Event
        Yi.File
        Yi.History
        Yi.Hoogle
        Yi.IReader
        Yi.IncrementalParse
        Yi.Interact
        Yi.Keymap
        Yi.Keymap.Completion
        Yi.Keymap.Cua
        Yi.Keymap.Emacs
        Yi.Keymap.Emacs.KillRing
        Yi.Keymap.Emacs.Utils
        Yi.Keymap.Keys
        Yi.Keymap.Vim
        Yi.KillRing
        Yi.Lexer.Abella
        Yi.Lexer.Alex
        Yi.Lexer.Cabal
        Yi.Lexer.Compilation
        Yi.Lexer.C
        Yi.Lexer.ObjectiveC
        Yi.Lexer.Cplusplus
        Yi.Lexer.Haskell
        Yi.Lexer.JavaScript
        Yi.Lexer.Latex 
        Yi.Lexer.LiterateHaskell
        Yi.Lexer.GNUMake
        Yi.Lexer.OCaml
        Yi.Lexer.Ott
        Yi.Lexer.Perl
        Yi.Lexer.Python
        Yi.Lexer.Srmc
        Yi.Lexer.SVNCommit
        Yi.Lexer.Whitespace
        Yi.Main
        Yi.MiniBuffer
        Yi.Misc
        Yi.Mode.Abella
        Yi.Mode.Buffers
        Yi.Mode.Compilation
        Yi.Mode.Haskell
        Yi.Mode.Haskell.Dollarify
        Yi.Mode.IReader
        Yi.Mode.Interactive
        Yi.Mode.JavaScript
        Yi.Mode.Latex
        Yi.Modes
        Yi.Monad
        Yi.Prelude
        Yi.Process
        Yi.Rectangle
        Yi.Regex
        Yi.Region
        Yi.Snippets
        Yi.Snippets.Haskell
        Yi.Search
        Yi.String
        Yi.Style
        Yi.Style.Library
        Yi.Syntax
        Yi.Syntax.Driver
        Yi.Syntax.Haskell
        Yi.Syntax.JavaScript
        Yi.Syntax.Latex
        Yi.Syntax.Layout
        Yi.Syntax.OnlineTree
        Yi.Syntax.Paren
        Yi.Syntax.Tree
        Yi.Syntax.Strokes.Haskell
        Yi.Tag
        Yi.TextCompletion,
        Yi.UI.Common
        Yi.UI.Batch
        Yi.UI.Utils
        Yi.UI.TabBar
        Yi.Verifier.JavaScript
        Yi.Window
        Yi.Char.Unicode

        -- This is super bad. This shouldn't be exposed (and we should just
        -- depend on a premade ropes library). Needed in yi-pango.
        Data.Rope
        Data.Prototype

    include-dirs:   src/Yi/Lexer

    if flag (scion)
      cpp-options: -DSCION
      exposed-modules:  Yi.Scion

    if flag (ghcAPI)
      cpp-options: -DGHC_API

      exposed-modules:  Yi.Mode.Shim
      other-modules:
        Shim.SHM, Shim.SessionMonad, Shim.Hsinfo, Shim.GhcCompat,
        Shim.ExprSearch, Yi.GHC

    if !os(windows)
      cpp-options: -DCAUTIOUS_WRITES

    other-modules:
        Paths_yi,

        -- "Internal" modules that the user better not see.
        Yi.Buffer.Implementation

        -- Should probably be split out to another package.
        Data.DelayList
        Data.Trie
        Parser.Incremental
        Shim.CabalInfo
        Shim.Utils 
        Shim.ProjectContent
        System.FriendlyPath

        -- Broken.
--                Yi.Keymap.Ee,
--                Yi.Keymap.Gwern,
--                Yi.Keymap.Joe,
--                Yi.Keymap.Mg,
--                Yi.Keymap.Nano,
--                Yi.Keymap.Vi,

executable parserTest
  hs-source-dirs: src

  if !flag(testing)
    buildable: False
  else
    main-is: ParserTest/ParserTest.hs
    other-modules:
      Yi
      Yi.Modes
      Yi.Mode.Abella
      Yi.Mode.Compilation
      Yi.Mode.Haskell
      Yi.Mode.Haskell.Dollarify
      Yi.UI.Common

      Paths_yi
      Yi.GHC

      Yi.Lexer.Abella
      Yi.Lexer.Alex
      Yi.Lexer.Compilation
      Yi.Lexer.C
      Yi.Lexer.ObjectiveC
      Yi.Lexer.Cplusplus
      Yi.Lexer.Haskell
      Yi.Lexer.JavaScript
      Yi.Lexer.LiterateHaskell
      Yi.Lexer.Latex 
      Yi.Lexer.Srmc
      Yi.Lexer.Cabal
      Yi.Lexer.GNUMake
      Yi.Lexer.OCaml
      Yi.Lexer.Ott
      Yi.Lexer.Perl
      Yi.Lexer.Python
      Yi.Lexer.SVNCommit
      Yi.Lexer.Whitespace

      Yi.Syntax
      Yi.Syntax.Driver
      Yi.Syntax.JavaScript
      Yi.Syntax.Layout
      Yi.Syntax.OnlineTree
      Yi.Syntax.Paren
      Yi.Syntax.Latex
      Yi.Syntax.Tree

      Yi.Mode.Interactive
    include-dirs:   src/Yi/Lexer

executable yi
  hs-source-dirs: src

  if flag(hacking)
    main-is: HackerMain.hs
  else
    main-is: Main.hs

  build-tools:   alex >= 2.0.1 && < 3

  build-depends:
    Cabal >= 1.6 && < 1.11,
    Diff >=0.1 && <0.2,
    array, containers,  directory, process, old-locale,
    base >=4 && <5,
    binary == 0.5.*,
    bytestring >=0.9.1 && <0.9.2,
    derive >=2.4 && <2.5,
    data-accessor >= 0.2.1.4 && < 0.3,
    data-accessor-monads-fd == 0.2.*,
    data-accessor-template >= 0.2.1.3 && < 0.2.2,
    dlist >=0.4.1,
    dyre >=0.7,
    filepath>=1.1 && <1.3,
    fingertree >= 0 && <0.1,
    ghc-paths ==0.1.*,
    hint > 0.3.1,
    monads-fd >= 0.1.0.1,
    pointedlist >= 0.3.5 && <0.4,
    pureMD5 >= 0.2.3,
    random,
    regex-base ==0.93.*,
    regex-tdfa == 1.1.*,
    rosezipper >= 0.1 && < 0.2,
    split == 0.1.*,
    template-haskell >= 2.4 && < 2.6,
    time >= 1.1 && < 1.3,
    utf8-string >= 0.3.1,
    uniplate,
    unix-compat >=0.1 && <0.3

  ghc-options:   -Wall -fno-warn-orphans -threaded
  -- orphans are a performance warning, but 
  -- we need this in Yi.
  -- ghc-options later on get appended to the original
  ghc-prof-options:   -prof -auto-all

  if !os(mingw32)
    build-depends: unix

  if flag (scion)
    build-depends: ghc == 6.10.*
    build-depends: ghc-syb
    build-depends: scion
    cpp-options: -DSCION

  if flag (ghcAPI)
    build-depends: ghc == 6.8.3 || == 6.10.*
    build-depends: old-time
    -- Shim uses old-time
    cpp-options: -DGHC_API

  if !os(windows)
    build-depends: cautious-file >= 0.1.5 && <0.2
    cpp-options: -DCAUTIOUS_WRITES

  other-modules:
    Yi
    Yi.Prelude
    Yi.Boot
    Yi.Keymap.Emacs
    Yi.Keymap.Vim
    Yi.Misc
    Yi.Modes
    Yi.Mode.Abella
    Yi.Mode.Compilation
    Yi.Mode.Haskell
    Yi.Mode.Haskell.Dollarify
    Yi.Buffer
    Yi.Buffer.Basic
    Yi.Keymap.Keys
    Shim.CabalInfo
    Shim.Utils
    Shim.ProjectContent
    System.FriendlyPath
    Yi.UI.Common
    Yi.UI.Batch

    Paths_yi
    Yi.GHC

    Yi.Lexer.Abella
    Yi.Lexer.Alex
    Yi.Lexer.Compilation
    Yi.Lexer.C
    Yi.Lexer.ObjectiveC
    Yi.Lexer.Cplusplus
    Yi.Lexer.Haskell
    Yi.Lexer.JavaScript
    Yi.Lexer.LiterateHaskell
    Yi.Lexer.Latex 
    Yi.Lexer.Srmc
    Yi.Lexer.Cabal
    Yi.Lexer.GNUMake
    Yi.Lexer.OCaml
    Yi.Lexer.Ott
    Yi.Lexer.Perl
    Yi.Lexer.Python
    Yi.Lexer.SVNCommit
    Yi.Lexer.Whitespace

    Yi.Syntax
    Yi.Syntax.Driver
    Yi.Syntax.JavaScript
    Yi.Syntax.Layout
    Yi.Syntax.OnlineTree
    Yi.Syntax.Paren
    Yi.Syntax.Latex
    Yi.Syntax.Tree
    Yi.Syntax.Strokes.Haskell

    Yi.Verifier.JavaScript

    Yi.Mode.Interactive

    Yi.Buffer.Indent
    Yi.Buffer.HighLevel
    Yi.Buffer.Implementation
    Yi.Buffer.Normal
    Yi.Buffer.Region
    Yi.Completion
    Yi.Core
    Yi.Debug
    Yi.Dired
    Yi.Dynamic
    Yi.Editor
    Yi.Eval
    Yi.Event
    Data.Rope
    Yi.History
    Yi.Interact
    Yi.Keymap
    Yi.Keymap.Completion
    Yi.Keymap.Emacs.KillRing
    Yi.Keymap.Emacs.Utils
    Yi.Main
    Yi.Monad
    Yi.Process
    Yi.Snippets
    Yi.Snippets.Haskell
    Yi.Search
    Yi.String
    Yi.Style
    Yi.TextCompletion
    Yi.Buffer.Undo
    Yi.Window
    Yi.MiniBuffer
    Yi.File
    Yi.KillRing
    Yi.IncrementalParse
    Yi.UI.Utils
    -- Should probably be split out to another package.
    Data.DelayList

  include-dirs:   src/Yi/Lexer

  if flag(testing)
      cpp-options:    -DTESTING
      hs-source-dirs: . tests/
      other-modules: Driver, TestSuite
      build-depends: QuickCheck >= 2.1.0.2
      build-depends: random