view src/atimer.h @ 85769:de8ef384c3ef

* allout.el (allout-command-prefix, allout-inhibit-auto-fill): Relocate in file. (allout-doublecheck-at-and-shallower): Increase to include slightly greater depths, since yank interaction is now ok. Also, elaborate the docstring to explain the situation. (produce-allout-mode-map, allout-hotspot-key-handler): Use vconcat instead of concat, so we accommodate key sequences expressed as vectors as well as strings and lists. (allout-flag-region, allout-hide-by-annotation): Make the hidden-text overlays 'front-advance. (allout-overlay-insert-in-front-handler): Correct docstring's grammar. (allout-aberrant-container-p, allout-on-current-heading-p) (allout-e-o-prefix-p, allout-next-heading) (allout-previous-heading, allout-goto-prefix) (allout-end-of-prefix, allout-next-sibling-leap) (allout-next-visible-heading, allout-auto-fill) (allout-rebullet-heading, allout-kill-line, allout-kill-topic) (allout-yank-processing, allout-resolve-xref) (allout-current-topic-collapsed-p, allout-hide-region-body) (allout-latex-verbatim-quote-curr-line, allout-encrypt-string) (allout-encrypted-topic-p, allout-next-topic-pending-encryption) (count-trailing-whitespace-region): Preserve match data, so allout outline navigation doesn't disrupt other emacs operations. (allout-beginning-of-line): Retreat to the beginning of the hidden text, so fields are respected (for submodes that care). (allout-end-of-line): Preserve mark activation status when jumping. (allout-open-topic): Account for opening after a child that contains a hidden trailing newline. Preserve match data. Run allout-structure-added-hook (allout-encrypt-decrypted): Preserve match data. (allout-toggle-current-subtree-exposure): Add new interactive function for toggle subtree exposure - suggested by tassilo. (move-beginning-of-line, move-end-of-line): Don't use line-move-invisible-p, it's obsolete - substitute the code, instead.
author Dan Nicolaescu <dann@ics.uci.edu>
date Mon, 29 Oct 2007 23:10:09 +0000
parents 922696f363b0
children fc2bcd2a8aad f55f9811f5d7
line wrap: on
line source

/* Asynchronous timers.
   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
                 2006, 2007  Free Software Foundation, Inc.

This file is part of GNU Emacs.

GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING.  If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.  */

#ifndef EMACS_ATIMER_H
#define EMACS_ATIMER_H

/* Declare the prototype for a general external function.  */
#if defined (PROTOTYPES) || defined (WINDOWSNT)
#define P_(proto) proto
#else
#define P_(proto) ()
#endif

#include "systime.h"		/* for EMACS_TIME */

/* Forward declaration.  */

struct atimer;

/* Types of timers.  */

enum atimer_type
{
  /* Timer is ripe at some absolute time.  */
  ATIMER_ABSOLUTE,

  /* Timer is ripe at now plus an offset.  */
  ATIMER_RELATIVE,

  /* Timer runs continously.  */
  ATIMER_CONTINUOUS
};

/* Type of timer callback functions.  */

typedef void (* atimer_callback) P_ ((struct atimer *timer));

/* Structure describing an asynchronous timer.  */

struct atimer
{
  /* The type of this timer.  */
  enum atimer_type type;

  /* Time when this timer is ripe.  */
  EMACS_TIME expiration;

  /* Interval of this timer.  */
  EMACS_TIME interval;

  /* Function to call when timer is ripe.  Interrupt input is
     guaranteed to not be blocked when this function is called.  */
  atimer_callback fn;

  /* Additional user-specified data to pass to FN.  */
  void *client_data;

  /* Next in list of active or free atimers.  */
  struct atimer *next;
};

/* Function prototypes.  */

struct atimer *start_atimer P_ ((enum atimer_type, EMACS_TIME,
				 atimer_callback, void *));
void cancel_atimer P_ ((struct atimer *));
void do_pending_atimers P_ ((void));
void init_atimer P_ ((void));
void turn_on_atimers P_ ((int));
void stop_other_atimers P_ ((struct atimer *));
void run_all_atimers P_ ((void));
Lisp_Object unwind_stop_other_atimers P_ ((Lisp_Object));

#endif /* EMACS_ATIMER_H */

/* arch-tag: 02c7c1c8-45bd-4222-b874-4ca44662f60b
   (do not change this comment) */