]> granicus.if.org Git - nethack/commitdiff
symbol set reorganization
authorPatR <rankin@nethack.org>
Thu, 17 Oct 2019 12:00:58 +0000 (05:00 -0700)
committerPatR <rankin@nethack.org>
Thu, 17 Oct 2019 12:00:58 +0000 (05:00 -0700)
Change the way symbol sets are loaded to make them have the same order
as they appear in the symbols file rather than being reversed.

Revise dat/symbols so that the new ordering yields a result similar
to the old ordering, more or less.  I've added a few set descriptions.
The only substantive change is marking DECgraphics as primary-only
(not available on rogue level) and adding new set DECgraphics_2 which
is commented out near the end.

Define symbol handling H_MAC since one of the sets specifies
'handling: MAC'.  All H_MAC is used for now is to avoid showing
MACgraphics as a symset when compiled without MAC_GRAPHICS_ENV (which
was used for pre-OSX Mac by the old code in sys/mac/), so it will be
hidden for everyone.

I left handling H_CURS even though curses doesn't implement anything
for it.  It could do something when rendering the map or assign a
function to 'cursesgraphics_mode_callback' for special init or both
but hasn't needed to.  Since curses is now supporting DECgraphics,
define 'decgraphics_mode_callback' for it.  No value is being
assigned so that doesn't do anything; curses seems to be setting up
the primary character set as text and secondary one as line-drawing
without the need for that hook.

With the added set descriptions, 'O's symset menu looked horrible for
curses due to the way curses decides to set the width of menus and
the resulting line wrapping which took place because of a too-narrow
menu.  I've added a chunk of code to the options handling code which
shouldn't really be there but makes the menu much easier to read.

Lastly, do some formatting cleanup in files.c.

dat/symbols
doc/fixes36.3
include/rm.h
src/drawing.c
src/files.c
src/options.c

index 364c6db219de65011f472dfa0ec042157f391598..8e8a6349f0ebd7646c8d6f3619b1ad48272e6175 100644 (file)
@@ -1,4 +1,4 @@
-# NetHack 3.6  symbols       $NHDT-Date: 1570919632 2019/10/12 22:33:52 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.17 $
+# NetHack 3.6  symbols       $NHDT-Date: 1571313649 2019/10/17 12:00:49 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.19 $
 # Copyright (c) 2006 by Michael Allison
 # NetHack may be freely redistributed.  See license for details.
 #
 # of ordinary printable characters in the lowercase letter range.
 # NetHack encodes the request to use the alternate font here by
 # having the high bit set (in hexadecimal, \x80 is combined with
-# a character code between \x60 and \x7f).
+# a character code between \x5f and \x7e) (not 0x60 to 0x7f as was
+# previously claimed).
 #
 # curses is an approximation of IBMgraphics which relies on DEC
-# mode of operation, with a few characters missing. It is based
-# on an old graphics mode for the Curses mode and is the default
-# on that windowport if no symset is specified.
+# mode of operation, with a few characters missing.  It is based
+# on an old graphics mode for the Curses interface and is the default
+# on that windowport if no symset is specified.  The Curses interface
+# can also use DECgraphics as-is; IBMgraphics probably won't work.
 
