js-elisp / ChangeLog

  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
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
changes
=======
- Updated ocp-indent to our first integrated release version, 1.0.1.  You
  may want to try it again via M-x customize-variable RET ocaml-indenter
  RET.  Indentation is much improved and indent-region (C-M-\) seems to
  work.  Please let me know if you try it and have any trouble.
- elisp/contrib/csharp-mode.el: Upgraded csharp-mode to 0.8.6 in a
  (failed) attempt to fix a compilation error.  Does anyone use it?
- elisp/jane/jane-micro-features.el (Jane.anything): Added by dastapov;
  try it out if you like and let us know about enabling by default.
- elisp/omake/omake-env.el (Omake.Env.to-string): Sorted environment
  variables in the verbose form of the status buffer.
- Added "Error: File feedos.cmx not found" errors to omake-server.
  (Thanks, datkin.)
- Added another Kerberos password prompt syntax.  Please continue to
  let us know when jane-elisp doesn't recognize your password prompts.
- Work around an apparent bug in Emacs Lisp sit-for in the presence of
  multiple X displays (reported and registered as Emacs bug#13655).
- Compile many .el files to .elc files.  We had been running from
  source for maximum Emacs compatibility, but we believe the .elcs
  will work in the versions of Emacs 23 and Emacs 24 that we support.
- Added WITH_FP omake environment variable support to omake-mode and
  omake-server.  This variable is being added to the jane OMakeroot to
  support users choosing toolchain builds with frame pointer support.
  This comes with a version bump, so you'll need to restart your
  omake-server when you restart your Emacs.
- Fixed Omake.toggle-env (C-c C-o) to keep it simple and stick with true and
  false.  (To unset an environment variable to use the OMakeroot
  default again, use Omake.setenv.)

bug fixes
=========
- Fixed cr-grep like cr-todo as far as preventing the grep function
  from adding /dev/null to the command and dropped support for the
  removed "cr grep -unassigned-owner" option.
- Don't necessarily expect C-c C-l (Omake.next-error) to be run in a
  file buffer.

================================================================================
2013-02-04 Rolled rev eda82ffcf05b to test
================================================================================

changes
=======
- ocp-indent update

bug fixes
=========
- error processing and Omake.show-projects-buffer in Emacs 24
- partially worked around dependency bug in vc-hg
- fixed a bug where fresh Emacsen reconnecting to existing projects
  weren't catching up to the present state.  I had introduced this bug
  in 2013-01-31-roll-test.

================================================================================
2013-01-31 Rolled rev 940b317708f1 to test
================================================================================

changes
=======
- added a "target" option to Omake.compile for code to use
- cranked up the number of errors that omake-server sends to Emacs at
  a time, to test the success of the earlier partial fix to C-c C-l
  (Omake.next-error) performance
- tweaked the omake-server protocol to avoid missing errors under load
- set colors for more of the todo keywords we use in org-mode

bug fixes
=========
- default omake server omake command: jomake if in $PATH (else omake);
  thanks juecker and smclaughlin/seanmcl
- fixed an infinite loop in tuareg-find-monadic-match ot top level;
  thanks dwang
- CRvDATE is deprecated but handled for backwards-compatibility;
  thanks cfalls
- fixed cr-todo for Emacs 24; thanks cfalls
- work around for vc-hg not requiring log-view (an apparent bug in vc-hg)

================================================================================
2013-01-16 Rolled rev 3d643953feb5 to test
================================================================================

changes
=======
- added some ocamldoc syntax support to Tuareg: indent code in
  comments between "{[" and "]}" (preformatted source) and "[" and "]"
  (source) and don't indent between "{v" and "v}" (verbatim)
- switched the Jane default tuareg-indent-comments back to t now that
  we have convenient ways to denote verbatim text and have fixed M-q
  (tuareg-indent-phrase) to avoid accidentally reindenting comments
  you're not pointing at

bug fixes
=========
- fixed a bug in tuareg-compute-indent (M-q) where it indented too far
  when pointing at the last paragraph of a comment, causing us to
  accidentally reindent off-screen code and comments

================================================================================
2013-01-11 Rolled rev 8925c1113abe to test
================================================================================

changes
=======
- added q, d, and k bindings, somewhat like dired's, to the omake buffers
- don't kill the omake project by default when you kill the omake status buffer

bug fixes
=========
- don't assume the omake status buffer exists when creating the omake
  projects buffer, so C-c C-p works when there's no status buffer
- fixed a performance bug that slowed C-c C-l when there are lots of
  errors; also prevents Emacs from hammering OMake Server so much
- made Omake.setenv work when the omake status buffer doesn't exist

================================================================================
2013-01-09 Rolled rev 7b6fc09692cf to test
================================================================================

new stuff
=========

omake-mode now has an opam package.  See README for more details.

changes
=======
- dropped a legacy compatibility definition of "jane-home"; delete a
  reference to it from custom-set-variables in your ~/.emacs if you
  encounter a corresponding "undefined variable" error at startup
- unbound "C-c C-c" in edit-server (Google Chrome Edit with Emacs) to
  focus attention on the emacsclient-compatible "C-x #" binding
- integrated new ocp-indent Emacs Lisp bindings and latest updates
- changed cr-dwim to produce CR-soon/someday instead of CRvYYYYMM

bug fixes
=========
- used "file-truename" strategically on "load-path" entries so already
  running Emacsen can survive upgrades by continuing to run matching,
  start-time versions of Elisp, OMake Server, ocp-indent, etc.
- added end-of-line whitespace-removal to jane-tuareg-hook

================================================================================
2012-12-31 Rolled rev 0a2ef19b7002 to test
================================================================================

changes
=======
- defaulted tuareg-indent-comments to nil to avoid accidentally
  clobbering carefully indented comments
- omake server protocol version increment to support unset environment
  variables, whose default values are determined by the project
  OMakeroot rather than Jane Elisp
- removed post-Sandy TOT hacks.  You can switch your
  ~/.omake-server/config back from "omake_command_tot_after_sandy"
  back to omake_command.

bug fixes
=========
- highlighting of long lines in Emacs 24
- ocaml-indenter: customize-variable choice menu (easier to customize)
- friend commander password prompts

================================================================================
2012-12-03 Rolled rev 79467e4aacd1 to production
================================================================================

new stuff
=========
- stubs to remind users to switch to new jane-elisp locations [obsolete/README]

================================================================================
2012-11-21 Rolled rev 6f6fd8647473 to test
================================================================================

new stuff
=========
- Jane.Cr.dedicated-review-frame and related functions for CR ergonomics.
- Jane.disable-vc micro-feature to open files faster (experimental).
- OMakeroot error support in omake-server.

bug fixes
=========
- Fixed paths for ESS and other infrequently used third-party libraries.
- Fixed default tabification setting (broken in changes of last roll).

changes
=======
- Don't set frame-inherited-parameters, which causes problems with
  "emacs --daemon".  This may cause new frames to get the wrong font
  or colors in some situations, although it appears to work even in
  Emacs 23, the version we're currently using.
- Don't save defaults in omake-server configurations, only user
  settings.  This is mainly for forward-compatibility, to avoid saving
  old defaults which later need to be changed.  (In progress.)
- Minor ocp-indent updates to track the OCamlPro GitHub repo.

================================================================================
2012-11-13 Rolled rev e7be8efe1c9b to test
================================================================================

bug fixes
=========
- Fixed comint-password-prompt-regexp to have fewer false positives.
- Set defaults for customizable variables such that they won't be
  added to users' ~/.emacs files with their own customizations.
- Frequently check and fix permissions on /tmp/omake-server.
- smclaughlin fixed erroneous non-deletion of OMake Server lock file
  and consequent "connection refused" error in Emacs, plus a latent
  race condition in the [uname] library function affecting
  [Lock_file], in ocaml-core-external.  Also handled some signals.
- Upgraded Org in an attempt to fix a Tramp incompatibility.

changes
=======
- Made installed image under /j/office/app/emacs read-only.
- Shorter "[omake ... <makeroot>]" buffer names.

================================================================================
2012-11-05 Rolled rev 8876e892cc5c to test
================================================================================

new stuff
=========
- Included ocp-indent as ocaml/contrib/ocp-indent.
- Hacked omake-server temporarily to run fewer jobs in TOT during
  recovery from Hurricane Sandy.

================================================================================
2012-10-22 Rolled rev 28c9d3d9fb05 to test
================================================================================

changes
=======
- Color "nonrec" as a keyword in OCaml.
- Moved from /mnt/global/base/lib/elisp/{js,jane-test} to
  /j/office/app/emacs/{prod,dev}/jane-elisp.
- Incorporated most of /mnt/global/base/lib/elisp into elisp/contrib.

new stuff
=========
- Jane.emacsian-ocamlspot micro-feature, experimentally changing the
  behavior of C-c ; to jump to the definition
- Mac OS X support via external Core
- support for using multiple installations concurrently

bug fixes
=========
- Corrected version of rainbow-delimiters and added default colors for
  light backgrounds.
- In progress: Debugging OMake Server memory growth.
- In progress: Debugging erroneous non-deletion of OMake Server lock
  file and consequent "connection refused" error in Emacs.

================================================================================
2012-10-16 Rolled rev 57757d33024a to production
================================================================================

================================================================================
2012-10-03 Rolled rev 6a947d722881 to test
================================================================================

changes
=======
- Enabled debugging (-g) to make it easier to debug, for example, the
  space leak mstanojevic discovered in omake_server.exe.
- Incorporated the Jane Street CentOS 5/6 compatibility libraries.
- Build ocaml compatibly with an opam system compiler.

bug fixes
=========
- HASKELL-SITE-FILE doesn't provide the feature, so use LOAD-LIBRARY
  rather than REQUIRE, which expects the feature to be provided.

================================================================================
2012-10-03 Rolled rev 349c47add51e to production
================================================================================

new stuff
=========
- Jane.rainbow-delimiters micro-feature and rainbow-delimiters-mode

--------------------------------------------------------------------------------

new stuff
=========

- ocp-indent can be used to indent ocaml code.

    https://github.com/OCamlPro/ocp-indent

  Currently only whole-buffer indentation is supported.  To use it, set

    (setq ocaml-indenter 'ocp-indent)

  to use Tuareg's indenter, use

    (setq ocaml-indenter 'tuareg)

  This is in its infancy, but we added a few regression tests so we
  don't go backwards.

  To run regression tests do:
    ocp-indent/regressions/runtests

- omake-mode works with the new core release, ocaml-core-108.07.00

changes
=======

- We are using a new repo,

    https://bitbucket.org/seanmcl/ocaml-core-108.07.00-seanmcl

  to build omake-mode both externally and at Jane Street.  This makes
  problems we faced with installing inotify in the two places easier to handle.

bug fixes
=========

--------------------------------------------------------------------------------

new stuff
=========
- If inotify's max_user_watches is exceeded, an error message is shown.

changes
=======

- Built with a new fork of core that allows us to make changes without waiting
  for them to be accepted into the main branch
- Builds on both OSX and Linux both for home use and at Jane Street
- Removed Omake.prompt-when-setting-environment-variable-for-a-project-that-is-building

bug fixes
=========

--------------------------------------------------------------------------------

new stuff
=========

changes
=======
- Server is daemonized.  New commands are
  omake_server.exe controller (start|stop|restart|status)
  This had the undesired effect that due to a bug in lock_file.ml,
  omake-server no longer runs on OSX.  Waiting for a bug fix to use
  OSX again.
- omake_server.exe server (start|stop) have been removed
- the disk copy of emacs log messages are timestamped

bug fixes
=========

- Now a single user can't run multiple copies of the server
- toggle-env works again

--------------------------------------------------------------------------------


new stuff
=========

- Almost have an end-to-end regression test.  Each test will consist of
  a directory with
  - some ocaml code/OMakefiles
  - setup.sh to set up the server
  - setup.el to simulate the user using emacs

- Projects buffer supports 'n' and 'p' for 'next' and 'previous' project.

changes
=======

- Improved status buffer when the underlying process dies.
- Improved 'l' in project buffer to show 'No errors' when there are no errors
  (rather than just silently doing nothing.)

bug fixes
=========

- Press enter on an unwatched project buffer line opens dired
- Stop spinner on dead omake processes
- check.sh should work at JS now.  At least I fixed some path problems
  that resulted from differences between linux and osx.
- Remove 'depends on' lines from errors
- Fixed bad indentation due to omake raw output ugliness.

--------------------------------------------------------------------------------

new stuff
=========

- Automatic compilation, unit testing, and regression tests via check.sh

- Run omake_server.exe on a file (omake_server.exe server file FILE [-debug])

- When omake dies, the status buffer is no longer deleted automatically.  It
  stays with a message alerting the user of the dead omake process.

- Started Emacs-level regression testing.  Not much here yet, but it's in
  the works.

changes
=======

- moved logs around and broke them up by date to be more organized.

bug fixes
=========

- Performance improvement for big builds via computing error hashes on the
  ocaml side and caching string representation of errors on the elisp side.

- Temporarily patched a problem with the Jane.server microfeature.  The
  feature needs to be eliminated, but it will require some discussion.

--------------------------------------------------------------------------------

new stuff
=========

- Robust unit testing.  Jane.test, Jane.test-eq, Jane.test-error, Jane.run-tests.
  Example
   (Jane.test-eq List.assoc.1 (List.assoc 5 '((5 . 6) (1 . 3))) 6)
   (Jane.test-eq List.assoc.2 (List.assoc 5 '((5 6) (1 3))) '(6))
   (Jane.test-eq List.assoc.3 (List.assoc 5 '((5 6) (1 3))) '(7))

  Result
     Selector: "Omake\\|Hashtbl\\|String\\|List"
     Passed: 2 (0 unexpected)
     Failed: 1 (1 unexpected)
     Error:  0 (0 unexpected)
     Total:  3/3

     Started at:   2012-07-23 16:28:08-0400
     Finished.
     Finished at:  2012-07-23 16:28:08-0400

     ..F

     F List\.assoc\.3
         (ert-test-failed
          ((ert-should
            (equal
             (List\.assoc 5 ...)
             '...))
           :form
           (equal
            (6)
            (7))
           :value nil :explanation
           (list-elt 0
                     (different-atoms 6 7))))

  From the *ert* buffer you can jump to the errors (typing '.'), fix the code, and
  rerun the test (typing 'r').

  This will be a major part of the planned omake-mode testing framework.




changes
=======

- Omake.shutdown kills non-project buffers as well as project buffers.

bug fixes
=========
- If a unit test failed, it would stop the rest
  of the init code from running, thus making Emacs unusable.
- Fixed a bug that would fail on files in the top level directory


--------------------------------------------------------------------------------

new stuff
=========

- Omake.notify-maintainer-of-error redesign
  Now all relevant logs and buffers are saved to
  /tmp/omake-server/USER/bug-report/N
  The command asks the user for a message, which is also stored in
  the directory.  An email is sent including the user message and
  where to find the files.

- omake-mode working on OSX

- Omake.show-raw-buffer will show you the raw buffer for the last compilation
  of a project that is not compiling.  This is important when your OMakefiles
  are messed up, because in that case the omake process stops and the
  project is killed immediately.

changes
=========

- better error handling
- better handling of preprocessor errors, which now appear as omake failures
  rather than ocaml errors so you can see the context of the failure.

bug fixes
=========

- stopping server from the command line left connection objects alive

--------------------------------------------------------------------------------

new stuff
=========

- Verbose status buffer shows
  - total error count (even if only 50 are sent)
  - seconds since last update

- Unvisited error count in status buffer shows unsent error count

- Better documentation for omake-mode (still incomplete) and
  other js-elisp stuff.

- Detects 'waiting for project lock'

- Config file remembers if you've been warned about environment variable
  changes and doesn't warn you again.

changes
=========

- Omake.watch autocompletion improvements
- Improved next-error to always connect to the server.

bug fixes
=========

- omake errors were not always showing the error text

--------------------------------------------------------------------------------

new stuff
=========

- Support for missing package errors, eg

  *** omake: targets were not rebuilt because of errors:
     lib/bug.cmx
        depends on: lib/bug.ml
        depends on: lib/bug.mli
        - build lib bug.cmx
        + ocamlfind ocamlopt -thread -w @a-4-7-9-29-28 -pp 'camlp4o /usr/local/lib/ocaml/site-lib/type-conv/pa_type_conv.cma /usr/local/lib/ocaml/site-lib/sexplib/pa_sexp_conv.cma /usr/local/lib/ocaml/site-lib/fieldslib/pa_fields_conv.cma /usr/local/lib/ocaml/site-lib/pa_pipebang/pa_pipebang.cma' -strict-sequence -annot -inline 20 -nodynlink -g -package core -package core_extended -package async -package pcre -c bug.mli
        ocamlfind: Package `core_extended' not found
        - exit lib bug.cmx, 0.10 sec, code 2

- An almost working patch of ocaml-core on linux with ocaml 4.0.  The part
  that doesn't work is an issue with the core build script, not with the
  ocaml code.  There is a workaround for building.

- Pressing RET on a projects buffer line opens a dired buffer of that project.

- Nice error message when you try to compile a project via tramp.

changes
=========

- Omake.start-project (C-cC-c) redesigned to be agnostic to the watched status
  of a project.

- Version bump to 13 (mmmmm, bad luck?)

- New error handling framework.  For example, when you try to start omake in a
  tramp buffer, show a message in the minibuffer and abort the current stack
  but don't raise an exn.  Users shouldn't notices this.

- Killed off some trivial issues.

- The server no longer ignores sigterm.

bug fixes
=========

- Config files now save the fields the ocaml code doesn't know about, and
  ensures all the required fields are present.  This allows forward and
  backward compatibility between versions.

- Omake server checks to be sure the permissions on /tmp/omake-server are
  OK before starting.

- Broken pipe error possibly fixed.  I couldn't reproduce it due to
  hardware issues, so please check this.  To check, start a project
  that takes a long time to build.  Then kill the emacs that started
  the compilation.  The server should not write errror messages to the
  log about a broken pipe.

--------------------------------------------------------------------------------

new stuff
=========

- A new bare info page (jane-emacs) for non-omake-mode Emacs stuff.
- New environment variable FOUR_POINT_ZERO
- Working on an automated test infrastructure.

changes
=========

- Support new error-enabled warnings format in ocaml 4.0
- Verbose mode shows the settings of the environment variables
  on the next compilation as well as the current one.
- Changed variable
  Omake.create-dedicated-frame --> Omake.create-dedicated-status-frame
- In project buffer, 'w' now toggles between watched and unwatched.
  'u' was removed.

bug fixes
=========

- Eliminated nohup.out files
- toggle-env/set-env prompts are the same now

--------------------------------------------------------------------------------

new stuff
=========

- (for sweeks) added file omake_server.new.ml to show the new (working) multi-emacs
  server

changes
=========

- renamed elisp-for-ocaml-programmers to jane-lib

bug fixes
=========

- code and error frames are raised

- fixed a small window-selection bug when a dedicated frame was set but
  the code was showing in another frame, and the point was in that frame

--------------------------------------------------------------------------------

changes
=========

- There is a big change regarding window behavior.

  The following variables were removed
     Omake.show-buffer-for-next-error-in
     Omake.set-standard-windows
     Omake.use-display-buffer

  They were replaced by
     Omake.split-frame-horizontally
     Omake.show-error-buffer-in-top-or-left-window

  See the info documentation for the new behavior.  This change was done
  as a uniform method for supporting the various different ways of using
  dedicated windows vs. automatic window selection.

  Non-experts should not have to do anything (though they might want to
  remove the variables that are no longer used from their .emacs.)

new stuff
=========

- Omake.set-dedicated-{code,error}-frame
- Omake.clear-dedicated-windows

--------------------------------------------------------------------------------

new stuff
=========
- new handling of whitespace.
   * highlighting whitespace only happens in certain modes (c-mode, tuareg-mode)
   * characters beyond column 90 are highlighted
   * trailing whitespace is not highlighted by default, but can be configured by
     setting jane-highlight-whitespace-style.
   * trailing whitespace is cleaned up on file save, only in certain modes
      (c-mode tuareg-mode)

bug fixes
=========

changes
=======

- Made elisp-for-ocaml-programmers use lexical scope for higher-order functions
  using the macros `defunl', `letl', `letl*'.  These should be used whenever
  you are defining a higher-order function (instead of `defun', `let', `let*')

------------------------------------------------------------------------------------------

new stuff
=========

- added config variable Omake.use-display-buffer, which uses emacs's built-in
  display-buffer for showing code and error buffers, rather than code and error
  windows (and complicated code to figure out what those windows are).

new stuff
=========

- new configuration variable, Omake.prompt-before-killing-project, which is true by
  default, but if set to false (i.e. nil), then omake-mode won't prompt when you run
  Omake.kill-project or when you kill the [Errors] buffer.

- Added three file-finding functions:

    | C-c f p | Jane.find-file-in-repo       |
    | C-c f r | Jane.find-file-in-project    |
    | C-c f l | Jane.find-library-in-project |

  The first two of these functions allow one to find a file by its name first, and path
  second.  The range of available files is either the containing hg repo (for
  Jane.find-file-in-repo) or the containing OMake project (for Jane.find-file-in-project).
  The third function is similar, except rather than finding a particular file name, one
  finds the directory containing an OCaml library name, as defined by the
  OCamlMakeLibPackage declaration in that directory's OMakefile.

  All three functions prompt in the minibuffer and support completion, so that one can
  start entering a file name or library name, and tab-complete to see the possibilities.

  The first time any of the functions is run in a repo (or project), it builds an index,
  which may take some time (up to a few seconds for a clone of jane on a local disk).
  Subsequent calls to the function in the same repo (or project) will reuse the index,
  and will run instantly.

- Added Omake.shutdown-and-remove-hooks.  This is an emergency command to use
  when omake-mode goes horribly wrong, and you can't kill a buffer, or even
  Emacs itself.  If you need to use this command, there's a bug.  Please
  report it.  Thanks!

- C-c g runs Omake.toggle-env.  This is a faster way to toggle the values
  of environment variables.

- Added an (incomplete) texinfo file, the beginning of decent documentation
  for omake-server.

- Added `Emacs.protect-from-quit' that will create a critical section
  that can not be interrupted by `keyboard-quit'

bug fixes
=========

- Discovered the `inhibit-quit' variable which allows me to protect
  critical sections from C-g, which was helping omake-mode get into
  broken states.

- #63, #50: Reduce needless prompts.

- Bug tracker cleanup

^^^ in progress ^^^

vvv old stuff vvv

new stuff
=========

- added edit-server.el, for edit-with-emacs so we can modify it as we need
- toggle-full-screen, does what it says on the tin
- cr-grep, supports new cr and (I think) most use cases
- More complete error messages in the error buffer when there's an omake error

bug fixes
=========

- Fixed another permissions bug with /tmp/omake-server.  It still wasn't being
  created with the right permissions.  It now is.

- Fixed a bug where the current error would leap into the unvisited section. (#77)
  Th e problem was that I was using the generic sxhash on errors, and a boolean
  inside the error telling whether the error was expanded or not was thus
  considered in the equality test.

- Fixed a bug where killing emacs was difficult (#72)
  The problem was whenever I would send a message from emacs to the server, I'd
  ensure the server was running.  In this case I sent the "kill" message to
  a dead server, which had the effect of attempting to restart the server.
  But it couldn't restart because the other one was running.  Sending messages
  to a dead server now do nothing except log to [omake-mode-log]

changes
=======

- new micro-feature, Jane.omake-js, for enabling the new omake-mode.  This is enabled by
  default in js-common, so everyone gets it.  There is another micro-feature,
  Jane.omake-old, for the old compile behavior.
- Jane.multiframe no longer binds C-o and has smarter frame killing

bug fixes
=========

- big performance improvement
  In a large build with dozens of errors, omake-mode was using a quadratic comparison
  to update the error buffer.  This could peg the cpu doing error comparisons.  I fixed
  this by hashing the errors in each error-ring, thus making the comparisons almost
  linear, and by limiting the number of errors sent by omake-server to 50.
  A smaller improvement was achieved by cacheing system calls to readlink that were
  occurrring tens of thousands of times for the same argument.

- "No files processeed yet"
  If you were almost finished with a build and omake finished without emiting
  "targets up-to-date...", omake-mode would display
  "progress: no files processed yet, status: Success".  This is fixed by grabbing
  the status bar if there is one.  If you build the project in an already
  completed directory, it still shows the message, as there is no way to tell
  how many targets there really were.

bugs examined but not addressed
===============================

- flickering of C-x in minibuffer
  This is an emacs bug that I reproduced with a very simple program using a process
  output filter function.  I submitted an emacs bug report.

- #65: omake-server mistakenly thought emacs was dead
  I can't reproduce this, though it happened to both Stephen and Charles.
  The code is dead simple, and I'm not sure how I could have messed it up.
  omake-server calls 'kill -0 EMACS-PID' to make sure the emacs that started
  the server is alive.  If that process returns non-zero, it kills the server.
  I've asked Stephen to look at the relevant section of the code.

  2012-03-28 sweeks: I changed how we send the signal, to see if that changes behavior or
  gives more info when the badness happens.

changes
=======
- deleted the deprecated js-compile
- deprecated Jane.whitespace-fancy and Jane.whitespace-simple.  There remains only
  Jane.whitespace.
- added Jane.prefer-other-visible-frame
- added Jane.pages for more obvious ^L
- for OCaml code, made underscore configurable as a word boundary,
  with Js.underscore-is-{word,punctuation}.
- Omake mode
  * now configurable whether to use dark or light faces, via Omake.use-{dark,light}-faces.
  * no longer shows Error-enabled warnings.
  * now sorts errors by line number within a file.
  * [Errors] buffer now includes the path to the compilation dir.
  * [Raw] buffer is now read-only.
  * now has a configuration parameter to get the old window setup. Add to your .emacs:

    (setq Omake.set-standard-windows t)

    ---------------------------------------
    |                  |                  |
    |                  |                  |
    |                  |                  |
    |      CODE        |     ERRORS       |
    |                  |                  |
    |                  |                  |
    |                  |                  |
    ---------------------------------------

bug fixes
=========
- fixed Jane.desktop
- cr-todo wasn't working with next-error
- #34 [Errors] buffers appears to be spinning, but omake is stopped
- #44 /tmp/omake-server has bad permissions
  omake now makes /tmp/omake-server with permissions 775
- #56 emacsclient can kill connection between emacs and omake_server
  There was a situation where an emacs daemon killed the server process.
  Fixed by handling sigterm in the server.

elisp changes
=============
- created elisp-for-ocaml-programmers.el, which has all of the ocaml-style utility
  functions
- switching from using ;;---------- lines to ^L to indicate pages
- revived js-examples.el
- re-alphabetized micro-features

================================================================================
2012-02-19 Rolled rev 0bf96ab189ff to production
================================================================================

changes
=======
- allowed Omake.setenv to run in a project that is building

--------------------------------------------------------------------------------

features
========

changes
=======

- Omake.errors-follow-point {t,nil} --->
  Omake.show-buffer-for-next-error-in {'dedicated-code-window, 'selected-window}
- changed tmp directory
  /tmp/omake-server/seanmcl/-home-seanmcl-ocaml/elisp --->
  /tmp/omake-server/seanmcl/home/seanmcl/ocaml/elisp
- Added version numbers in mismatch message

bug fixes
=========

- server catches and logs all exceptions.  This is good in itself, and in
  addition prevents a bug where text on stderr was eval'ed by emacs.
- you can now restart projects in different directories without getting
  the dead-process error.

--------------------------------------------------------------------------------

features
========
- added a configuration variable, [Omake.errors-follow-cursor], that controls whether
  C-c C-l displays the buffer of the next error in the dedicated code window or
  in the current window.  By default the dedicated code window is use.  To use the
  current window, do

    (setq Omake.errors-follow-cursor t)
- killing [Errors] buffer kills the project
- killing the project kills all the auxiliary buffers like [Raw] and [Elisp]
- Added permanent per-project persistent (across restarts of emacs) settings for
  the variables that govern omake (LINK_EXECUTABLES, X_LIBRARY_INLINING, etc)

changes
=======
- changed Omake.kill-server to Omake.shutdown

bug fixes
=========
- fixed bug where if omake died early, the progress bar kept spinning.
- fixed the [omake-mode-log] "read-only" bug
- fixed a bug where omake inserted \r rather than \n which
  made lines run together.  This made me miss anything that happened
  after the first \r
- fixed a bug that ignored directory names with . in them (such as
  eye/2.0/foo

;; Local Variables:
;; left-margin: 0
;; change-log-indent-text: 2
;; End:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.