annotate etc/CENSORSHIP @ 111413:d53ee71e7e89

Unify mouse-highlight code for all GUI and TTY sessions. term.c: Remove static mouse_face_* variables. All users changed. (term_show_mouse_face, term_clear_mouse_face) (fast_find_position, term_mouse_highlight): Functions deleted. (tty_draw_row_with_mouse_face): New function. (term_mouse_movement): Call note_mouse_highlight instead of term_mouse_highlight. nsterm.m (ns_update_window_begin, ns_update_window_end) (ns_update_end, x_destroy_window, ns_frame_up_to_date) (ns_dumpglyphs_box_or_relief, ns_maybe_dumpglyphs_background) (ns_dumpglyphs_image, ns_dumpglyphs_stretch) (ns_initialize_display_info, keyDown, mouseMoved, mouseExited): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. xterm.c (x_update_window_begin, x_update_window_end) (x_update_end, XTframe_up_to_date, x_set_mouse_face_gc) (handle_one_xevent, x_free_frame_resources, x_term_init): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. w32term.c (x_update_window_begin, x_update_window_end) (x_update_end, w32_read_socket, x_free_frame_resources) (w32_initialize_display_info): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. xdisp.c (show_mouse_face, note_mode_line_or_margin_highlight) (note_mouse_highlight) [HAVE_WINDOW_SYSTEM]: Don't run GUI code unless the frame is on a window-system. (get_tool_bar_item, handle_tool_bar_click) (note_tool_bar_highlight, draw_glyphs, erase_phys_cursor) (show_mouse_face, clear_mouse_face, coords_in_mouse_face_p) (note_mode_line_or_margin_highlight, note_mouse_highlight) (x_clear_window_mouse_face, cancel_mouse_face, expose_frame): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. (coords_in_mouse_face_p): Move prototype out of the HAVE_WINDOW_SYSTEM conditional. (x_y_to_hpos_vpos, frame_to_window_pixel_xy): Move out of the HAVE_WINDOW_SYSTEM block. (try_window_id) [HAVE_GPM || MSDOS]: Call x_clear_window_mouse_face. (draw_row_with_mouse_face): Implementation for HAVE_WINDOW_SYSTEM systems. Call tty_draw_row_with_mouse_face for TTY systems. (show_mouse_face): Call draw_row_with_mouse_face, instead of calling draw_glyphs directly. (show_mouse_face, clear_mouse_face, coords_in_mouse_face_p) (cursor_in_mouse_face_p, rows_from_pos_range) (mouse_face_from_buffer_pos, mouse_face_from_string_pos) (note_mode_line_or_margin_highlight, note_mouse_highlight) (x_clear_window_mouse_face, cancel_mouse_face): Move out of the HAVE_WINDOW_SYSTEM block. Ifdef away window-system specific fragments. (note_mouse_highlight): Call popup_activated for MSDOS as well. Clear mouse highlight if pointer is over glyphs whose OBJECT is an integer. (mouse_face_from_buffer_pos): Add parentheses around && within ||. (x_consider_frame_title, tool_bar_lines_needed): Move prototypes to HAVE_WINDOW_SYSTEM-only part. (get_window_cursor_type): Move inside a HAVE_WINDOW_SYSTEM-only part. Remove "#ifdef HAVE_WINDOW_SYSTEM" from body of function. (null_glyph_slice): Move declaration into HAVE_WINDOW_SYSTEM-only part. dispnew.c (mirror_make_current): Set Y coordinate of the mode-line and header-line rows. (init_display): Setup initial frame's output_data for text terminal frames. xmenu.c (popup_activated): Don't define on MSDOS, which now has its own definition on msdos.c. msdos.c (show_mouse_face, clear_mouse_face) (fast_find_position, IT_note_mode_line_highlight) (IT_note_mouse_highlight): Functions deleted. (IT_frame_up_to_date, dos_rawgetc): Call note_mouse_highlight instead of IT_note_mouse_highlight. (draw_row_with_mouse_face, popup_activated): New functions. (dos_set_window_size, draw_row_with_mouse_face, IT_update_begin) (IT_update_end, IT_frame_up_to_date, internal_terminal_init) (dos_rawgetc): Replace Display_Info with Mouse_HLInfo everywhere where mouse_face_* members were accessed for mouse highlight purposes. msdos.h (initialize_msdos_display): Add prototype. frame.h (MOUSE_HL_INFO): New macro. lisp.h (Mouse_HLInfo): New data type. xterm.h (struct x_display_info): w32term.h (struct w32_display_info): nsterm.h (struct ns_display_info): termchar.h (struct tty_display_info): Use it instead of mouse_face_* members. dispextern.h (show_mouse_face, clear_mouse_face): Update type of 1st argument. (frame_to_window_pixel_xy, note_mouse_highlight) (x_clear_window_mouse_face, cancel_mouse_face, clear_mouse_face) (show_mouse_face, cursor_in_mouse_face_p): Move prototypes out of HAVE_WINDOW_SYSTEM conditional. (draw_row_with_mouse_face): Declare prototype. (tty_draw_row_with_mouse_face): Declare prototype.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 06 Nov 2010 10:28:31 +0200
parents 632018b817e3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25853
Dave Love <fx@gnu.org>
parents:
diff changeset
1 Censoring my Software
Dave Love <fx@gnu.org>
parents:
diff changeset
2 Richard Stallman
Dave Love <fx@gnu.org>
parents:
diff changeset
3 [From Datamation, 1 March 1996]
Dave Love <fx@gnu.org>
parents:
diff changeset
4
Dave Love <fx@gnu.org>
parents:
diff changeset
5
Dave Love <fx@gnu.org>
parents:
diff changeset
6 Last summer, a few clever legislators proposed a bill to "prohibit
Dave Love <fx@gnu.org>
parents:
diff changeset
7 pornography" on the Internet. Last fall, right-wing Christians made
Dave Love <fx@gnu.org>
parents:
diff changeset
8 this cause their own. Last week, President Clinton signed the bill,
Dave Love <fx@gnu.org>
parents:
diff changeset
9 and we lost the freedom of the press for the public library of the
Dave Love <fx@gnu.org>
parents:
diff changeset
10 future. This week, I'm censoring GNU Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
11
Dave Love <fx@gnu.org>
parents:
diff changeset
12 No, GNU Emacs does not contain pornography. It is a software package,
Dave Love <fx@gnu.org>
parents:
diff changeset
13 an award-winning extensible and programmable text editor. But the law
Dave Love <fx@gnu.org>
parents:
diff changeset
14 that was passed applies to far more than pornography. It prohibits
Dave Love <fx@gnu.org>
parents:
diff changeset
15 "indecent" speech, which can include anything from famous poems, to
Dave Love <fx@gnu.org>
parents:
diff changeset
16 masterpieces hanging in the Louvre, to advice about safe sex...to
Dave Love <fx@gnu.org>
parents:
diff changeset
17 software.
Dave Love <fx@gnu.org>
parents:
diff changeset
18
Dave Love <fx@gnu.org>
parents:
diff changeset
19 Naturally, there was a lot of opposition to this bill. Not only from
Dave Love <fx@gnu.org>
parents:
diff changeset
20 people who use the Internet, and people who appreciate erotica, but
Dave Love <fx@gnu.org>
parents:
diff changeset
21 from everyone who cares about freedom of the press.
Dave Love <fx@gnu.org>
parents:
diff changeset
22
Dave Love <fx@gnu.org>
parents:
diff changeset
23 But every time we tried to tell the public what was at stake, the
Dave Love <fx@gnu.org>
parents:
diff changeset
24 forces of censorship responded with a lie: they told the public that
Dave Love <fx@gnu.org>
parents:
diff changeset
25 the issue was simply pornography. By embedding this lie as a
Dave Love <fx@gnu.org>
parents:
diff changeset
26 presupposition in their statements about the issue, they succeeded in
Dave Love <fx@gnu.org>
parents:
diff changeset
27 misinforming the public. So here I am, censoring my software.
Dave Love <fx@gnu.org>
parents:
diff changeset
28
Dave Love <fx@gnu.org>
parents:
diff changeset
29 You see, Emacs contains a version of the famous "doctor program",
Dave Love <fx@gnu.org>
parents:
diff changeset
30 a.k.a. Eliza, originally developed by Professor Weizenbaum at MIT.
Dave Love <fx@gnu.org>
parents:
diff changeset
31 This is the program that imitates a Rogerian psychotherapist. The
Dave Love <fx@gnu.org>
parents:
diff changeset
32 user talks to the program, and the program responds--by playing back
Dave Love <fx@gnu.org>
parents:
diff changeset
33 the user's own statements, and by recognizing a long list of
Dave Love <fx@gnu.org>
parents:
diff changeset
34 particular words.
Dave Love <fx@gnu.org>
parents:
diff changeset
35
Dave Love <fx@gnu.org>
parents:
diff changeset
36 The Emacs doctor program was set up to recognize many common curse
Dave Love <fx@gnu.org>
parents:
diff changeset
37 words, and respond with an appropriately cute message such as, "Would
Dave Love <fx@gnu.org>
parents:
diff changeset
38 you please watch your tongue?" or "Let's not be vulgar." In order to
Dave Love <fx@gnu.org>
parents:
diff changeset
39 do this, it had to have a list of curse words. That means the source
Dave Love <fx@gnu.org>
parents:
diff changeset
40 code for the program was indecent.
Dave Love <fx@gnu.org>
parents:
diff changeset
41
Dave Love <fx@gnu.org>
parents:
diff changeset
42 Because of the censorship law, I had to remove this feature. (I
Dave Love <fx@gnu.org>
parents:
diff changeset
43 replaced it with a message announcing that the program has been
Dave Love <fx@gnu.org>
parents:
diff changeset
44 censored for your protection.) The new version of the doctor doesn't
Dave Love <fx@gnu.org>
parents:
diff changeset
45 recognize the indecent words. If you curse at it, it curses right
Dave Love <fx@gnu.org>
parents:
diff changeset
46 back to you--for lack of knowing better.
Dave Love <fx@gnu.org>
parents:
diff changeset
47
Dave Love <fx@gnu.org>
parents:
diff changeset
48 Now that people are facing the threat of two years in prison for
Dave Love <fx@gnu.org>
parents:
diff changeset
49 indecent network postings, it would be helpful if they could access
Dave Love <fx@gnu.org>
parents:
diff changeset
50 precise rules via the Internet for how to avoid imprisonment.
Dave Love <fx@gnu.org>
parents:
diff changeset
51 However, this is impossible. The rules would have to mention the
Dave Love <fx@gnu.org>
parents:
diff changeset
52 forbidden words, so posting them on the Internet would be against the
Dave Love <fx@gnu.org>
parents:
diff changeset
53 rules.
Dave Love <fx@gnu.org>
parents:
diff changeset
54
Dave Love <fx@gnu.org>
parents:
diff changeset
55 Of course, I'm making an assumption about just what "indecent" means.
Dave Love <fx@gnu.org>
parents:
diff changeset
56 I have to do this, because nobody knows for sure. The most obvious
57465
01772baf50a3 Fix typo.
Richard M. Stallman <rms@gnu.org>
parents: 25853
diff changeset
57 possible meaning is the meaning it has for television, so I'm using
25853
Dave Love <fx@gnu.org>
parents:
diff changeset
58 that as a tentative assumption. However, there is a good chance that
Dave Love <fx@gnu.org>
parents:
diff changeset
59 our courts will reject that interpretation of the law as
Dave Love <fx@gnu.org>
parents:
diff changeset
60 unconstitutional.
Dave Love <fx@gnu.org>
parents:
diff changeset
61
Dave Love <fx@gnu.org>
parents:
diff changeset
62 We can hope that the courts will recognize the Internet as a medium of
Dave Love <fx@gnu.org>
parents:
diff changeset
63 publication like books and magazines. If they do, they will entirely
Dave Love <fx@gnu.org>
parents:
diff changeset
64 reject any law prohibiting "indecent" publications on the Internet.
Dave Love <fx@gnu.org>
parents:
diff changeset
65
Dave Love <fx@gnu.org>
parents:
diff changeset
66 What really worries me is that the courts might take a muddled
Dave Love <fx@gnu.org>
parents:
diff changeset
67 in-between escape route--by choosing another interpretation of
Dave Love <fx@gnu.org>
parents:
diff changeset
68 "indecent", one that permits the doctor program or a statement of the
Dave Love <fx@gnu.org>
parents:
diff changeset
69 decency rules, but prohibits some of the books that children can
Dave Love <fx@gnu.org>
parents:
diff changeset
70 browse through in the public library and the bookstore. Over the
Dave Love <fx@gnu.org>
parents:
diff changeset
71 years, as the Internet replaces the public library and the bookstore,
Dave Love <fx@gnu.org>
parents:
diff changeset
72 some of our freedom of the press will be lost.
Dave Love <fx@gnu.org>
parents:
diff changeset
73
Dave Love <fx@gnu.org>
parents:
diff changeset
74 Just a few weeks ago, another country imposed censorship on the
Dave Love <fx@gnu.org>
parents:
diff changeset
75 Internet. That was China. We don't think well of China in this
Dave Love <fx@gnu.org>
parents:
diff changeset
76 country--its government doesn't respect basic freedoms. But how well
Dave Love <fx@gnu.org>
parents:
diff changeset
77 does our government respect them? And do you care enough to preserve
Dave Love <fx@gnu.org>
parents:
diff changeset
78 them here?
Dave Love <fx@gnu.org>
parents:
diff changeset
79
Dave Love <fx@gnu.org>
parents:
diff changeset
80 If you care, stay in touch with the Voters Telecommunications Watch.
Dave Love <fx@gnu.org>
parents:
diff changeset
81 Look in their Web site http://www.vtw.org/ for background information
Dave Love <fx@gnu.org>
parents:
diff changeset
82 and political action recommendations. Censorship won in February, but
Dave Love <fx@gnu.org>
parents:
diff changeset
83 we can beat it in November.
Dave Love <fx@gnu.org>
parents:
diff changeset
84
Dave Love <fx@gnu.org>
parents:
diff changeset
85 Copyright 1996 Richard Stallman
Dave Love <fx@gnu.org>
parents:
diff changeset
86 Verbatim copying and distribution is permitted in any medium
Dave Love <fx@gnu.org>
parents:
diff changeset
87 provided this notice is preserved.