X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/b78265036088d5d0eac2a03b929adb50aa59b45c..750fc6732fa42527ceb2f0962856ed4bae656714:/src/category.c diff --git a/src/category.c b/src/category.c index f99a300f7b..4846ae8f7f 100644 --- a/src/category.c +++ b/src/category.c @@ -69,12 +69,12 @@ those categories. */) if (STRING_MULTIBYTE (categories)) error ("Multibyte string in make-category-set"); - len = XSTRING (categories)->size; + len = SCHARS (categories); while (--len >= 0) { Lisp_Object category; - XSETFASTINT (category, XSTRING (categories)->data[len]); + XSETFASTINT (category, SREF (categories, len)); CHECK_CATEGORY (category); SET_CATEGORY_SET (val, category, Qt); } @@ -119,10 +119,11 @@ DEFUN ("category-docstring", Fcategory_docstring, Scategory_docstring, 1, 2, 0, DEFUN ("get-unused-category", Fget_unused_category, Sget_unused_category, 0, 1, 0, - doc: /* Return a category which is not yet defined in CATEGORY-TABLE. If no -category remains available, return nil. The optional argument CATEGORY-TABLE -specifies which category table to modify; it defaults to the current -buffer's category table. */) + doc: /* Return a category which is not yet defined in CATEGORY-TABLE. +If no category remains available, return nil. +The optional argument CATEGORY-TABLE +specifies which category table to modify; +it defaults to the current buffer's category table. */) (table) Lisp_Object table; { @@ -166,7 +167,7 @@ check_category_table (table) while (tem = Fcategory_table_p (table), NILP (tem)) table = wrong_type_argument (Qcategory_table_p, table); return table; -} +} DEFUN ("category-table", Fcategory_table, Scategory_table, 0, 0, 0, doc: /* Return the current category table. @@ -376,7 +377,7 @@ then delete CATEGORY from the category set instead of adding it. */) if (NILP (CATEGORY_DOCSTRING (table, XFASTINT (category)))) error ("Undefined category: %c", XFASTINT (category)); - + set_value = NILP (reset) ? Qt : Qnil; if (c < CHAR_TABLE_SINGLE_BYTE_SLOTS) @@ -470,99 +471,6 @@ then delete CATEGORY from the category set instead of adding it. */) return Qnil; } -/* Dump category table to buffer in human-readable format */ - -static void -describe_category (value) - Lisp_Object value; -{ - Lisp_Object mnemonics; - - Findent_to (make_number (16), make_number (1)); - - if (NILP (value)) - { - insert_string ("default\n"); - return; - } - - if (CHAR_TABLE_P (value)) - { - insert_string ("deeper char-table ...\n"); - return; - } - - if (!CATEGORY_SET_P (value)) - { - insert_string ("invalid\n"); - return; - } - - mnemonics = Fcategory_set_mnemonics (value); - insert_from_string (mnemonics, 0, 0, XSTRING (mnemonics)->size, - STRING_BYTES (XSTRING (mnemonics)), 0); - insert_string ("\n"); - return; -} - -static Lisp_Object -describe_category_1 (vector) - Lisp_Object vector; -{ - struct buffer *old = current_buffer; - set_buffer_internal (XBUFFER (Vstandard_output)); - describe_vector (vector, Qnil, describe_category, 0, Qnil, Qnil, - (int *)0, 0); - { - int i; - Lisp_Object docs = XCHAR_TABLE (vector)->extras[0]; - Lisp_Object elt; - - if (!VECTORP (docs) || XVECTOR (docs)->size != 95) - { - insert_string ("Invalid first extra slot in this char table\n"); - return Qnil; - } - - insert_string ("Meanings of mnemonice characters are:\n"); - for (i = 0; i < 95; i++) - { - elt = XVECTOR (docs)->contents[i]; - if (NILP (elt)) - continue; - - insert_char (i + 32); - insert (": ", 2); - insert_from_string (elt, 0, 0, XSTRING (elt)->size, - STRING_BYTES (XSTRING (elt)), 0); - insert ("\n", 1); - } - } - - while (! NILP (XCHAR_TABLE (vector)->parent)) - { - vector = XCHAR_TABLE (vector)->parent; - insert_string ("\nThe parent category table is:"); - describe_vector (vector, Qnil, describe_category, 0, Qnil, Qnil, - (int *) 0, 0); - } - - call0 (intern ("help-mode")); - set_buffer_internal (old); - return Qnil; -} - -DEFUN ("describe-categories", Fdescribe_categories, Sdescribe_categories, 0, 0, "", - doc: /* Describe the category specifications in the current category table. -The descriptions are inserted in a buffer, which is then displayed. */) - () -{ - internal_with_output_to_temp_buffer - ("*Help*", describe_category_1, current_buffer->category_table); - - return Qnil; -} - /* Return 1 if there is a word boundary between two word-constituent characters C1 and C2 if they appear in this order, else return 0. Use the macro WORD_BOUNDARY_P instead of calling this function @@ -626,7 +534,7 @@ init_category_once () Fput (Qcategory_table, Qchar_table_extra_slots, make_number (2)); Vstandard_category_table = Fmake_char_table (Qcategory_table, Qnil); - /* Set a category set which contains nothing to the default. */ + /* Set a category set which contains nothing to the default. */ XCHAR_TABLE (Vstandard_category_table)->defalt = MAKE_CATEGORY_SET; Fset_char_table_extra_slot (Vstandard_category_table, make_number (0), Fmake_vector (make_number (95), Qnil)); @@ -698,7 +606,6 @@ See the documentation of the variable `word-combining-categories'. */); defsubr (&Schar_category_set); defsubr (&Scategory_set_mnemonics); defsubr (&Smodify_category_entry); - defsubr (&Sdescribe_categories); category_table_version = 0; }