-start: DECgraphics
-       Handling: DEC
-       S_vwall: \xf8                   # meta-x, vertical rule
-       S_hwall: \xf1                   # meta-q, horizontal rule
-       S_tlcorn: \xec                  # meta-l, top left corner
-       S_trcorn: \xeb                  # meta-k, top right corner
-       S_blcorn: \xed                  # meta-m, bottom left
-       S_brcorn: \xea                  # meta-j, bottom right
-       S_crwall: \xee                  # meta-n, cross
-       S_tuwall: \xf6                  # meta-v, T up
-       S_tdwall: \xf7                  # meta-w, T down
-       S_tlwall: \xf5                  # meta-u, T left
-       S_trwall: \xf4                  # meta-t, T right
-       S_ndoor: \xfe                   # meta-~, centered dot
-       S_vodoor: \xe1                  # meta-a, solid block
-       S_hodoor: \xe1                  # meta-a, solid block
-       S_bars: \xfb                    # meta-{, small pi
-       S_tree: \xe7                    # meta-g, plus-or-minus
-       S_room: \xfe                    # meta-~, centered dot
-       S_upladder: \xf9                # meta-y, less-than-or-equals
-       S_dnladder: \xfa                # meta-z, greater-than-or-equals
-       S_pool: \xe0                    # meta-\, diamond
-       S_ice: \xfe                     # meta-~, centered dot
-       S_lava: \xe0                    # meta-\, diamond
-       S_vodbridge: \xfe               # meta-~, centered dot
-       S_hodbridge: \xfe               # meta-~, centered dot
-       S_water: \xe0                   # meta-\, diamond
-       S_vbeam: \xf8                   # meta-x, vertical rule
-       S_hbeam: \xf1                   # meta-q, horizontal rule
-       S_sw_tc: \xef                   # meta-o, high horizontal line
-       S_sw_ml: \xf8                   # meta-x, vertical rule
-       S_sw_mr: \xf8                   # meta-x, vertical rule
-       S_sw_bc: \xf3                   # meta-s, low horizontal line
-       S_explode2: \xef                # meta-o, high horizontal line
-       S_explode4: \xf8                # meta-x, vertical rule
-       S_explode6: \xf8                # meta-x, vertical rule
-       S_explode8: \xf3                # meta-s, low horizontal line
-finish
-
-start: curses
-       Handling: DEC
-       S_vwall: \xf8                   # meta-x, vertical rule
-       S_hwall: \xf1                   # meta-q, horizontal rule
-       S_tlcorn: \xec                  # meta-l, top left corner
-       S_trcorn: \xeb                  # meta-k, top right corner
-       S_blcorn: \xed                  # meta-m, bottom left
-       S_brcorn: \xea                  # meta-j, bottom right
-       S_crwall: \xee                  # meta-n, cross
-       S_tuwall: \xf6                  # meta-v, T up
-       S_tdwall: \xf7                  # meta-w, T down
-       S_tlwall: \xf5                  # meta-u, T left
-       S_trwall: \xf4                  # meta-t, T right
-       S_ndoor: \xfe                   # meta-z, centered dot
-       S_tree: \xf1                    # plus or minus symbol
-       S_room: \xfe                    # meta-z, centered dot
-       S_corr: \xe1                    # meta-a, solid block
-       S_litcorr: \xe1                 # meta-a, solid block
-       S_ice: \xfe                     # meta-z, centered dot
-       S_vodbridge: \xfe               # meta-z, centered dot
-       S_hodbridge: \xfe               # meta-z, centered dot
-       S_vbeam: \xf8                   # meta-3, vertical rule
-       S_hbeam: \xf1                   # meta-D, horizontal rule
-       S_sw_ml: \xf8                   # meta-3, vertical rule
-       S_sw_mr: \xf8                   # meta-3, vertical rule
-       S_explode4: \xf8                # meta-3, vertical rule
-       S_explode6: \xf8                # meta-3, vertical rule
-finish
-
-start: IBMgraphics
-       Handling: IBM
-       S_vwall: \xb3                   # meta-3, vertical rule
-       S_hwall: \xc4                   # meta-D, horizontal rule
-       S_tlcorn: \xda                  # meta-Z, top left corner
-       S_trcorn: \xbf                  # meta-?, top right corner
-       S_blcorn: \xc0                  # meta-@, bottom left
-       S_brcorn: \xd9                  # meta-Y, bottom right
-       S_crwall: \xc5                  # meta-E, cross
-       S_tuwall: \xc1                  # meta-A, T up
-       S_tdwall: \xc2                  # meta-B, T down
-       S_tlwall: \xb4                  # meta-4, T left
-       S_trwall: \xc3                  # meta-C, T right
-       S_ndoor: \xfa                   # meta-z, centered dot
-       S_vodoor: \xfe                  # meta-~, small centered square
-       S_hodoor: \xfe                  # meta-~, small centered square
-       S_bars: \xf0                    # equivalence symbol
-       S_tree: \xf1                    # plus or minus symbol
-       S_room: \xfa                    # meta-z, centered dot
-       S_corr: \xb0                    # meta-0, light shading
-       S_litcorr: \xb1                 # meta-1, medium shading
-       S_fountain: \xf4                # meta-t, integral top half
-       S_pool: \xf7                    # meta-w, approx. equals
-       S_ice: \xfa                     # meta-z, centered dot
-       S_lava: \xf7                    # meta-w, approx. equals
-       S_vodbridge: \xfa               # meta-z, centered dot
-       S_hodbridge: \xfa               # meta-z, centered dot
-       S_water: \xf7                   # meta-w, approx. equals
-       S_vbeam: \xb3                   # meta-3, vertical rule
-       S_hbeam: \xc4                   # meta-D, horizontal rule
-       S_sw_ml: \xb3                   # meta-3, vertical rule
-       S_sw_mr: \xb3                   # meta-3, vertical rule
-       S_explode4: \xb3                # meta-3, vertical rule
-       S_explode6: \xb3                # meta-3, vertical rule
-finish
-
-start: IBMGraphics_1
-       Handling: IBM
-       S_vwall: \xb3                   # meta-3, vertical rule
-       S_hwall: \xc4                   # meta-D, horizontal rule
-       S_tlcorn: \xda                  # meta-Z, top left corner
-       S_trcorn: \xbf                  # meta-?, top right corner
-       S_blcorn: \xc0                  # meta-@, bottom left
-       S_brcorn: \xd9                  # meta-Y, bottom right
-       S_crwall: \xc5                  # meta-E, cross
-       S_tuwall: \xc1                  # meta-A, T up
-       S_tdwall: \xc2                  # meta-B, T down
-       S_tlwall: \xb4                  # meta-4, T left
-       S_trwall: \xc3                  # meta-C, T right
-       S_vbeam: \xb3                   # meta-3, vertical rule
-       S_hbeam: \xc4                   # meta-D, horizontal rule
-       S_sw_ml: \xb3                   # meta-3, vertical rule
-       S_sw_mr: \xb3                   # meta-3, vertical rule
-       S_explode4: \xb3                # meta-3, vertical rule
-       S_explode6: \xb3                # meta-3, vertical rule
-finish
-
-start: IBMGraphics_2
-       Handling: IBM
-       S_vwall: \xb3                   # meta-3, vertical rule
-       S_hwall: \xc4                   # meta-D, horizontal rule
-       S_tlcorn: \xda                  # meta-Z, top left corner
-       S_trcorn: \xbf                  # meta-?, top right corner
-       S_blcorn: \xc0                  # meta-@, bottom left
-       S_brcorn: \xd9                  # meta-Y, bottom right
-       S_crwall: \xc5                  # meta-E, cross
-       S_tuwall: \xc1                  # meta-A, T up
-       S_tdwall: \xc2                  # meta-B, T down
-       S_tlwall: \xb4                  # meta-4, T left
-       S_trwall: \xc3                  # meta-C, T right
-       S_vodoor: \xfe                  # meta-~, small centered square
-       S_hodoor: \xfe                  # meta-~, small centered square
-       S_corr: \xb0                    # meta-0, light shading
-       S_litcorr: \xb1                 # meta-1, medium shading
-       S_vbeam: \xb3                   # meta-3, vertical rule
-       S_hbeam: \xc4                   # meta-D, horizontal rule
-       S_sw_ml: \xb3                   # meta-3, vertical rule
-       S_sw_mr: \xb3                   # meta-3, vertical rule
-       S_explode4: \xb3                # meta-3, vertical rule
-       S_explode6: \xb3                # meta-3, vertical rule
-finish
-
-start: MACgraphics
-       Handling: MAC
-       S_vwall: \xba
-       S_hwall: \xcd
-       S_tlcorn: \xc9
-       S_trcorn: \xbb
-       S_blcorn: \xc8
-       S_brcorn: \xbc
-       S_crwall: \xce
-       S_tuwall: \xca
-       S_tdwall: \xcb
-       S_tlwall: \xb9
-       S_trwall: \xcc
-       S_ndoor: \xb0
-       S_vodoor: \xee
-       S_hodoor: \xee
-       S_vcdoor: \xef
-       S_hcdoor: \xef
-       S_bars: \xf0                    # equivalency symbol
-       S_tree: \xf1                    # plus-or-minus
-       S_corr: \xb0
-       S_grave: \xef                   # same as open door
-       S_pool: \xe0
-finish
-
-start: RogueIBM
-       Handling: IBM
-       Restrictions: rogue
-       S_weapon: \x29
-       S_amulet: \x2c
-       S_food: \x3a
-       S_potion: \xad
-       S_scroll: \x3f
-       S_book: \x2b
-       S_wand: \xe7
-       S_vwall: \xba                   # all walls now use
-       S_hwall: \xcd                   # double line graphics
-       S_tlcorn: \xc9 
-       S_trcorn: \xbb 
-       S_blcorn: \xc8 
-       S_brcorn: \xbc 
-       S_crwall: \xce 
-       S_tuwall: \xca 
-       S_tdwall: \xcb 
-       S_tlwall: \xb9 
-       S_trwall: \xcc 
-       S_ndoor: \xce 
-       S_vodoor: \xce 
-       S_hodoor: \xce 
-       S_room: \xfa                    # centered dot 
-       S_corr: \xb1 
-       S_litcorr: \xb2 
-       S_upstair: \xf0                 # Greek Xi 
-       S_dnstair: \xf0 
-finish
-
-start: RogueEpyx
-       Description: Rogue level color symbol set like Epyx Rogue
-       Restrictions: rogue
-       Handling: IBM
-       Color: Yes
-       S_vwall: \xba                   # all walls now use
-       S_hwall: \xcd                   # double line graphics
-       S_tlcorn: \xc9 
-       S_trcorn: \xbb 
-       S_blcorn: \xc8 
-       S_brcorn: \xbc 
-       S_crwall: \xce 
-       S_tuwall: \xca 
-       S_tdwall: \xcb 
-       S_tlwall: \xb9 
-       S_trwall: \xcc 
-       S_ndoor: \xce 
-       S_vodoor: \xce 
-       S_hodoor: \xce 
-       S_room: \xfa                    # centered dot 
-       S_corr: \xb1 
-       S_litcorr: \xb2 
-       S_upstair: \xf0                 # Greek Xi 
-       S_dnstair: \xf0 
-       S_arrow_trap: \x04              # diamond (cards) 
-       S_dart_trap: \x04 
-       S_falling_rock_trap: \x04 
-       S_squeaky_board: \x04 
-       S_bear_trap: \x04 
-       S_land_mine: \x04 
-       S_rolling_boulder_trap: \x04 
-       S_sleeping_gas_trap: \x04 
-       S_rust_trap: \x04 
-       S_fire_trap: \x04 
-       S_pit: \x04 
-       S_spiked_pit: \x04 
-       S_hole: \x04 
-       S_trap_door: \x04 
-       S_teleportation_trap: \x04 
-       S_level_teleporter: \x04 
-       S_magic_portal: \x04 
-       S_web: \x04 
-       S_statue_trap: \x04 
-       S_magic_trap: \x04 
-       S_anti_magic_trap: \x04 
-       S_polymorph_trap: \x04 
-       S_weapon: \x18                  # up arrow
-# ^J   S_armor: \x0a                   # Vert rect with o
-       S_armor: \x5b                   # default: '['
-# ^I   S_ring: \x09                    # circle with arrow
-       S_ring: \x3d                    # default: '='
-       S_amulet: \x0c                  # "female" symbol
-       S_tool: \x28                    # default: '('
-       S_food: \x05                    # club (as in cards)
-       S_potion: \xad                  # upside down '!'
-       S_scroll: \x0e                  # musical note
-       S_book: \x2b                    # default: '+'
-       S_wand: \xe7                    # greek tau
-       S_coin: \x0f                    # yes it's the same as gems
-       S_gem: \x0f                     # fancy '*'
-       S_rock: \x60
-       S_ball: \x30
-       S_chain: \x5f
-       S_venom: \x2e
-       S_rock: \x60
-       S_ball: \x30
-       S_chain: \x5f
-       S_venom: \x2e
-       S_human: \x01
-finish
-
-start: RogueWindows
-       Restrictions: rogue
-       Handling: IBM
-       S_weapon: \x29
-       S_amulet: \x2c
-       S_food: \x3a
-       S_potion: \xad
-       S_scroll: \x3f
-       S_book: \x2b
-       S_wand: \xe7
-       S_vwall: \xba                   # all walls now use
-       S_hwall: \xcd                   # double line graphics
-       S_tlcorn: \xc9 
-       S_trcorn: \xbb 
-       S_blcorn: \xc8 
-       S_brcorn: \xbc 
-       S_crwall: \xce 
-       S_tuwall: \xca 
-       S_tdwall: \xcb 
-       S_tlwall: \xb9 
-       S_trwall: \xcc 
-       S_ndoor: \xce 
-       S_vodoor: \xce 
-       S_hodoor: \xce 
-       S_room: \xfa                    # centered dot 
-       S_corr: \xb1 
-       S_litcorr: \xb2 
-       S_upstair: \xf0                 # Greek Xi 
-       S_dnstair: \xf0 
-finish
+# plain looks decent for wall+corridor levels where there aren't a lot
+# of room corners and ones present tend to be spread out, but it looks
+# awful for wallified mazes
+start: plain
+       Description: same as default symbols, except '+' for corner walls
+       S_tlcorn: '+'
+       S_trcorn: '+'
+       S_blcorn: '+'
+       S_brcorn: '+'
+       S_crwall: '+'
+       S_tuwall: '+'
+       S_tdwall: '+'
+       S_tlwall: '+'
+       S_trwall: '+'
+finish #plain -- other symbols implicitly retain their default values
 
