js-elisp / CHANGELOG

Full commit


- There is a big change regarding window behavior.

  The following variables were removed

  They were replaced by

  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


- 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]


- 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.

- deleted the deprecated js-compile
- deprecated Jane.whitespace-fancy and Jane.whitespace-simple.  There remains only
- 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
- 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

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




- Omake.errors-follow-point {t,nil} ---> {'dedicated-code-window, 'selected-window}
- changed tmp directory
  /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.


- 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)

- 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