Mercurial > emacs
changeset 16639:b6ba5d371c1c
(Fline_beginning_position, Fline_end_position): New fns.
(Fuser_full_name): Accept an optional UID and return
the full name of that user instead.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 08 Dec 1996 08:18:52 +0000 |
parents | ee85ec2c4203 |
children | 48c81df37765 |
files | src/editfns.c |
diffstat | 1 files changed, 59 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/editfns.c Sun Dec 08 07:37:55 1996 +0000 +++ b/src/editfns.c Sun Dec 08 08:18:52 1996 +0000 @@ -252,7 +252,49 @@ { return current_buffer->mark; } + +DEFUN ("line-beginning-position", Fline_beginning_position, Sline_beginning_position, + 0, 1, 0, + "Return the character position of the first character on the current line.\n\ +With argument N not nil or 1, move forward N - 1 lines first.\n\ +If scan reaches end of buffer, return that position.\n\ +This function does not move point.") + (n) + Lisp_Object n; +{ + register int orig, end; + if (NILP (n)) + XSETFASTINT (n, 1); + else + CHECK_NUMBER (n, 0); + + orig = PT; + Fforward_line (make_number (XINT (n) - 1)); + end = PT; + SET_PT (orig); + + return make_number (end); +} + +DEFUN ("line-end-position", Fline_end_position, Sline_end_position, + 0, 1, 0, + "Return the character position of the last character on the current line.\n\ +With argument N not nil or 1, move forward N - 1 lines first.\n\ +If scan reaches end of buffer, return that position.\n\ +This function does not move point.") + (n) + Lisp_Object n; +{ + if (NILP (n)) + XSETFASTINT (n, 1); + else + CHECK_NUMBER (n, 0); + + return make_number (find_before_next_newline + (PT, 0, XINT (n) - (XINT (n) <= 0))); +} + Lisp_Object save_excursion_save () { @@ -541,11 +583,21 @@ return make_number (getuid ()); } -DEFUN ("user-full-name", Fuser_full_name, Suser_full_name, 0, 0, 0, - "Return the full name of the user logged in, as a string.") - () +DEFUN ("user-full-name", Fuser_full_name, Suser_full_name, 0, 1, 0, + "Return the full name of the user logged in, as a string.\n\ +If optional argument UID is an integer, return the full name of the user\n\ +with that uid, or nil if there is no such user.") + (uid) + Lisp_Object uid; { - return Vuser_full_name; + struct passwd *pw; + + if (NILP (uid)) + return Vuser_full_name; + + CHECK_NUMBER (uid, 0); + pw = (struct passwd *) getpwuid (XINT (uid)); + return (pw ? build_string (pw->pw_gecos) : Qnil); } DEFUN ("system-name", Fsystem_name, Ssystem_name, 0, 0, 0, @@ -2537,6 +2589,9 @@ defsubr (&Spoint_min_marker); defsubr (&Spoint_max_marker); + defsubr (&Sline_beginning_position); + defsubr (&Sline_end_position); + defsubr (&Sbobp); defsubr (&Seobp); defsubr (&Sbolp);