-# Recommended symset for blind players 
+# Recommended symset for blind players
 # courtesy Michael Feir
 start: NHAccess
-       Description: Recommended for blind players
+       Description: recommended for blind players
        S_stone: \032
        S_vwall: \124
        S_hwall: \045
@@ -342,7 +52,7 @@ start: NHAccess
        S_brcorn: \124
        S_crwall: \045
        S_tuwall: \045
-       S_tdwall: \045 
+       S_tdwall: \045
        S_tlwall: \124
        S_trwall: \124
        S_ndoor: \046
@@ -354,7 +64,7 @@ start: NHAccess
        S_tree: \035
        S_room: \035
        S_corr: \060
-       S_litcorr: \062 
+       S_litcorr: \062
        S_upstair: \060
        S_dnstair: \062
        S_upladder: \095
@@ -363,35 +73,35 @@ start: NHAccess
        S_grave: \126
        S_throne: \126
        S_sink: \126
-       S_fountain: \126 
+       S_fountain: \126
        S_pool: \042
        S_ice: \042
        S_lava: \035
        S_vodbridge: \035
-       S_hodbridge: \032 
+       S_hodbridge: \032
        S_vcdbridge: \035
        S_hcdbridge: \126
        S_arrow_trap: \094
        S_dart_trap: \094
-       S_falling_rock_trap: \094 
+       S_falling_rock_trap: \094
        S_squeaky_board: \094
        S_bear_trap: \094
        S_land_mine: \094
-       S_rolling_boulder_trap: \094 
+       S_rolling_boulder_trap: \094
        S_sleeping_gas_trap: \094
        S_rust_trap: \094
        S_fire_trap: \094
        S_pit: \094
        S_spiked_pit: \094
        S_hole: \094
-       S_trap_door: \094 
+       S_trap_door: \094
        S_teleportation_trap: \094
        S_level_teleporter: \094
        S_magic_portal: \094
        S_web: \094
-       S_statue_trap: \094 
+       S_statue_trap: \094
        S_magic_trap: \094
-       S_anti_magic_trap: \094 
+       S_anti_magic_trap: \094
        S_polymorph_trap: \094
        S_vbeam: \124
        S_hbeam: \095
@@ -413,7 +123,7 @@ start: NHAccess
        S_sw_bl: \092
        S_sw_bc: \045
        S_sw_br: \047
-       S_explode1: \047 
+       S_explode1: \047
        S_explode2: \045
        S_explode3: \092
        S_explode4: \058
@@ -426,7 +136,7 @@ finish
 
 # All symbols are spaces
 start: Blank
-       Description: Completely blank symbols
+       Description: completely blank symbols
         S_air: \032
         S_altar: \032
         S_amulet: \032
@@ -603,15 +313,343 @@ start: Blank
         S_zruty: \032
 finish
 
-start: plain
-       Description: Same as Default symbols, except '+' for corner walls
-       S_tlcorn: '+'
-       S_trcorn: '+'
-       S_blcorn: '+'
-       S_brcorn: '+'
-       S_crwall: '+'
-       S_tuwall: '+'
-       S_tdwall: '+'
-       S_tlwall: '+'
-       S_trwall: '+'
-finish #plain -- other symbols implicitly retain their default values
+start: IBMgraphics
+       Description: special line-drawing characters used for walls
+#      Restrictions: primary
+       Handling: IBM
+       S_vwall: \xb3                   # meta-3, vertical rule
+       S_hwall: \xc4                   # meta-D, horizontal rule
+       S_tlcorn: \xda                  # meta-Z, top left corner
+       S_trcorn: \xbf                  # meta-?, top right corner
+       S_blcorn: \xc0                  # meta-@, bottom left
+       S_brcorn: \xd9                  # meta-Y, bottom right
+       S_crwall: \xc5                  # meta-E, cross
+       S_tuwall: \xc1                  # meta-A, T up
+       S_tdwall: \xc2                  # meta-B, T down
+       S_tlwall: \xb4                  # meta-4, T left
+       S_trwall: \xc3                  # meta-C, T right
+       S_ndoor: \xfa                   # meta-z, centered dot
+       S_vodoor: \xfe                  # meta-~, small centered square
+       S_hodoor: \xfe                  # meta-~, small centered square
+       S_bars: \xf0                    # equivalence symbol
+       S_tree: \xf1                    # plus or minus symbol
+       S_room: \xfa                    # meta-z, centered dot
+       S_corr: \xb0                    # meta-0, light shading
+       S_litcorr: \xb1                 # meta-1, medium shading
+       S_fountain: \xf4                # meta-t, integral top half
+       S_pool: \xf7                    # meta-w, approx. equals
+       S_ice: \xfa                     # meta-z, centered dot
+       S_lava: \xf7                    # meta-w, approx. equals
+       S_vodbridge: \xfa               # meta-z, centered dot
+       S_hodbridge: \xfa               # meta-z, centered dot
+       S_water: \xf7                   # meta-w, approx. equals
+       S_vbeam: \xb3                   # meta-3, vertical rule
+       S_hbeam: \xc4                   # meta-D, horizontal rule
+       S_sw_ml: \xb3                   # meta-3, vertical rule
+       S_sw_mr: \xb3                   # meta-3, vertical rule
+       S_explode4: \xb3                # meta-3, vertical rule
+       S_explode6: \xb3                # meta-3, vertical rule
+finish
+
+start: IBMGraphics_1
+#      Restrictions: primary
+       Handling: IBM
+       S_vwall: \xb3                   # meta-3, vertical rule
+       S_hwall: \xc4                   # meta-D, horizontal rule
+       S_tlcorn: \xda                  # meta-Z, top left corner
+       S_trcorn: \xbf                  # meta-?, top right corner
+       S_blcorn: \xc0                  # meta-@, bottom left
+       S_brcorn: \xd9                  # meta-Y, bottom right
+       S_crwall: \xc5                  # meta-E, cross
+       S_tuwall: \xc1                  # meta-A, T up
+       S_tdwall: \xc2                  # meta-B, T down
+       S_tlwall: \xb4                  # meta-4, T left
+       S_trwall: \xc3                  # meta-C, T right
+       S_vbeam: \xb3                   # meta-3, vertical rule
+       S_hbeam: \xc4                   # meta-D, horizontal rule
+       S_sw_ml: \xb3                   # meta-3, vertical rule
+       S_sw_mr: \xb3                   # meta-3, vertical rule
+       S_explode4: \xb3                # meta-3, vertical rule
+       S_explode6: \xb3                # meta-3, vertical rule
+finish
+
+start: IBMGraphics_2
+#      Restrictions: primary
+       Handling: IBM
+       S_vwall: \xb3                   # meta-3, vertical rule
+       S_hwall: \xc4                   # meta-D, horizontal rule
+       S_tlcorn: \xda                  # meta-Z, top left corner
+       S_trcorn: \xbf                  # meta-?, top right corner
+       S_blcorn: \xc0                  # meta-@, bottom left
+       S_brcorn: \xd9                  # meta-Y, bottom right
+       S_crwall: \xc5                  # meta-E, cross
+       S_tuwall: \xc1                  # meta-A, T up
+       S_tdwall: \xc2                  # meta-B, T down
+       S_tlwall: \xb4                  # meta-4, T left
+       S_trwall: \xc3                  # meta-C, T right
+       S_vodoor: \xfe                  # meta-~, small centered square
+       S_hodoor: \xfe                  # meta-~, small centered square
+       S_corr: \xb0                    # meta-0, light shading
+       S_litcorr: \xb1                 # meta-1, medium shading
+       S_vbeam: \xb3                   # meta-3, vertical rule
+       S_hbeam: \xc4                   # meta-D, horizontal rule
+       S_sw_ml: \xb3                   # meta-3, vertical rule
+       S_sw_mr: \xb3                   # meta-3, vertical rule
+       S_explode4: \xb3                # meta-3, vertical rule
+       S_explode6: \xb3                # meta-3, vertical rule
+finish
+
+start: RogueIBM
+       Handling: IBM
+       Restrictions: rogue
+       S_weapon: \x29
+       S_amulet: \x2c
+       S_food: \x3a
+       S_potion: \xad
+       S_scroll: \x3f
+       S_book: \x2b
+       S_wand: \xe7
+       S_vwall: \xba                   # all walls now use
+       S_hwall: \xcd                   # double line graphics
+       S_tlcorn: \xc9
+       S_trcorn: \xbb
+       S_blcorn: \xc8
+       S_brcorn: \xbc
+       S_crwall: \xce
+       S_tuwall: \xca
+       S_tdwall: \xcb
+       S_tlwall: \xb9
+       S_trwall: \xcc
+       S_ndoor: \xce
+       S_vodoor: \xce
+       S_hodoor: \xce
+       S_room: \xfa                    # centered dot
+       S_corr: \xb1
+       S_litcorr: \xb2
+       S_upstair: \xf0                 # Greek Xi
+       S_dnstair: \xf0
+finish
+
+start: RogueEpyx
+       Description: rogue level color symbol set like Epyx Rogue
+       Restrictions: rogue
+       Handling: IBM
+       Color: Yes
+       S_vwall: \xba                   # all walls now use
+       S_hwall: \xcd                   # double line graphics
+       S_tlcorn: \xc9
+       S_trcorn: \xbb
+       S_blcorn: \xc8
+       S_brcorn: \xbc
+       S_crwall: \xce
+       S_tuwall: \xca
+       S_tdwall: \xcb
+       S_tlwall: \xb9
+       S_trwall: \xcc
+       S_ndoor: \xce
+       S_vodoor: \xce
+       S_hodoor: \xce
+       S_room: \xfa                    # centered dot
+       S_corr: \xb1
+       S_litcorr: \xb2
+       S_upstair: \xf0                 # Greek Xi
+       S_dnstair: \xf0
+       S_arrow_trap: \x04              # diamond (cards)
+       S_dart_trap: \x04
+       S_falling_rock_trap: \x04
+       S_squeaky_board: \x04
+       S_bear_trap: \x04
+       S_land_mine: \x04
+       S_rolling_boulder_trap: \x04
+       S_sleeping_gas_trap: \x04
+       S_rust_trap: \x04
+       S_fire_trap: \x04
+       S_pit: \x04
+       S_spiked_pit: \x04
+       S_hole: \x04
+       S_trap_door: \x04
+       S_teleportation_trap: \x04
+       S_level_teleporter: \x04
+       S_magic_portal: \x04
+       S_web: \x04
+       S_statue_trap: \x04
+       S_magic_trap: \x04
+       S_anti_magic_trap: \x04
+       S_polymorph_trap: \x04
+       S_weapon: \x18                  # up arrow
+# ^J   S_armor: \x0a                   # Vert rect with o
+       S_armor: \x5b                   # default: '['
+# ^I   S_ring: \x09                    # circle with arrow
+       S_ring: \x3d                    # default: '='
+       S_amulet: \x0c                  # "female" symbol
+       S_tool: \x28                    # default: '('
+       S_food: \x05                    # club (as in cards)
+       S_potion: \xad                  # upside down '!'
+       S_scroll: \x0e                  # musical note
+       S_book: \x2b                    # default: '+'
+       S_wand: \xe7                    # greek tau
+       S_coin: \x0f                    # yes it's the same as gems
+       S_gem: \x0f                     # fancy '*'
+       S_rock: \x60
+       S_ball: \x30
+       S_chain: \x5f
+       S_venom: \x2e
+       S_rock: \x60
+       S_ball: \x30
+       S_chain: \x5f
+       S_venom: \x2e
+       S_human: \x01
+finish
+
+start: RogueWindows
+       Restrictions: rogue
+       Handling: IBM
+       S_weapon: \x29
+       S_amulet: \x2c
+       S_food: \x3a
+       S_potion: \xad
+       S_scroll: \x3f
+       S_book: \x2b
+       S_wand: \xe7
+       S_vwall: \xba                   # all walls now use
+       S_hwall: \xcd                   # double line graphics
+       S_tlcorn: \xc9
+       S_trcorn: \xbb
+       S_blcorn: \xc8
+       S_brcorn: \xbc
+       S_crwall: \xce
+       S_tuwall: \xca
+       S_tdwall: \xcb
+       S_tlwall: \xb9
+       S_trwall: \xcc
+       S_ndoor: \xce
+       S_vodoor: \xce
+       S_hodoor: \xce
+       S_room: \xfa                    # centered dot
+       S_corr: \xb1
+       S_litcorr: \xb2
+       S_upstair: \xf0                 # Greek Xi
+       S_dnstair: \xf0
+finish
+
+start: curses
+       Description: approximation of IBMgraphics using DECgraphics
+       Restrictions: primary
+       Handling: DEC
+       S_vwall: \xf8                   # meta-x, vertical rule
+       S_hwall: \xf1                   # meta-q, horizontal rule
+       S_tlcorn: \xec                  # meta-l, top left corner
+       S_trcorn: \xeb                  # meta-k, top right corner
+       S_blcorn: \xed                  # meta-m, bottom left
+       S_brcorn: \xea                  # meta-j, bottom right
+       S_crwall: \xee                  # meta-n, cross
+       S_tuwall: \xf6                  # meta-v, T up
+       S_tdwall: \xf7                  # meta-w, T down
+       S_tlwall: \xf5                  # meta-u, T left
+       S_trwall: \xf4                  # meta-t, T right
+       S_ndoor: \xfe                   # meta-z, centered dot
+       S_tree: \xf1                    # plus or minus symbol
+       S_room: \xfe                    # meta-z, centered dot
+       S_corr: \xe1                    # meta-a, solid block
+       S_litcorr: \xe1                 # meta-a, solid block
+       S_ice: \xfe                     # meta-z, centered dot
+       S_vodbridge: \xfe               # meta-z, centered dot
+       S_hodbridge: \xfe               # meta-z, centered dot
+       S_vbeam: \xf8                   # meta-3, vertical rule
+       S_hbeam: \xf1                   # meta-D, horizontal rule
+       S_sw_ml: \xf8                   # meta-3, vertical rule
+       S_sw_mr: \xf8                   # meta-3, vertical rule
+       S_explode4: \xf8                # meta-3, vertical rule
+       S_explode6: \xf8                # meta-3, vertical rule
+finish
+
+start: DECgraphics
+       Description: special line-drawing characters used for walls
+       Restrictions: primary
+       Handling: DEC
+       S_vwall: \xf8                   # meta-x, vertical rule
+       S_hwall: \xf1                   # meta-q, horizontal rule
+       S_tlcorn: \xec                  # meta-l, top left corner
+       S_trcorn: \xeb                  # meta-k, top right corner
+       S_blcorn: \xed                  # meta-m, bottom left
+       S_brcorn: \xea                  # meta-j, bottom right
+       S_crwall: \xee                  # meta-n, cross
+       S_tuwall: \xf6                  # meta-v, T up
+       S_tdwall: \xf7                  # meta-w, T down
+       S_tlwall: \xf5                  # meta-u, T left
+       S_trwall: \xf4                  # meta-t, T right
+       S_ndoor: \xfe                   # meta-~, centered dot
+       S_vodoor: \xe1                  # meta-a, solid block
+       S_hodoor: \xe1                  # meta-a, solid block
+       S_bars: \xfb                    # meta-{, small pi
+       S_tree: \xe7                    # meta-g, plus-or-minus
+       S_room: \xfe                    # meta-~, centered dot
+       S_upladder: \xf9                # meta-y, less-than-or-equals
+       S_dnladder: \xfa                # meta-z, greater-than-or-equals
+       S_pool: \xe0                    # meta-\, diamond
+       S_ice: \xfe                     # meta-~, centered dot
+       S_lava: \xe0                    # meta-\, diamond
+       S_vodbridge: \xfe               # meta-~, centered dot
+       S_hodbridge: \xfe               # meta-~, centered dot
+       S_water: \xe0                   # meta-\, diamond
+       S_vbeam: \xf8                   # meta-x, vertical rule
+       S_hbeam: \xf1                   # meta-q, horizontal rule
+       S_sw_tc: \xef                   # meta-o, high horizontal line
+       S_sw_ml: \xf8                   # meta-x, vertical rule
+       S_sw_mr: \xf8                   # meta-x, vertical rule
+       S_sw_bc: \xf3                   # meta-s, low horizontal line
+       S_explode2: \xef                # meta-o, high horizontal line
+       S_explode4: \xf8                # meta-x, vertical rule
+       S_explode6: \xf8                # meta-x, vertical rule
+       S_explode8: \xf3                # meta-s, low horizontal line
+finish
+
+#
+# This is commented out because specifying alternate default set isn't
+# implemented.
+#
+# DECgraphics_2:  underscore (default for altar) can be hard to see if
+# hero or highlighted pet is on the spot below (south of) it, making
+# it look like part of slightly bigger block cursor.  Bars are usually
+# within walls and we have something else for doorless doorway so '#'
+# for bars shouldn't be mistaken for the corridor symbol even by someone
+# used to DECgraphics, at least not often enough to pose a problem.
+# The pi symbol is small like lowercase but flat-topped like uppercase
+# so could represent a side view of a raised platform or table.
+#
+# start: DECgraphics_2
+#      Defaults: DECgraphics           # includes 'Handling: DEC'
+#      Description: variation of DECgraphics (iron bars:#, altar:pi)
+#      S_bars: '#'                     # (switch from pi to plain '#')
+#      S_altar: \xfb                   # meta-{, pi (switch from underscore)
+# finish
+#
+
+start: MACgraphics
+#      Description: (pre-OSX: obsolete?)
+#      Restrictions: primary
+       Handling: MAC
+       S_vwall: \xba
+       S_hwall: \xcd
+       S_tlcorn: \xc9
+       S_trcorn: \xbb
+       S_blcorn: \xc8
+       S_brcorn: \xbc
+       S_crwall: \xce
+       S_tuwall: \xca
+       S_tdwall: \xcb
+       S_tlwall: \xb9
+       S_trwall: \xcc
+       S_ndoor: \xb0
+       S_vodoor: \xee
+       S_hodoor: \xee
+       S_vcdoor: \xef
+       S_hcdoor: \xef
+       S_bars: \xf0                    # equivalency symbol
+       S_tree: \xf1                    # plus-or-minus
+       S_corr: \xb0
+       S_grave: \xef                   # same as open door
+       S_pool: \xe0
+finish
+
+# symbols EOF
index 809ddab65bc271ee4278907dd84a1c3f36385982..50d7d97c8734fe3af2232ca412edb78825a323e0 100644 (file)
@@ -1,4 +1,4 @@
-$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.138 $ $NHDT-Date: 1571267989 2019/10/16 23:19:49 $
+$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.139 $ $NHDT-Date: 1571313651 2019/10/17 12:00:51 $
 
 This fixes36.3 file is here to capture information about updates in the 3.6.x
 lineage following the release of 3.6.2 in May 2019. Please note, however,
@@ -185,6 +185,8 @@ fix hero still hiding under a statue shattered by a land mine
 fix helping a monster out of a pit addressing a deleted trap
 fix launched rolling boulder code accessing deleted trap
 fix monster stepping on a land mine code accessing deleted trap
+revise 'O' to show symbol sets in the same order they appear in the symbols
+       file and order the sets in dat/symbols to yield a sensible symset menu
 
 
 Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
@@ -280,6 +282,8 @@ curses: support symset:DECgraphics for map display
 curses: enable the 'use_inverse' boolean option (via wincap WC_INVERSE flag)
        for extended monster detection and black&white lava; forced to True
        to override default of False (for tty's benefit)
+curses: force 'O' command's menus for 'symset' and 'roguesymset' options to
+       be wider so that fewer entries with set descriptions will wrap
 curses+'perm_invent': entries were wrapping without any control; usually not
        noticeable because next entry overwrote, but visible for final entry
        when whole inventory fit within the available height; looked ok with
index becdd21a01c904c33b88c0f490d38b1605a95fdc..de1c8cfda5d5d90fb0956412f4332b62dc026d86 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 rm.h    $NHDT-Date: 1559994624 2019/06/08 11:50:24 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.61 $ */
+/* NetHack 3.6 rm.h    $NHDT-Date: 1571313651 2019/10/17 12:00:51 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.63 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /*-Copyright (c) Pasi Kallinen, 2017. */
 /* NetHack may be freely redistributed.  See license for details. */
@@ -299,6 +299,8 @@ struct symsetentry {
 #define H_IBM     1
 #define H_DEC     2
 #define H_CURS    3
+#define H_MAC     4 /* obsolete; needed so that the listing of available
+                     * symsets by 'O' can skip it for !MAC_GRAPHICS_ENV */
 
 extern const struct symdef defsyms[MAXPCHARS]; /* defaults */
 extern const struct symdef def_warnsyms[WARNCOUNT];
index f29dbf3a246bd5b35a4540f9774ef6c25599e0ae..2ac8ad28e7c17d55a2e4a3fe82361367d196fca2 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 drawing.c       $NHDT-Date: 1546656404 2019/01/05 02:46:44 $  $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.59 $ */
+/* NetHack 3.6 drawing.c       $NHDT-Date: 1571313651 2019/10/17 12:00:51 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.61 $ */
 /* Copyright (c) NetHack Development Team 1992.                   */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -255,9 +255,9 @@ static const uchar def_r_oc_syms[MAXOCLASSES] = {
 
 #undef C
 
-#ifdef TERMLIB
+#if defined(TERMLIB) || defined(CURSES_GRAPHICS)
 void NDECL((*decgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
-#endif /* TERMLIB */
+#endif /* TERMLIB || CURSES */
 
 #ifdef PC9800
 void NDECL((*ibmgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
@@ -496,17 +496,22 @@ int nondefault;
 #ifdef PC9800
         if (SYMHANDLING(H_IBM) && ibmgraphics_mode_callback)
             (*ibmgraphics_mode_callback)();
-        else if (!symset[currentgraphics].name && ascgraphics_mode_callback)
+        else if (SYMHANDLING(H_UNK) && ascgraphics_mode_callback)
             (*ascgraphics_mode_callback)();
 #endif
-#ifdef TERMLIB
+#if defined(TERMLIB) || defined(CURSES_GRAPHICS)
+        /* curses doesn't assign any routine to dec..._callback but
+           probably does the expected initialization under the hood
+           for terminals capable of rendering DECgraphics */
         if (SYMHANDLING(H_DEC) && decgraphics_mode_callback)
             (*decgraphics_mode_callback)();
-#endif
 # ifdef CURSES_GRAPHICS
+        /* there aren't any symbol sets with CURS handling, and the
+           curses interface never assigns a routine to curses..._callback */
         if (SYMHANDLING(H_CURS) && cursesgraphics_mode_callback)
             (*cursesgraphics_mode_callback)();
 # endif
+#endif
     } else {
         init_l_symbols();
         init_showsyms();
@@ -563,6 +568,7 @@ const char *known_handling[] = {
     "IBM",     /* H_IBM  */
     "DEC",     /* H_DEC  */
     "CURS",    /* H_CURS */
+    "MAC",     /* H_MAC  -- pre-OSX MACgraphics */
     (const char *) 0,
 };
 
index 930d36ea2d8ce87496e1d1a1f780c2a6e04f6cdb..f9d2dee8e8eaf640b8af087302faf929649c63d4 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 files.c $NHDT-Date: 1562719337 2019/07/10 00:42:17 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.252 $ */
+/* NetHack 3.6 files.c $NHDT-Date: 1571313652 2019/10/17 12:00:52 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.253 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /*-Copyright (c) Derek S. Ray, 2015. */
 /* NetHack may be freely redistributed.  See license for details. */
@@ -2111,7 +2111,7 @@ const char *name; /* name of option for error message */
             break;
 
         default:
       gi_error:
+ gi_error:
             raw_printf("Syntax error in %s", name);
             wait_synch();
             return count;
@@ -3063,9 +3063,10 @@ boolean FDECL((*proc), (char *));
                 }
 
                 ep = inbuf;
-                while (*ep == ' ' || *ep == '\t') ep++;
+                while (*ep == ' ' || *ep == '\t')
+                    ++ep;
 
-                /* lines beginning with '#' are comments. ignore empty lines. */
+                /* ingore empty lines and full-line comment lines */
                 if (!*ep || *ep == '#')
                     ignoreline = TRUE;
 
@@ -3074,9 +3075,9 @@ boolean FDECL((*proc), (char *));
 
                 /* merge now read line with previous ones, if necessary */
                 if (!ignoreline) {
-                    len = strlen(inbuf) + 1;
+                    len = (int) strlen(inbuf) + 1;
                     if (buf)
-                        len += strlen(buf);
+                        len += (int) strlen(buf);
                     tmpbuf = (char *) alloc(len);
                     if (buf) {
                         Sprintf(tmpbuf, "%s %s", buf, inbuf);
@@ -3100,6 +3101,7 @@ boolean FDECL((*proc), (char *));
                 if (match_varname(buf, "CHOOSE", 6)) {
                     char *section;
                     char *bufp = find_optparam(buf);
+
                     if (!bufp) {
                         config_error_add(
                                     "Format is CHOOSE=section1,section2,...");
@@ -3259,13 +3261,19 @@ int which_set;
            building a pick-list of possible symset
            values from the file, so only do that */
         if (symp->range == SYM_CONTROL) {
-            struct symsetentry *tmpsp;
+            struct symsetentry *tmpsp, *lastsp;
 
+            for (lastsp = symset_list; lastsp; lastsp = lastsp->next)
+                if (!lastsp->next)
+                    break;
             switch (symp->idx) {
             case 0:
                 tmpsp = (struct symsetentry *) alloc(sizeof *tmpsp);
-                tmpsp->next = symset_list;
-                symset_list = tmpsp;
+                tmpsp->next = (struct symsetentry *) 0;
+                if (!lastsp)
+                    symset_list = tmpsp;
+                else
+                    lastsp->next = tmpsp;
                 tmpsp->idx = symset_count++;
                 tmpsp->name = dupstr(bufp);
                 tmpsp->desc = (char *) 0;
@@ -3277,21 +3285,22 @@ int which_set;
                 break;
             case 2:
                 /* handler type identified */
-                tmpsp = symset_list; /* most recent symset */
+                tmpsp = lastsp; /* most recent symset */
                 for (i = 0; known_handling[i]; ++i)
                     if (!strcmpi(known_handling[i], bufp)) {
                         tmpsp->handling = i;
                         break; /* for loop */
                     }
                 break;
-            case 3:                  /* description:something */
-                tmpsp = symset_list; /* most recent symset */
+            case 3:
+                /* description:something */
+                tmpsp = lastsp; /* most recent symset */
                 if (tmpsp && !tmpsp->desc)
                     tmpsp->desc = dupstr(bufp);
                 break;
             case 5:
                 /* restrictions: xxxx*/
-                tmpsp = symset_list; /* most recent symset */
+                tmpsp = lastsp; /* most recent symset */
                 for (i = 0; known_restrictions[i]; ++i) {
                     if (!strcmpi(known_restrictions[i], bufp)) {
                         switch (i) {
@@ -4103,7 +4112,7 @@ unsigned oid; /* book identifier */
         }
     }
 
-cleanup:
+ cleanup:
     (void) dlb_fclose(fp);
     if (nowin_buf) {
         /* one-line buffer */
index 220f8f483d378886db60461b6117e8256796edd6..019a4544fef8e14a86505e87ab9c6db9ca1ba862 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 options.c       $NHDT-Date: 1571045295 2019/10/14 09:28:15 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.376 $ */
+/* NetHack 3.6 options.c       $NHDT-Date: 1571313653 2019/10/17 12:00:53 $  $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.378 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /*-Copyright (c) Michael Allison, 2008. */
 /* NetHack may be freely redistributed.  See license for details. */
@@ -5336,8 +5336,8 @@ boolean setinitial, setfromfile;
                          MENU_UNSELECTED);
                 for (i = 0; i < numapes && ape; i++) {
                     any.a_void = (opt_idx == 1) ? 0 : ape;
-                    /* length of pattern plus quotes (plus '<'/'>') is less than
-                       BUFSZ */
+                    /* length of pattern plus quotes (plus '<'/'>') is
+                       less than BUFSZ */
                     Sprintf(apebuf, "\"%c%s\"", ape->grab ? '<' : '>',
                             ape->pattern);
                     add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, apebuf,
@@ -5383,18 +5383,27 @@ boolean setinitial, setfromfile;
         symset[which_set].name = symset_name;
 
         if (res && symset_list) {
-            int thissize, biggest = 0;
+            int thissize,
+                biggest = (int) (sizeof "Default Symbols" - sizeof ""),
+                big_desc = 0;
 
             for (sl = symset_list; sl; sl = sl->next) {
                 /* check restrictions */
                 if (rogueflag ? sl->primary : sl->rogue)
                     continue;
+#ifndef MAC_GRAPHICS_ENV
+                if (sl->handling == H_MAC)
+                    continue;
+#endif
 
                 setcount++;
                 /* find biggest name */
                 thissize = sl->name ? (int) strlen(sl->name) : 0;
                 if (thissize > biggest)
                     biggest = thissize;
+                thissize = sl->desc ? (int) strlen(sl->desc) : 0;
+                if (thissize > big_desc)
+                    big_desc = thissize;
             }
             if (!setcount) {
                 pline("There are no appropriate %s symbol sets available.",
@@ -5402,10 +5411,48 @@ boolean setinitial, setfromfile;
                 return TRUE;
             }
 
-            Sprintf(fmtstr, "%%-%ds %%s", biggest + 5);
+            Sprintf(fmtstr, "%%-%ds %%s", biggest + 2);
             tmpwin = create_nhwindow(NHW_MENU);
             start_menu(tmpwin);
             any = zeroany;
+#ifdef CURSES_GRAPHICS /* this ought to be handled within curses... */
+            /*
+             * Symbol sets are formatted in two columns, "name description",
+             * on selectable lines.  curses bases menu width on the length
+             * of non-selectable lines (main header, separators if present,
+             * with trailing spaces ignored) and defaults to half the map.
+             * Without something like this separator (shown after the menu
+             * title and a blank line which follows that) to force a wider
+             * menu, entries with long descriptions wrap.  That would be
+             * ok if wrapping operated on the same two columns, but the
+             * menu doesn't know anything about those and the description
+             * is wrapping into the next line's name column, making long
+             * descriptions--and menus containing them--hard to read.
+             */
+            if (WINDOWPORT("curses")) {
+                char tmp1[BUFSZ], tmp2[BUFSZ], bigbuf[BUFSZ + 1 + BUFSZ];
+
+                /* 4: room for space+letter+paren+space, fake selector;
+                   2: added to 'biggest' when constructing 'fmtstr';
+                   1: space between symset name+2 and symset description */
+                if (4 + biggest + 2 + 1 > (int) sizeof tmp1 - 1)
+                    biggest = (int) sizeof tmp1 - 1 - (4 + 2 + 1);
+                (void) memset((genericptr_t) tmp1, '-', biggest);
+                tmp1[biggest] = '\0';
+                if (big_desc > (int) sizeof tmp2 - 1)
+                    big_desc = (int) sizeof tmp2 - 1;
+                (void) memset((genericptr_t) tmp2, '-', big_desc);
+                tmp2[big_desc] = '\0';
+                Sprintf(bigbuf, "%4s", "");
+                Sprintf(eos(bigbuf), fmtstr, tmp1, tmp2);
+                bigbuf[BUFSZ - 1] = '\0';
+                any.a_int = 0;
+                add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
+                         bigbuf, MENU_UNSELECTED);
+            }
+#else
+            nhUse(big_desc);
+#endif
             any.a_int = 1;
             add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
                      "Default Symbols", MENU_UNSELECTED);
@@ -5414,6 +5461,10 @@ boolean setinitial, setfromfile;
                 /* check restrictions */
                 if (rogueflag ? sl->primary : sl->rogue)
                     continue;
+#ifndef MAC_GRAPHICS_ENV
+                if (sl->handling == H_MAC)
+                    continue;
+#endif
 
                 if (sl->name) {
                     any.a_int = sl->idx + 2;