mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-33
Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 223-227) - Update from CVS
This commit is contained in:
commit
4a2283bcc7
62 changed files with 1363 additions and 616 deletions
|
|
@ -1,3 +1,16 @@
|
|||
2005-03-30 Marcelo Toledo <marcelo@marcelotoledo.org>
|
||||
|
||||
* FOR-RELEASE (Documentation): Added check the Emacs Tutorial. The
|
||||
first line of every tutorial must begin with a sentence saying
|
||||
"Emacs Tutorial" in the respective language. This should be
|
||||
followed by "See end for copying conditions", likewise in the
|
||||
respective language.
|
||||
|
||||
2005-03-29 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* FOR-RELEASE (TO BE DONE SHORTLY BEFORE RELEASE): New section.
|
||||
Add `undo-ask-before-discard' to it.
|
||||
|
||||
2005-03-02 Miles Bader <miles@gnu.org>
|
||||
|
||||
* quick-install-emacs: Only use the mkdir --verbose option if the
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
Tasks needed before the next release.
|
||||
|
||||
* THINGS THAT HAVE TO BE DONE SHORTLY BEFORE RELEASE
|
||||
* TO BE DONE SHORTLY BEFORE RELEASE
|
||||
|
||||
`undo-ask-before-discard', currently set to t for debugging purposes
|
||||
** `undo-ask-before-discard', currently set to t for debugging purposes
|
||||
has to be set to nil: when t, it can leak memory and cause other problems.
|
||||
|
||||
* NEW FEATURES
|
||||
|
|
@ -23,6 +23,8 @@ See msg from rms to emacs-devel on 21 Dec.
|
|||
|
||||
* FATAL ERRORS
|
||||
|
||||
** Make unexec handle memory mapping policy of the latest versions of Linux.
|
||||
|
||||
** Investigate reported crashes in compact_small_strings.
|
||||
|
||||
** Investigate reported crashes related to using an
|
||||
|
|
@ -150,7 +152,7 @@ man/basic.texi "Luc Teirlinck" Chong Yidong
|
|||
man/buffers.texi "Luc Teirlinck" Chong Yidong
|
||||
man/building.texi "Ted Zlatanov" <tzz@lifelogs.com>
|
||||
man/calendar.texi joakim@verona.se Chong Yidong
|
||||
man/cmdargs.texi Chong Yidong
|
||||
man/cmdargs.texi Chong Yidong "Luc Teirlinck"
|
||||
man/commands.texi "Luc Teirlinck" Chong Yidong
|
||||
man/custom.texi Chong Yidong
|
||||
man/dired.texi Chong Yidong joakim@verona.se
|
||||
|
|
@ -216,7 +218,7 @@ lispref/frames.texi "Luc Teirlinck" Chong Yidong
|
|||
lispref/functions.texi "Luc Teirlinck" Chong Yidong
|
||||
lispref/hash.texi "Luc Teirlinck" Chong Yidong
|
||||
lispref/help.texi "Luc Teirlinck" Chong Yidong
|
||||
lispref/hooks.texi
|
||||
lispref/hooks.texi Lute Kamstra
|
||||
lispref/internals.texi "Luc Teirlinck" Chong Yidong
|
||||
lispref/intro.texi "Luc Teirlinck"
|
||||
lispref/keymaps.texi "Luc Teirlinck" Chong Yidong
|
||||
|
|
@ -245,6 +247,42 @@ lispref/tips.texi "Luc Teirlinck" Chong Yidong
|
|||
lispref/variables.texi "Luc Teirlinck" Chong Yidong
|
||||
lispref/windows.texi "Luc Teirlinck" Chong Yidong
|
||||
|
||||
** Check the Emacs Tutorial.
|
||||
|
||||
The first line of every tutorial must begin with a sentence saying
|
||||
"Emacs Tutorial" in the respective language. This should be followed
|
||||
by "See end for copying conditions", likewise in the respective
|
||||
language.
|
||||
|
||||
After each file name, on the same line or the following line, come the
|
||||
names of the people who have checked it.
|
||||
|
||||
|
||||
SECTION READERS
|
||||
----------------------------------
|
||||
etc/TUTORIAL rms
|
||||
etc/TUTORIAL.bg Ognyan Kulev <ogi@fmi.uni-sofia.bg>
|
||||
etc/TUTORIAL.cn
|
||||
etc/TUTORIAL.cs
|
||||
etc/TUTORIAL.de
|
||||
etc/TUTORIAL.es Marcelo Toledo
|
||||
etc/TUTORIAL.fr
|
||||
etc/TUTORIAL.it
|
||||
etc/TUTORIAL.ja
|
||||
etc/TUTORIAL.ko
|
||||
etc/TUTORIAL.nl Lute Kamstra
|
||||
etc/TUTORIAL.pl
|
||||
etc/TUTORIAL.pt_BR Marcelo Toledo
|
||||
etc/TUTORIAL.ro
|
||||
etc/TUTORIAL.ru
|
||||
etc/TUTORIAL.sk
|
||||
etc/TUTORIAL.sl
|
||||
etc/TUTORIAL.sv Mats Lidell <matsl@contactor.se>
|
||||
etc/TUTORIAL.th
|
||||
etc/TUTORIAL.zh
|
||||
|
||||
|
||||
|
||||
|
||||
Local variables:
|
||||
mode: outline
|
||||
|
|
|
|||
|
|
@ -1,3 +1,31 @@
|
|||
2005-04-02 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* TUTORIAL.ja, TUTORIAL.cn, TUTORIAL.ru, TUTORIAL.zh: Remove the
|
||||
old intro line that apparently was a longer version of "Emacs
|
||||
tutorial".
|
||||
|
||||
* TUTORIAL.es: Clean up line breaks.
|
||||
|
||||
2005-04-01 Marcelo Toledo <marcelo@marcelotoledo.org>
|
||||
|
||||
* TUTORIAL.pt_BR, TUTORIAL.cn, TUTORIAL.cs, TUTORIAL.de,
|
||||
TUTORIAL.es, TUTORIAL.fr, TUTORIAL.it, TUTORIAL.ja, TUTORIAL.ko,
|
||||
TUTORIAL.pl, TUTORIAL.pt_BR, TUTORIAL.ro, TUTORIAL.ru,
|
||||
TUTORIAL.sk, TUTORIAL.sl, TUTORIAL.th, TUTORIAL.zh: Fix title
|
||||
line.
|
||||
|
||||
* TUTORIAL.bg: Fix title line; Applied TUTORIAL changes in
|
||||
2005-02-08T14:20:54Z!lute@gnu.org, "Emacs" is not transliterated to cyrillic anymore;
|
||||
Minor fixes; by Ognyan Kulev <ogi@fmi.uni-sofia.bg>.
|
||||
|
||||
* TUTORIAL.sv: Sync some other changes with the TUTORIAL version
|
||||
2005-04-01T00:31:25Z!rms@gnu.org by Mats Lidell <matsl@contactor.se>.
|
||||
|
||||
|
||||
2005-04-01 Lute Kamstra <lute@gnu.org>
|
||||
|
||||
* TUTORIAL.nl: Fix title line.
|
||||
|
||||
2005-03-30 Thien-Thi Nguyen <ttn@gnu.org>
|
||||
|
||||
* TUTORIAL: Add title line.
|
||||
|
|
|
|||
4
etc/NEWS
4
etc/NEWS
|
|
@ -2804,6 +2804,10 @@ the command `undefined'. (In earlier Emacs versions, it used
|
|||
|
||||
* Lisp Changes in Emacs 22.1
|
||||
|
||||
---
|
||||
** easy-mmode-define-global-mode has been renamed to
|
||||
define-global-minor-mode. The old name remains as an alias.
|
||||
|
||||
+++
|
||||
** The new function `filter-buffer-substring' extracts a buffer
|
||||
substring, passes it through a set of filter functions, and returns
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
Emacs Tutorial
|
||||
You are looking at the Emacs tutorial. See end for copying conditions.
|
||||
Emacs tutorial. See end for copying conditions.
|
||||
Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation.
|
||||
|
||||
Emacs commands generally involve the CONTROL key (sometimes labeled
|
||||
|
|
|
|||
301
etc/TUTORIAL.bg
301
etc/TUTORIAL.bg
|
|
@ -1,8 +1,7 @@
|
|||
въведението на Емакс
|
||||
Вие гледате въведението на Емакс. Условията за копиране са в края на текста.
|
||||
Copyright (c) 1985, 1996, 1998, 2001, 2002, 2003 Free Software Foundation.
|
||||
Въведение в Emacs. Условията за копиране са в края на текста.
|
||||
Copyright (c) 1985,1996,1998,2001,2002,2003,2005 Free Software Foundation.
|
||||
|
||||
Командите на Емакс най-често включват клавишите CONTROL (понякога
|
||||
Командите на Emacs най-често включват клавишите CONTROL (понякога
|
||||
отбелязван с CTRL или CTL) и META (понякога отбелязван с EDIT или
|
||||
ALT). Вместо да се изписват с пълно име всеки път, ние ще използваме
|
||||
следните съкращения:
|
||||
|
|
@ -16,7 +15,7 @@ ALT).
|
|||
клавиша ESC и след това въведете <знак>. Ние
|
||||
записваме <ESC>, за да отбележим клавиша ESC.
|
||||
|
||||
Важна бележка: в края на Емакс сесията въведете двата знака C-x C-c.
|
||||
Важна бележка: в края на Emacs сесията въведете двата знака C-x C-c.
|
||||
Знаците ">>" отляво ви дават указание да изпълните команда. Например:
|
||||
<<Blank lines inserted here by startup of help-with-tutorial>>
|
||||
>> Сега въведете C-v (Покажи следващия екран), за да се придвижите към
|
||||
|
|
@ -94,7 +93,7 @@ Next (
|
|||
|
||||
Всеки ред от текст завършва със знак за нов ред, който служи за
|
||||
отделянето на реда от следващия ред. Последният ред във вашия файл
|
||||
трябва да има знак за нов ред в края (но Емакс не изисква такъв,
|
||||
трябва да има знак за нов ред в края (но Emacs не изисква такъв,
|
||||
когато прочита файла).
|
||||
|
||||
>> Опитайте C-b в началото на ред. Това трябва да ви придвижи в края
|
||||
|
|
@ -110,7 +109,7 @@ C-f
|
|||
|
||||
Когато се придвижвате след горния или долния край на екрана, текстът
|
||||
отвъд края се измества към екрана. Това се нарича "скролиране". То
|
||||
позволява на Емакс да придвижва курсора към зададеното място в текста,
|
||||
позволява на Emacs да придвижва курсора към зададеното място в текста,
|
||||
без да го изкарва извън екрана.
|
||||
|
||||
>> Опитайте се да придвижите курсора след долния край на екрана с C-n
|
||||
|
|
@ -193,7 +192,7 @@ Shift
|
|||
Вие можете също да се придвижвате с клавишите-стрелки, ако вашият
|
||||
терминал има такива. Ние препоръчваме да научите C-b, C-f, C-n и C-p
|
||||
по три причини. Първо, те работят на всички видове терминали. Второ,
|
||||
веднъж след като добиете практика в използването на Емакс, ще
|
||||
веднъж след като добиете практика в използването на Emacs, ще
|
||||
откриете, че въвеждането на тези Control-знаци е по-бързо от
|
||||
въвеждането на клавишите стрелки, защото не трябва да премествате
|
||||
ръката си далеч от областта на клавишите с букви. Трето, веднъж след
|
||||
|
|
@ -201,7 +200,7 @@ Shift
|
|||
можете също така лесно да научите по-напредналите команди за движение
|
||||
на курсора.
|
||||
|
||||
Повечето Емакс команди приемат числов аргумент; за повечето от тях той
|
||||
Повечето Emacs команди приемат числов аргумент; за повечето от тях той
|
||||
служи като брояч на повторения. Начинът, по който давате числов
|
||||
брояч, е с въвеждане на C-u, последвано от въвеждане на цифрите, и
|
||||
всичко това преди въвеждане на самата команда. Ако имате клавиш META
|
||||
|
|
@ -233,7 +232,7 @@ C-v
|
|||
|
||||
Ако използвате графичен интерфейс, като X11 или MS-Windows, би
|
||||
трябвало да има тънка правоъгълна област, наречена плъзгач (scroll
|
||||
bar), в лявата страна на прозореца на Емакс. Вие можете да скролирате
|
||||
bar), в лявата страна на прозореца на Emacs. Вие можете да скролирате
|
||||
текста, щракайки с мишката в плъзгача.
|
||||
|
||||
>> Опитайте да натиснете средния бутон на върха на осветената област
|
||||
|
|
@ -245,10 +244,10 @@ bar),
|
|||
нагоре и надолу, като движите мишката.
|
||||
|
||||
|
||||
* КОГАТО ЕМАКС Е БЛОКИРАЛ
|
||||
* КОГАТО EMACS Е БЛОКИРАЛ
|
||||
-------------------------
|
||||
|
||||
Ако Емакс спре да отговаря на вашите команди, вие можете да го спрете
|
||||
Ако Emacs спре да отговаря на вашите команди, вие можете да го спрете
|
||||
безопасно, като въведете C-g. Може да използвате C-g, за да спрете
|
||||
команда, която се изпълнява твърде дълго.
|
||||
|
||||
|
|
@ -265,15 +264,15 @@ bar),
|
|||
* ЗАБРАНЕНИ КОМАНДИ
|
||||
-------------------
|
||||
|
||||
Някои команди на Емакс са "забранени", така че начинаещите потребители
|
||||
Някои команди на Emacs са "забранени", така че начинаещите потребители
|
||||
да не могат да ги употребят по погрешка.
|
||||
|
||||
Ако въведете някоя от забранените команди, Емакс извежда съобщение,
|
||||
Ако въведете някоя от забранените команди, Emacs извежда съобщение,
|
||||
казвайки каква е била командата и питайки ви дали искате да продължите
|
||||
напред и да изпълните командата.
|
||||
|
||||
Ако наистина искате да изпробвате командата, въведете клавиша интервал
|
||||
в отговор на въпроса. Обикновено ако не искате да изпълните
|
||||
Ако наистина искате да изпробвате командата, въведете <SPC> (клавиша
|
||||
интервал) в отговор на въпроса. Обикновено ако не искате да изпълните
|
||||
забранената команда, отговаряте на въпроса с "n".
|
||||
|
||||
>> Въведете C-x C-l (която е забранена команда), и след това въведете
|
||||
|
|
@ -283,7 +282,7 @@ bar),
|
|||
* ПРОЗОРЦИ
|
||||
----------
|
||||
|
||||
Емакс може да управлява няколко прозореца, всеки извеждайки свой
|
||||
Emacs може да управлява няколко прозореца, всеки извеждайки свой
|
||||
собствен текст. Ние ще обясним по-късно как да използвате няколко
|
||||
прозореца. Точно сега ние искаме да обясним как да се отървете от
|
||||
допълнителни прозорци и да се върнете към основното редактиране с един
|
||||
|
|
@ -313,13 +312,13 @@ bar),
|
|||
----------------------
|
||||
|
||||
Ако искате да вмъкнете текст, просто го въведете. Знаците, които
|
||||
могат да се виждат, като А, 7, * и т.н., се възприемат от Емакс като
|
||||
могат да се виждат, като А, 7, * и т.н., се възприемат от Emacs като
|
||||
текст и се вмъкват веднага. Въведете <Return> (клавишът за връщане в
|
||||
началото на реда), за да вмъкнете знак за нов ред.
|
||||
|
||||
Може да изтриете последния знак, който сте въвели, с въвеждане на
|
||||
<Delback>. <Delback> е клавиш от клавиатурата -- същият, който
|
||||
обикновено използвате извън Емакс, за да изтриете последния въведен от
|
||||
обикновено използвате извън Emacs, за да изтриете последния въведен от
|
||||
вас знак. Обикновено е голям клавиш, на няколко реда разстояние от
|
||||
клавиша <Return>, и обикновено е отбелязан с "Delete", "Del" или
|
||||
"Backspace".
|
||||
|
|
@ -359,24 +358,24 @@ bar),
|
|||
>> Въведете <Return>, за да вмъкнете наново знака за нов ред, който
|
||||
изтрихте.
|
||||
|
||||
Запомнете, че на повечето команди на Емакс може да бъде зададен брояч
|
||||
Запомнете, че на повечето команди на Emacs може да бъде зададен брояч
|
||||
на повторенията; това включва вмъкването на текстови знаци.
|
||||
Повтарянето на текстов знак го вмъква няколко пъти.
|
||||
|
||||
>> Опитайте това сега -- въведете C-u 8 *, за да вмъкнете ********.
|
||||
|
||||
Сега вие сте научили най-основните начини за въвеждане на нещо в Емакс
|
||||
Сега вие сте научили най-основните начини за въвеждане на нещо в Emacs
|
||||
и поправяне на грешки. Можете също така да изтривате думи или редове.
|
||||
Ето обобщение на изтриващите действия:
|
||||
|
||||
<Delback> изтриване на знака точно преди курсора
|
||||
C-d изтриване на знака точно след курсора
|
||||
<Delback> Изтриване на знака точно преди курсора
|
||||
C-d Изтриване на знака точно след курсора
|
||||
|
||||
M-<Delback> изтриване на думата непосредствено преди курсора
|
||||
M-d изтриване на думата след курсора
|
||||
M-<Delback> Изтриване на думата непосредствено преди курсора
|
||||
M-d Изтриване на думата след курсора
|
||||
|
||||
C-k изтриване от мястото на курсора до края на реда
|
||||
M-k изтриване до края на текущото изречение
|
||||
C-k Изтриване от мястото на курсора до края на реда
|
||||
M-k Изтриване до края на текущото изречение
|
||||
|
||||
Забележете, че <Delback> и C-d, сравнени с M-<Delback> и M-d,
|
||||
разширяват подобието, започнато от C-f и M-f (добре, <Delback> не е
|
||||
|
|
@ -386,12 +385,12 @@ M-k
|
|||
|
||||
Можете също да премахнете всяка част от буфера с един универсален
|
||||
начин. Придвижете се до единия край на частта и въведете C-@ или
|
||||
C-интервал (което и да е от двете). Придвижете се до другия край на
|
||||
частта и въведете C-w. Това ще изреже целия текст между тези два
|
||||
края.
|
||||
C-<SPC> (което и да е от двете). (<SPC> е клавишът интервал.)
|
||||
Придвижете се до другия край на частта и въведете C-w. Това ще изреже
|
||||
целия текст между тези два края.
|
||||
|
||||
>> Придвижете курсора до знака "М" в началото на предишния абзац.
|
||||
>> Въведете C-интервал. Емакс трябва да изведе съобщение "Mark set" в
|
||||
>> Въведете C-<SPC>. Emacs трябва да изведе съобщение "Mark set" в
|
||||
долния край на екрана.
|
||||
>> Придвижете курсора до буквата "р" в "край" на втория ред от абзаца.
|
||||
>> Въведете C-w. Това ще изреже текста, започващ от "М" и завършващ
|
||||
|
|
@ -421,9 +420,9 @@ C-k
|
|||
Връщането обратно на текст се нарича "вмъкване". (Мислете за него
|
||||
като за изваждане обратно, или дръпване обратно, на текст, който е бил
|
||||
изрязан.) Можете да вмъквате изрязания текст или на същото място,
|
||||
откъдето е бил премахнат, или на друго място в буфера, даже и в
|
||||
различен файл. Можете да вмъквате един и същ текст няколко пъти; това
|
||||
прави няколко копия от него.
|
||||
откъдето е бил премахнат, или на друго място в редактирания текст,
|
||||
даже и в различен файл. Можете да вмъквате един и същ текст няколко
|
||||
пъти; това прави няколко копия от него.
|
||||
|
||||
Командата за вмъкване е C-y. Тя вмъква наново последния изрязан текст
|
||||
в текущото място на курсора.
|
||||
|
|
@ -502,25 +501,25 @@ C_-
|
|||
---------
|
||||
|
||||
За да направите текста, който редактирате, постоянен, трябва да го
|
||||
сложите във файл. В противен случай той ще изчезне, когато Емакс
|
||||
сложите във файл. В противен случай той ще изчезне, когато Emacs
|
||||
приключи. За да сложите вашия текст във файл, трябва да "намерите"
|
||||
файла преди да въвеждате текст. (Това също се нарича "посещаване" на
|
||||
файла.)
|
||||
|
||||
Намиране на файл означава, че виждате съдържанието му в Емакс. В
|
||||
Намиране на файл означава, че виждате съдържанието му в Emacs. В
|
||||
много случаи това е като да редактирате самия файл. Обаче промените,
|
||||
които правите, използвайки Емакс, не остават постоянни, докато не
|
||||
които правите, използвайки Emacs, не остават постоянни, докато не
|
||||
"запишете" файла. Това е така, за да се предотврати оставянето на
|
||||
полупроменен файл в системата, когато не искате това. Дори когато
|
||||
записвате, Емакс оставя началния файл под променено име, в случай, че
|
||||
записвате, Emacs оставя началния файл под променено име, в случай, че
|
||||
по-късно решите, че вашите промени са били грешка.
|
||||
|
||||
Ако погледнете в дъното на екрана, ще видите ред, който започва и
|
||||
завършва с тирета и започва с "-R:-- TUTORIAL.bg" или нещо подобно.
|
||||
Тази част от екрана показва името на файла, който сте посетили. Точно
|
||||
сега вие сте посетили файл, наречен "TUTORIAL.bg", който е вашето
|
||||
лично копие-чернова на Емакс въведението. Когато намерите файл в
|
||||
Емакс, името на този файл ще се появи на същото място.
|
||||
лично копие-чернова на Emacs въведението. Когато намерите файл в
|
||||
Emacs, името на този файл ще се появи на същото място.
|
||||
|
||||
Особеност на командата за намиране на файл е, че трябва да кажете
|
||||
името на файла, който искате. Ние го наричаме "четене на аргумент от
|
||||
|
|
@ -529,10 +528,10 @@ C_-
|
|||
|
||||
C-x C-f Намиране на файл
|
||||
|
||||
Емакс ви подканя да въведете името на файла. Името на файла, което
|
||||
Emacs ви подканя да въведете името на файла. Името на файла, което
|
||||
напишете, се появява в дъното на екрана. Редът в дъното на екрана се
|
||||
нарича минибуфер, когато се използва за този вид вход. Можете да
|
||||
използвате обикновените команди за редактиране на Емакс, за да
|
||||
използвате обикновените команди за редактиране на Emacs, за да
|
||||
редактирате името на файла.
|
||||
|
||||
Когато въвеждате името на файла (или какъвто и да е вход в
|
||||
|
|
@ -553,12 +552,12 @@ C_-
|
|||
|
||||
C-x C-s Запазване на файла
|
||||
|
||||
Това копира текста от Емакс във файла. Първия път, когато това се
|
||||
направи, Емакс преименува началния файл с ново име, така че той да не
|
||||
Това копира текста от Emacs във файла. Първия път, когато това се
|
||||
направи, Emacs преименува началния файл с ново име, така че той да не
|
||||
се изгуби. Новото име се построява с добавяне на "~" в края на името
|
||||
на началния файл.
|
||||
|
||||
Когато запазването е свършило, Емакс извежда името на файла, който е
|
||||
Когато запазването е свършило, Emacs извежда името на файла, който е
|
||||
бил записан. Трябва да записвате достатъчно често, така че да не
|
||||
изгубите много работа, ако системата се срине по някаква причина.
|
||||
|
||||
|
|
@ -566,19 +565,19 @@ C_-
|
|||
Това трябва да изведе "Wrote ...TUTORIAL.bg" в дъното на екрана.
|
||||
|
||||
ЗАБЕЛЕЖКА: На някои системи въвеждането на C-x C-s ще замръзи екрана и
|
||||
вие няма да виждате повече изход от Емакс. Това показва, че една
|
||||
вие няма да виждате повече изход от Emacs. Това показва, че една
|
||||
"способност" на операционната система, наричана "управление на потока"
|
||||
(flow control), е прихванала C-s и не го пропуска към Емакс. За да
|
||||
(flow control), е прихванала C-s и не го пропуска към Emacs. За да
|
||||
размразите екрана, въведете C-q. Тогава вижте секцията "Спонтанно
|
||||
включване на постъпково търсене" (Spontaneous Entry to Incremental
|
||||
Search) в ръководството на Емакс за съвет как да се справите с тази
|
||||
Search) в ръководството на Emacs за съвет как да се справите с тази
|
||||
"способност".
|
||||
|
||||
Може да намерите съществуващ файл, да го разгледате и да го
|
||||
редактирате. Можете също да намерите файл, който не съществува. Това
|
||||
е начинът за създаване на нови файлове в Емакс: намирате файла, който
|
||||
е начинът за създаване на нови файлове в Emacs: намирате файла, който
|
||||
ще бъде в началото празен, и тогава започвате вмъкването на текста за
|
||||
файла. Когато говорите за "записване" на файл, Емакс всъщност ще
|
||||
файла. Когато говорите за "записване" на файл, Emacs всъщност ще
|
||||
създаде файла с текста, който сте въвели. Оттам нататък може да
|
||||
считате, че редактирате вече съществуващ файл.
|
||||
|
||||
|
|
@ -586,9 +585,9 @@ Search)
|
|||
* БУФЕРИ
|
||||
--------
|
||||
|
||||
Ако намерите втори файл с C-x C-f, първият файл остава в Емакс.
|
||||
Ако намерите втори файл с C-x C-f, първият файл остава в Emacs.
|
||||
Можете да превключите обратно към него, като го намерите пак с C-x
|
||||
C-f. По този начин може да получите доста на брой файлове в Емакс.
|
||||
C-f. По този начин може да получите доста на брой файлове в Emacs.
|
||||
|
||||
>> Създайте файл с име "foo", въвеждайки C-x C-f foo <Return>.
|
||||
Вмъкнете малко текст, редактирайте го и запазете "foo" с въвеждане
|
||||
|
|
@ -596,16 +595,16 @@ C-f.
|
|||
Накрая въведете C-x C-f TUTORIAL.bg <Return>, за да се върнете
|
||||
обратно във въведението.
|
||||
|
||||
Емакс запазва текста на всеки файл в обект, наричан "буфер".
|
||||
Намирането на файл прави нов буфер в Емакс. За да видите списък на
|
||||
буферите, които в момента съществуват във вашия Емакс, въведете
|
||||
Emacs запазва текста на всеки файл в обект, наричан "буфер".
|
||||
Намирането на файл прави нов буфер в Emacs. За да видите списък на
|
||||
буферите, които в момента съществуват във вашия Emacs, въведете
|
||||
|
||||
C-x C-b Показване на буферите
|
||||
|
||||
>> Опитайте C-x C-b сега.
|
||||
|
||||
Вижте как всеки буфер има име, а понякога и име на файл за файла,
|
||||
чието съдържание държи. ВСЕКИ текст, който виждате в Емакс прозорец,
|
||||
чието съдържание държи. ВСЕКИ текст, който виждате в Emacs прозорец,
|
||||
е винаги част от някакъв буфер.
|
||||
|
||||
>> Въведете C-x 1, за да махнете списъка с буферите.
|
||||
|
|
@ -627,13 +626,13 @@ C-f.
|
|||
Списъкът с буферите, който правите с C-x C-b, винаги ви показва името
|
||||
на всеки буфер.
|
||||
|
||||
ВСЕКИ текст, който виждате в Емакс прозорец, е винаги част от някакъв
|
||||
ВСЕКИ текст, който виждате в Emacs прозорец, е винаги част от някакъв
|
||||
буфер. Някои буфери не съответстват на файлове. Например буферът,
|
||||
именуван "*Buffer List*", не съответства на файл. Това е буферът,
|
||||
който съдържа списъка с буферите, които сте направили с C-x C-b.
|
||||
Буферът, именуван "*Messages*", също не съответства на файл; той
|
||||
съдържа съобщенията, които се появяват в дъното на екрана по време на
|
||||
Емакс сесията.
|
||||
Emacs сесията.
|
||||
|
||||
>> Въведете C-x b *Messages* <Return>, за да видите буфера със
|
||||
съобщенията. След това въведете C-x C-b TUTORIAL <Return>, за да
|
||||
|
|
@ -641,7 +640,7 @@ C-f.
|
|||
|
||||
Ако направите промени в текста на един файл и тогава намерите друг
|
||||
файл, това няма да запише първия файл. Неговите промени остават вътре
|
||||
в Емакс, в буфера на файла. Създаването или редактирането на буфера
|
||||
в Emacs, в буфера на файла. Създаването или редактирането на буфера
|
||||
на втория файл няма ефект върху буфера на първия файл. Това е много
|
||||
полезно, но също означава, че се нуждаете от удобен начин да запазите
|
||||
буфера на първия файл. Ще е неудобно да превключите обратно с C-x
|
||||
|
|
@ -660,8 +659,8 @@ C-x s
|
|||
* РАЗШИРЯВАНЕ НА НАБОРА КОМАНДИ
|
||||
-------------------------------
|
||||
|
||||
Има много, много повече команди на Емакс, отколкото могат да се сложат
|
||||
на всички контролни и мета знаци. Емакс заобикаля това с X (eXtended)
|
||||
Има много, много повече команди на Emacs, отколкото могат да се сложат
|
||||
на всички контролни и мета знаци. Emacs заобикаля това с X (eXtended)
|
||||
командата. Това става по два начина:
|
||||
|
||||
C-x Знаково разширяване. Последвано от един знак.
|
||||
|
|
@ -669,49 +668,49 @@ C-x s
|
|||
име.
|
||||
|
||||
Тези команди са общо взето полезни, но по-малко, отколкото командите,
|
||||
които досега сте научили. Вече видяхте две от тях: командите върху
|
||||
файлове C-x C-f за намиране (Find) и C-x C-s за запазване (Save).
|
||||
Друг пример е командата за край на Емакс сесията -- това е командата
|
||||
C-x C-c. (Не се безпокойте, че може да изгубите всички промени, които
|
||||
сте направили; C-x C-c предлага да запази всеки променен файл, преди
|
||||
да премахне Емакс.)
|
||||
които досега сте научили. Вече видяхте няколко от тях: например
|
||||
командите върху файлове C-x C-f за намиране (Find) и C-x C-s за
|
||||
запазване (Save). Друг пример е командата за край на Emacs сесията --
|
||||
това е командата C-x C-c. (Не се безпокойте, че може да изгубите
|
||||
всички промени, които сте направили; C-x C-c предлага да запази всеки
|
||||
променен файл, преди да премахне Emacs.)
|
||||
|
||||
C-z е командата за излизане от Емакс *временно* -- така че да можете
|
||||
да се върнете към същата Емакс сесия по-късно.
|
||||
C-z е командата за излизане от Emacs *временно* -- така че да можете
|
||||
да се върнете към същата Emacs сесия по-късно.
|
||||
|
||||
На системи, които позволяват това, C-z "изоставя" (suspend) Емакс,
|
||||
т.е. връща към обвивката, но не разрушава Емакс. В повечето обвивки
|
||||
можете да продължите Емакс сесията с командата "fg" или с "%emacs".
|
||||
На системи, които позволяват това, C-z "изоставя" (suspend) Emacs,
|
||||
т.е. връща към обвивката, но не разрушава Emacs. В повечето обвивки
|
||||
можете да продължите Emacs сесията с командата "fg" или с "%emacs".
|
||||
|
||||
На системи, които не позволяват изоставяне, C-z създава нова
|
||||
подобвивка, която върви под Емакс, за да ви даде шанс да стартирате
|
||||
други програми и да се върнете към Емакс след това; това не е истинско
|
||||
"излизане" от Емакс. В този случай командата на обвивката "exit" е
|
||||
обикновеният начин да се върнете обратно към Емакс от подобвивката.
|
||||
подобвивка, която върви под Emacs, за да ви даде шанс да стартирате
|
||||
други програми и да се върнете към Emacs след това; това не е истинско
|
||||
"излизане" от Emacs. В този случай командата на обвивката "exit" е
|
||||
обикновеният начин да се върнете обратно към Emacs от подобвивката.
|
||||
|
||||
Моментът да използвате C-x C-c е, когато искате да излезете от
|
||||
системата. Това е и правилната команда за излизане, когато Емакс е
|
||||
системата. Това е и правилната команда за излизане, когато Emacs е
|
||||
извикан от пощенска програма или други странични програми, тъй като те
|
||||
може и да не знаят как да се справят с изоставянето на Емакс. При
|
||||
може и да не знаят как да се справят с изоставянето на Emacs. При
|
||||
обикновени обстоятелства, обаче, ако не сте тръгнали да излизате от
|
||||
системата, по-добре е да изоставите Емакс с C-z, вместо да излизате от
|
||||
Емакс.
|
||||
системата, по-добре е да изоставите Emacs с C-z, вместо да излизате от
|
||||
Emacs.
|
||||
|
||||
Има много команди C-x. Ето списък на тези, които сте научили:
|
||||
|
||||
C-x C-f Намиране на файл.
|
||||
C-x C-s Запазване на файл.
|
||||
C-x C-b Списък на буферите.
|
||||
C-x C-c Излизане от Емакс.
|
||||
C-x 1 Изтриване на всички прозорци освен един.
|
||||
C-x u Отмяна.
|
||||
C-x C-f Намиране на файл
|
||||
C-x C-s Запазване на файл
|
||||
C-x C-b Списък на буферите
|
||||
C-x C-c Излизане от Emacs
|
||||
C-x 1 Изтриване на всички прозорци, освен един
|
||||
C-x u Отмяна
|
||||
|
||||
Именуваните разширени команди са команди, които се използват даже още
|
||||
по-рядко, или команди, които се използват само в определени режими.
|
||||
Пример е командата replace-string, която заменя глобално един низ с
|
||||
друг. Когато въведете M-x, Емакс ви подсказва в дъното на екрана с
|
||||
друг. Когато въведете M-x, Emacs ви подсказва в дъното на екрана с
|
||||
M-x и вие трябва да въведете името на командата, в този случай
|
||||
"replace-string". Просто въведете "repl s<TAB>" и Емакс ще завърши
|
||||
"replace-string". Просто въведете "repl s<TAB>" и Emacs ще завърши
|
||||
името. (<TAB> е клавишът Tab, обикновено намиращ се над клавиша
|
||||
CapsLock или клавиша Shift близо до левия край на клавиатурата.)
|
||||
Завършете името на командата с <Return>.
|
||||
|
|
@ -735,11 +734,11 @@ CapsLock
|
|||
|
||||
Когато сте направили промени във файл, но още не сте го запазили, те
|
||||
могат да бъдат загубени, ако компютърът внезапно се изключи. За да ви
|
||||
предпази от такива ситуации, Емакс периодично запазва "автоматично
|
||||
предпази от такива ситуации, Emacs периодично запазва "автоматично
|
||||
запазван" файл за всеки файл, който редактирате. Името на автоматично
|
||||
запазвания файл има # в началото и в края; например, ако вашият файл е
|
||||
с име "hello.c", името на неговия автоматично запазван файл ще бъде
|
||||
"#hello.c#". Когато запазвате файл по обикновения начин, Емакс
|
||||
"#hello.c#". Когато запазвате файл по обикновения начин, Emacs
|
||||
изтрива неговия автоматично записван файл.
|
||||
|
||||
Ако компютърът зависне, може да възстановите вашата автоматично
|
||||
|
|
@ -753,7 +752,7 @@ M-x recover file<Return>.
|
|||
* ЕХО ОБЛАСТТА
|
||||
--------------
|
||||
|
||||
Ако Емакс види, че въвеждате многознакови команди бавно, ще ви ги
|
||||
Ако Emacs види, че въвеждате многознакови команди бавно, ще ви ги
|
||||
покаже в дъното на екрана, в област, наричана "ехо област". Ехо
|
||||
областта обхваща последния ред от екрана.
|
||||
|
||||
|
|
@ -764,18 +763,18 @@ M-x recover file<Return>.
|
|||
Редът точно над ехо областта се нарича "ред на режима" (mode line).
|
||||
Той показва нещо като:
|
||||
|
||||
-R:** TUTORIAL.bg (Fundamental)--L670--58%----------------
|
||||
-D:** TUTORIAL.bg 63% L749 (Fundamental)---------------------
|
||||
|
||||
Този ред дава полезна информация за състоянието на Емакс и текста,
|
||||
Този ред дава полезна информация за състоянието на Emacs и текста,
|
||||
който редактирате.
|
||||
|
||||
Вече знаете какво означава името на файла -- това е файлът, който сте
|
||||
намерили. -NN%-- показва вашата текуща позиция в текста; това
|
||||
означава, че NN процента от текста е над върха на екрана. Ако
|
||||
началото на файла е на екрана, ще се показва --Top-- (връх) вместо
|
||||
--00%--. Ако края на файла е на екрана, ще се показва --Bot-- (дъно).
|
||||
Ако гледате текст, който е толкова малък, че се показва изцяло на
|
||||
екрана, редът на режима ще изведе --All--.
|
||||
намерили. NN% показва вашата текуща позиция в текста; това означава,
|
||||
че NN процента от текста е над върха на екрана. Ако началото на файла
|
||||
е на екрана, ще се показва --Top-- (връх) вместо --00%--. Ако краят
|
||||
на файла е на екрана, ще се показва --Bot-- (дъно). Ако гледате
|
||||
текст, който е толкова малък, че се показва изцяло на екрана, редът на
|
||||
режима ще изведе --All--.
|
||||
|
||||
Знакът L и цифрите показват мястото по друг начин: това е номерът на
|
||||
текущия ред на точката.
|
||||
|
|
@ -789,7 +788,7 @@ M-x recover file<Return>.
|
|||
Fundamental (Основен), който използвате в момента. Това е пример за
|
||||
"главен режим" (major mode).
|
||||
|
||||
Емакс има много главни режими. Някои от тях са предвидени за
|
||||
Emacs има много главни режими. Някои от тях са предвидени за
|
||||
редактиране на различни езици и/или видове текст, като например режим
|
||||
Лисп, режим Текст и други. Във всеки един момент от време точно един
|
||||
главен режим е активен и неговото име може винаги да бъде намерено в
|
||||
|
|
@ -808,7 +807,7 @@ Fundamental (
|
|||
|
||||
>> Въведете M-x text mode<Return>.
|
||||
|
||||
Не се безпокойте, никоя от Емакс командите, които сте научили, няма да
|
||||
Не се безпокойте, никоя от Emacs командите, които сте научили, няма да
|
||||
се промени по някакъв съществен начин. Но може да забележите, че M-f
|
||||
и M-b сега възприемат апострофите (') като част от думите. Преди
|
||||
това, в основния режим (Fundamental), M-f и M-b се възприемаха като
|
||||
|
|
@ -837,7 +836,7 @@ m.
|
|||
|
||||
Един главен режим, който е много полезен, особено за редактиране на
|
||||
текст на естествен език, е режимът на автоматично запълване (Auto Fill
|
||||
mode). Когато този режим е включен, Емакс автоматично разделя реда
|
||||
mode). Когато този режим е включен, Emacs автоматично разделя реда
|
||||
при мястото между думите, когато вмъквате текст и направите ред, който
|
||||
е твърде дълъг.
|
||||
|
||||
|
|
@ -857,7 +856,7 @@ auto fill mode<Return>.
|
|||
аргумент на командата.
|
||||
|
||||
>> Въведете C-x f с аргумент 20. (C-u 2 0 C-x f).
|
||||
Сега въведете някакъв текст и вижте как Емакс запълва редовете с по
|
||||
Сега въведете някакъв текст и вижте как Emacs запълва редовете с по
|
||||
не повече от 20 знака. После върнете обратно границата на 70,
|
||||
използвайки C-x f отново.
|
||||
|
||||
|
|
@ -872,12 +871,12 @@ auto fill mode<Return>.
|
|||
* ТЪРСЕНЕ
|
||||
---------
|
||||
|
||||
Емакс може да извършва търсения на низове (това са последователности
|
||||
Emacs може да извършва търсения на низове (това са последователности
|
||||
от знаци или думи) или напред в текста, или назад в него. Търсенето
|
||||
на низ е придвижваща курсора команда; тя премества курсора на
|
||||
следващото място, където се среща низът.
|
||||
|
||||
Командата за търсене на Емакс се различава от командата за търсене на
|
||||
Командата за търсене на Emacs се различава от командата за търсене на
|
||||
повечето редактори по това, че тя е "постъпкова". Това означава, че
|
||||
търсенето се извършва още докато въвеждате текста, който търсите.
|
||||
|
||||
|
|
@ -885,7 +884,7 @@ auto fill mode<Return>.
|
|||
търсене назад. НО ПОЧАКАЙТЕ! Не ги пробвайте сега.
|
||||
|
||||
Когато въведете C-s, ще забележите, че низът "I-search" се появява
|
||||
като подсказка в ехо областта. Това ви казва, че Емакс е в това,
|
||||
като подсказка в ехо областта. Това ви казва, че Emacs е в това,
|
||||
което се нарича постъпково търсене, чакайки ви да въвеждате текста,
|
||||
който искате да търсите. <Return> приключва търсенето.
|
||||
|
||||
|
|
@ -897,19 +896,19 @@ auto fill mode<Return>.
|
|||
>> Сега въведете <Delback> три пъти и вижте как се придвижва курсора.
|
||||
>> Въведете <Return>, за да прекратите търсенето.
|
||||
|
||||
Забелязахте ли какво стана? Емакс, когато търси постъпково, се опитва
|
||||
Забелязахте ли какво стана? Emacs, когато търси постъпково, се опитва
|
||||
да намери следващото съвпадение на низа, който се въвежда. За да
|
||||
отидете на следващото съвпадение на "търсне", просто отново въведете
|
||||
C-s. Ако няма такова съвпадение, Емакс бибипва и ви казва, че
|
||||
C-s. Ако няма такова съвпадение, Emacs бибипва и ви казва, че
|
||||
търсенето е "провалено" (failing). C-g също прекратява търсенето.
|
||||
|
||||
ЗАБЕЛЕЖКА: На някои системи въвеждането на C-s ще замрази екрана и вие
|
||||
няма да може да видите повече реакция от Емакс. Това показва, че
|
||||
няма да може да видите повече реакция от Emacs. Това показва, че
|
||||
"способност" на операционната система, наречена "управление на потока"
|
||||
(flow control), е прихванала C-s и не го пропуска до Емакс. За да
|
||||
(flow control), е прихванала C-s и не го пропуска до Emacs. За да
|
||||
размразите екрана, въведете C-q. Тогава вижте секцията "Спонтанно
|
||||
включване на постъпковото търсене" (Spontaneous Entry to Incremental
|
||||
Search) в ръководството на Емакс за съвет как да се справите с тази
|
||||
Search) в ръководството на Emacs за съвет как да се справите с тази
|
||||
"способност".
|
||||
|
||||
Ако сте в средата на постъпково търсене и въведете <Delback>, ще
|
||||
|
|
@ -931,9 +930,9 @@ C-s
|
|||
|
||||
|
||||
* МНОЖЕСТВО ПРОЗОРЦИ
|
||||
----------------
|
||||
--------------------
|
||||
|
||||
Една от привлекателните способности на Емакс е тази, че може да
|
||||
Една от привлекателните способности на Emacs е тази, че може да
|
||||
гледате повече от един прозорец на екрана в даден момент от време.
|
||||
|
||||
>> Придвижете курсора до този ред и въведете C-u 0 C-l (това е
|
||||
|
|
@ -944,7 +943,7 @@ C-s
|
|||
остава на по-горния прозорец.
|
||||
|
||||
>> Въведете C-M-v, за да скролирате долния прозорец. (Ако нямате
|
||||
истински клавиш META, въведете ESC C-v.)
|
||||
истински клавиш META, въведете <ESC> C-v.)
|
||||
|
||||
>> Въведете C-x o ("o" от "other" -- "друг"), за да придвижите
|
||||
курсора в долния прозорец.
|
||||
|
|
@ -973,10 +972,10 @@ C-M-v
|
|||
първи", защото и двата клавиша действат, модифицирайки знака, който
|
||||
сте въвели.
|
||||
|
||||
Ако нямате истински клавиш META и използвате ESC вместо това, редът
|
||||
има значение: трябва да въвеждате ESC, последван от CONTROL-v, защото
|
||||
CONTROL-ESC v няма да работи. Това е така, защото ESC е собствен
|
||||
знак, а не модификатор.
|
||||
Ако нямате истински клавиш META и използвате <ESC> вместо това, редът
|
||||
има значение: трябва да въвеждате <ESC>, последван от CONTROL-v,
|
||||
защото CONTROL-<ESC> v няма да работи. Това е така, защото <ESC> е
|
||||
собствен знак, а не модификатор.
|
||||
|
||||
>> Въведете C-x 1 (в горния прозорец), за да махнете долния прозорец.
|
||||
|
||||
|
|
@ -1009,13 +1008,13 @@ CONTROL-ESC v
|
|||
на главния режим. Например, може да видите [(Fundamental)] вместо
|
||||
(Fundamental).
|
||||
|
||||
За да се махнете от вложеното ниво на редактиране, въведете ESC ESC
|
||||
ESC. Това е обща команда за "излизане". Може и да я използвате за
|
||||
махане (скриване) на допълнителни прозорци, както и за да се махнете
|
||||
от минибуфера.
|
||||
За да се махнете от вложеното ниво на редактиране, въведете <ESC>
|
||||
<ESC> <ESC>. Това е обща команда за "излизане". Може и да я
|
||||
използвате за махане (скриване) на допълнителни прозорци, както и за
|
||||
да се махнете от минибуфера.
|
||||
|
||||
>> Въведете M-x, за да влезете в минибуфер; тогава въведете ESC ESC
|
||||
ESC, за да излезете.
|
||||
>> Въведете M-x, за да влезете в минибуфер; тогава въведете <ESC> <ESC>
|
||||
<ESC>, за да излезете.
|
||||
|
||||
Не можете да използвате C-g, за да излезете от вложено ниво на
|
||||
редактиране. Това е така, защото C-g се използва за прекратяване на
|
||||
|
|
@ -1026,16 +1025,16 @@ ESC.
|
|||
----------------------------------
|
||||
|
||||
В това въведение се опитахме да осигурим достатъчно информация, за да
|
||||
започнете да използвате Емакс. Има толкова много още в Емакс, че не е
|
||||
започнете да използвате Emacs. Има толкова много още в Emacs, че не е
|
||||
възможно то да бъде обяснено всичкото тук. Обаче може да поискате да
|
||||
научите повече за Емакс, тъй като той притежава още много полезни
|
||||
способности. Емакс има команди за четене на документацията на Емакс
|
||||
научите повече за Emacs, тъй като той притежава още много полезни
|
||||
способности. Emacs има команди за четене на документацията на Emacs
|
||||
командите. Тези "помощни" команди всички започват със знака
|
||||
CONTROL-h, който се нарича "знакът за помощ".
|
||||
|
||||
За да използвате възможностите на тази помощ, въведете знака C-h и
|
||||
след това знака, казващ какъв вид помощ искате. Ако НАИСТИНА сте се
|
||||
изгубили, въведете C-h ? и Емакс ще ви каже с какво може да ви
|
||||
изгубили, въведете C-h ? и Emacs ще ви каже с какво може да ви
|
||||
помогне. Ако сте въвели C-h и решите, че не се нуждаете от помощ,
|
||||
просто въведете C-g, за да я прекратите.
|
||||
|
||||
|
|
@ -1047,7 +1046,7 @@ CONTROL-h,
|
|||
|
||||
Най-основното помощно средство е C-h c. Въведете C-h, знака c и
|
||||
команден знак или последователност от знаци, образуващи команда;
|
||||
тогава Емакс ще изведе много кратко описание на командата.
|
||||
тогава Emacs ще изведе много кратко описание на командата.
|
||||
|
||||
>> Type C-h c C-p.
|
||||
|
||||
|
|
@ -1057,7 +1056,7 @@ CONTROL-h,
|
|||
(C-p изпълнява командата предишен-ред)
|
||||
|
||||
Това ви казва "името на функцията". Имената на функциите се използват
|
||||
най-вече за настройване и разширяване на Емакс. Но тъй като имената
|
||||
най-вече за настройване и разширяване на Emacs. Но тъй като имената
|
||||
на функциите са избрани така, че да показват какво прави командата, те
|
||||
могат да служат и за много кратка документация -- достатъчна, за да ви
|
||||
припомни команди, които вече сте учили.
|
||||
|
|
@ -1071,7 +1070,7 @@ c.
|
|||
>> Въведете C-h k C-p.
|
||||
|
||||
Това извежда документацията на функцията, както и нейното име, в
|
||||
отделен Емакс прозорец. Когато я прочетете, въведете C-x 1, за да
|
||||
отделен Emacs прозорец. Когато я прочетете, въведете C-x 1, за да
|
||||
махнете помощния текст. Не е нужно да правите това точно сега. Може
|
||||
да редактирате, докато се обръщате към помощния текст за справка, и
|
||||
след това да въведете C-x 1.
|
||||
|
|
@ -1082,14 +1081,14 @@ c.
|
|||
функцията.
|
||||
|
||||
>> Опитайте с въвеждане на C-h f previous-line<Return>.
|
||||
Това извежда цялата информация, която Емакс знае за функцията,
|
||||
Това извежда цялата информация, която Emacs знае за функцията,
|
||||
която осъществява командата C-p.
|
||||
|
||||
Подобна команда, C-h v, извежда документацията на променливите, които
|
||||
може да променяте, за да настройвате поведението на Емакс. Трябва да
|
||||
въведете името на променливата, когато Емакс ви подскаже това.
|
||||
може да променяте, за да настройвате поведението на Emacs. Трябва да
|
||||
въведете името на променливата, когато Emacs ви подскаже това.
|
||||
|
||||
C-h a Команда Апропос. Въведете ключова дума и Емакс ще
|
||||
C-h a Команда Апропос. Въведете ключова дума и Emacs ще
|
||||
покаже списък на всички команди, чието име съдържа
|
||||
тази ключова дума. Тези команди могат всички да бъдат
|
||||
извикани чрез META-x. За някои команди командата
|
||||
|
|
@ -1112,18 +1111,18 @@ C-f,
|
|||
специален буфер, наричан "*info*", където може да
|
||||
четете ръководствата на инсталираните във вашата
|
||||
система пакети. Въведете m emacs <Return>, за да
|
||||
четете ръководството на Емакс. Ако никога преди това
|
||||
не сте използвали Info, въведете ? и Емакс ще включи
|
||||
четете ръководството на Emacs. Ако никога преди това
|
||||
не сте използвали Info, въведете ? и Emacs ще включи
|
||||
въведение във възможностите на режима Инфо. Веднъж
|
||||
след като сте преминали това въведение, трябва да се
|
||||
консултирате с Емакс Инфо ръководството като ваша
|
||||
консултирате с Emacs Инфо ръководството като ваша
|
||||
основна документация.
|
||||
|
||||
|
||||
* ОЩЕ ВЪЗМОЖНОСТИ
|
||||
-----------------
|
||||
|
||||
Може да научите повече за Емакс с четене на неговото ръководство, или
|
||||
Може да научите повече за Emacs с четене на неговото ръководство, или
|
||||
като книга, или в Инфо (използвайте менюто помощ (Help) или въведете
|
||||
F10 h r). Две възможности, които може да желаете в началото, са
|
||||
довършване (completion), което спестява писане, и dired, който
|
||||
|
|
@ -1131,26 +1130,26 @@ F10 h r).
|
|||
|
||||
Довършването е начин да избягвате ненужно писане. Например, ако
|
||||
искате да превключите към буфера *Messages*, може да въведете C-x b
|
||||
*M<Tab> и Емакс ще запълни останалата част от името на буфера,
|
||||
*M<Tab> и Emacs ще запълни останалата част от името на буфера,
|
||||
доколкото може да се определи от това, което сте въвели. Довършването
|
||||
е описано в Инфо-ръководството на Емакс в страницата "Довършване"
|
||||
е описано в Инфо-ръководството на Emacs в страницата "Довършване"
|
||||
("Completion").
|
||||
|
||||
Dired ви позволява да гледате списъка от файлове в директория (и като
|
||||
възможност: нейните поддиректории), да се придвижвате в този списък,
|
||||
да посещавате, преименувате, изтривате и изобщо действате върху
|
||||
файловете. Dired е описан в Инфо-ръководството на Емакс в страницата
|
||||
файловете. Dired е описан в Инфо-ръководството на Emacs в страницата
|
||||
"Dired".
|
||||
|
||||
Ръководството на Емакс описва още много други възможности на
|
||||
Ръководството на Emacs описва още много други възможности на
|
||||
редактора.
|
||||
|
||||
|
||||
* ЗАКЛЮЧЕНИЕ
|
||||
------------
|
||||
|
||||
Запомнете: за да излезете безвъзвратно от Емакс, използвайте C-x C-c.
|
||||
За да излезете временно в обвивка, така че да се върнете в Емакс
|
||||
Запомнете: за да излезете безвъзвратно от Emacs, използвайте C-x C-c.
|
||||
За да излезете временно в обвивка, така че да се върнете в Emacs
|
||||
по-късно, използвайте C-z.
|
||||
|
||||
Това въведение е предвидено да бъде разбираемо за всички нови
|
||||
|
|
@ -1161,17 +1160,17 @@ Dired
|
|||
* КОПИРАНЕ
|
||||
----------
|
||||
|
||||
Това въведение произлиза от дълга поредица въведения в Емакс,
|
||||
започвайки от едно, написано от Стюърт Кракрафт за началния Емакс.
|
||||
Това въведение произлиза от дълга поредица въведения в Emacs,
|
||||
започвайки от едно, написано от Стюърт Кракрафт за началния Emacs.
|
||||
|
||||
Тази версия на въведението, както и ГНУ Емакс, е защитена с авторски
|
||||
Тази версия на въведението, както и GNU Emacs, е защитена с авторски
|
||||
права и идва с разрешение да разпространявате копия при следните
|
||||
условия:
|
||||
|
||||
This version of the tutorial, like GNU Emacs, is copyrighted, and
|
||||
comes with permission to distribute copies on certain conditions:
|
||||
|
||||
Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation
|
||||
Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation
|
||||
|
||||
Permission is granted to anyone to make or distribute verbatim copies
|
||||
of this document as received, in any medium, provided that the
|
||||
|
|
@ -1184,8 +1183,8 @@ Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation
|
|||
under the above conditions, provided also that they
|
||||
carry prominent notices stating who last altered them.
|
||||
|
||||
Условията за копиране на самия Емакс са по-сложни, но в същия дух.
|
||||
Моля, прочетете файла COPYING и тогава давайте копия на ГНУ Емакс на
|
||||
Условията за копиране на самия Emacs са по-сложни, но в същия дух.
|
||||
Моля, прочетете файла COPYING и тогава давайте копия на GNU Emacs на
|
||||
свои приятели. Помогнете да спрем затвореността на програмите
|
||||
("притежанието"), като използваме, пишем и споделяме свободен софтуер!
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
Emacs 快速指南
|
||||
您正在阅读 Emacs 快速指南( Emacs tutorial )。请见页尾有关复制条件。
|
||||
Emacs 우醵寧켓.
|
||||
Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.
|
||||
|
||||
Emacs 指令通常包含有 CONTROL 键(有时候以 CTRL 或 CTL 来标示)或是
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
tutori疝 k Emacsu
|
||||
tutori疝 k Emacsu.
|
||||
Copyright (c) 1985 Free Software Foundation, Inc; podmínky viz na konci.
|
||||
Do èe¹tiny pøelo¾il Milan Zamazal <pdm@zamazal.org>.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
Einführung in Emacs
|
||||
Einführung in Emacs. (c) 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
Emacs-Befehle beinhalten im allgemeinen die CONTROL-Taste (manchmal
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
tutorial de Emacs
|
||||
Usted esta viendo el tutorial de Emacs. Vea al final las condiciones
|
||||
de copiado. Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software
|
||||
Foundation.
|
||||
Tutorial de Emacs. Vea al final las condiciones de copiado.
|
||||
Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.
|
||||
|
||||
Generalmente los comandos de Emacs involucran la tecla CONTROL
|
||||
(algunas veces llamada CTRL O CTL) o la tecla meta (algunas veces
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
Didacticiel d'Emacs
|
||||
Didacticiel d'Emacs. Voir la fin de ce document pour les conditions.
|
||||
Copyright (c) 1985, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
Esercitazione di Emacs
|
||||
Esercitazione di Emacs. Copyright (c) 2003 Free Software Foundation, Inc.
|
||||
Condizioni d'uso alla fine del file.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
Emacs $BF~Lg%,%$%I$G$9(B
|
||||
$B$"$J$?$,8=:_8+$F$$$k$N$O(B Emacs $BF~Lg%,%$%I$G$9!#%U%!%$%k:G8e$r;2>H$N$3$H!#(B
|
||||
Emacs $BF~Lg%,%$%I$G$9(B.
|
||||
Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.
|
||||
|
||||
Emacs $B$N%3%^%s%I$rF~NO$9$k$K$O!"0lHL$K%3%s%H%m!<%k%-!<!J%-!<%H%C%W$K(B
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
$(C@L8F=:(B(Emacs) $(CAvD'<-@T4O4Y(B
|
||||
$(C@L8F=:(B(Emacs) $(CAvD'<-@T4O4Y(B.
|
||||
$(C@z@[1G(B (c) 1985, 2001 Free Software Foundation, Inc; $(C3!?!4B(B $(C:9;g(B $(CA60G@L(B
|
||||
$(C@V=@4O4Y(B. $(CAv1](B $(C@P0m(B $(C@V4B(B $(C@L(B $(C1[@:(B $(C@L8F=:(B(Emacs) $(CAvD'<-@T4O4Y(B.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
Emacs-inleiding
|
||||
Je leest nu de Emacs-inleiding. De kopieervoorwaarden staan onderaan.
|
||||
Emacs-inleiding. De kopieervoorwaarden staan onderaan.
|
||||
Copyright (c) 1985, 1996, 1997, 2003, 2004, 2005 Free Software Foundation
|
||||
|
||||
De meeste Emacs-commando's gebruiken de CONTROL-toets (soms CTRL of CTL
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
krótki samouczek Emacsa
|
||||
Czytasz właśnie krótki samouczek Emacsa. Copyright (c) 1985, 2001
|
||||
krótki samouczek Emacsa. Copyright (c) 1985, 2001
|
||||
Free Software Foundation, Inc. Szczegóły na końcu pliku.
|
||||
|
||||
Polecenia Emacsa wymagają na ogół wciśnięcia klawisza CONTROL (oznaczanego
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
Tutorial do Emacs
|
||||
Copyright (c) 2004 Free Software Foundation, Inc; Veja no fim as
|
||||
condições.
|
||||
Tutorial do Emacs. Veja no fim as condições para cópia.
|
||||
Copyright (c) 2004, 2005 Free Software Foundation.
|
||||
|
||||
Os comandos do Emacs geralmente envolvem a tecla CONTROL (algumas vezes
|
||||
nomeada CTRL ou CTL) ou a tecla META (algumas vezes nomeada EDIT ou
|
||||
|
|
@ -131,8 +130,8 @@ jeito na dire
|
|||
você pode observar a ação do M-f e M-b de varias lugares dentro e no
|
||||
meio de palavras.
|
||||
|
||||
Observe o paralelismo entre C-f e C-b em uma mão, e M-f e M-b na
|
||||
outra. Muito freqüentemente os caracteres Meta são usados para operações
|
||||
Observe o paralelismo entre C-f e C-b por um lado, e M-f e M-b por outro
|
||||
lado. Muito freqüentemente os caracteres Meta são usados para operações
|
||||
relacionadas com as unidades definidas pela linguagem (palavras,
|
||||
sentenças, parágrafos), enquanto caracteres Control operam nas unidades
|
||||
básicas que são independente do que você está editando (caracteres,
|
||||
|
|
@ -860,7 +859,7 @@ manual do Emacs para uma dica de como lhe dar com esse "recurso".
|
|||
|
||||
Se você estiver no meio de uma pesquisa incremental e digitar <Delete>,
|
||||
você percebera que o ultimo caractere da pesquisa será apagado e a
|
||||
pesquisa voltara para o ultimo lugar da pesquisa. Por instancia, imagine
|
||||
pesquisa voltara para o ultimo lugar da pesquisa. Por exemplo, imagine
|
||||
que você tenha digitado "c", para pesquisar a primeira ocorrência de
|
||||
"c". Agora se você digitar "u", o cursor ira mover para a primeira
|
||||
ocorrência de "cu". Agora digite <Delete>. Isso ira apagar o "u" da
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
tutorialului de Emacs
|
||||
tutorialului de Emacs.
|
||||
Copyright (c) 1998 Free Software Foundation -*-coding: latin-2;-*-
|
||||
Traducere din engleză de Tudor Hulubei <tudor@gnu.org>.
|
||||
Mulţumiri Aidei Hulubei <aida@chang.pub.ro> pentru corecturi şi sugestii.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
учебник Emacs
|
||||
Вы читаете учебник Emacs. Условия копирования в конце файла.
|
||||
ユ゙ナツホノヒ Emacs.
|
||||
Copyright (c) 1985, 1996, 2004 Free Software Foundation, Inc.
|
||||
|
||||
Для управления Emacs обычно используется ключ (сочетание клавиш клавиатуры
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
tútorial k Emacsu
|
||||
tútorial k Emacsu.
|
||||
Copyright (c) 1985 Free Software Foundation, Inc; podmienky pozri na konci.
|
||||
Do češtiny preložil Milan Zamazal <pdm@zamazal.org>, do slovenčiny Miroslav
|
||||
Vaško <zemiak@zoznam.sk>.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
Prvo berilo za Emacs
|
||||
Prvo berilo za Emacs. Pogoji uporabe in raz¹irjanja so navedeni na koncu.
|
||||
Copyright (c) 1985, 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
användarhandledningen till Emacs
|
||||
Detta är den Svenska användarhandledningen till Emacs. I slutet finns
|
||||
kopieringsvillkoren. Copyright (c) 1985, 1996, 1998, 2001, 2002 Free
|
||||
Software Foundation, Inc.
|
||||
användarhandledningen till Emacs. I slutet finns kopieringsvillkoren.
|
||||
Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
Emacs-kommandon innebär ofta användning av kontrolltangenten (vanligen
|
||||
märkt CTRL eller CTL) eller META-tangenten (på vissa tangentbord märkt
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
0,T7h1R9!S0EQ1'0HV1!IR0$Yh10AW1M!RCc0*i10MU1aA!0Jl1(B
|
||||
0,T7h1R9!S0EQ1'0HV1!IR0$Yh10AW1M!RCc0*i10MU1aA!0Jl1(B.
|
||||
,TJ'G90ET1"0JT1708Tl1(B ,T>(B.,TH(B. 2528 ,Tb4B:0CT10IQ17?0CU1+M?05l1aG0Cl1?RG09l1`40*Q19(B (Free Software
|
||||
Foundation, Inc); ,T!0CX13R0HV1!IR`0'Wh1M9d"5M907i1RB:7(B.
|
||||
0,T7h1R9!S0EQ1'0HV1!IR0$Yh10AW1M!RCc0*i10MU1aA!0Jl1(B (Emacs tutorial) ,TM0BYh1c9"3P09Ui1(B.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
Emacs 快速指南(
|
||||
您正在閱讀 Emacs 快速指南( Emacs tutorial )。請見頁尾有關複製條件。
|
||||
Emacs §Ö³t«ü«n¡].
|
||||
Copyright (c) 1985, 1996, 1998, 2001, 2002 Free Software Foundation.
|
||||
|
||||
Emacs 指令通常包含有 CONTROL 鍵(有時候以 CTRL 或 CTL 來標示)或是
|
||||
|
|
|
|||
124
lisp/ChangeLog
124
lisp/ChangeLog
|
|
@ -1,4 +1,108 @@
|
|||
2005-03-31 Kenichi Handa <handa@etlken2>
|
||||
2005-04-02 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* simple.el (visible-mode): Use explicit :group keyword.
|
||||
This changes the group of `visible-mode-hook' from paren-blinking
|
||||
to editing-basics.
|
||||
|
||||
2005-04-02 Sergey Poznyakoff <gray@Mirddin.farlep.net> (tiny change)
|
||||
|
||||
* mail/rmail.el (rmail-parse-url): Bugfix. Parse traditional
|
||||
mailbox specifications as well as URLs.
|
||||
(rmail-insert-inbox-text): Remove unused conditional branches.
|
||||
|
||||
2005-04-01 Jay Belanger <belanger@truman.edu>
|
||||
|
||||
* calc/calc-graph.el (calc-gnuplot-name, calc-gnuplot-plot-command)
|
||||
(calc-gnuplot-print-command): Move definitions to calc.el.
|
||||
|
||||
* calc/calc-embed.el (calc-embedded-announce-formula)
|
||||
(calc-embedded-open-formula, calc-embedded-close-formula)
|
||||
(calc-embedded-open-word, calc-embedded-close-word)
|
||||
(calc-embedded-open-plain, calc-embedded-close-plain)
|
||||
(calc-embedded-open-new-formula, calc-embedded-close-new-formula)
|
||||
(calc-embedded-open-mode, calc-embedded-close-mode):
|
||||
Move definitions to calc.el.
|
||||
|
||||
* calc/calc.el (calc-settings-file, calc-language-alist):
|
||||
Make customizable.
|
||||
(calc-embedded-announce-formula, calc-embedded-open-formula)
|
||||
(calc-embedded-close-formula, calc-embedded-open-word)
|
||||
(calc-embedded-close-word, calc-embedded-open-plain)
|
||||
(calc-embedded-close-plain, calc-embedded-open-new-formula)
|
||||
(calc-embedded-close-new-formula, calc-embedded-open-mode)
|
||||
(calc-embedded-close-mode, calc-gnuplot-name)
|
||||
(calc-gnuplot-plot-command, calc-gnuplot-print-command): Move here
|
||||
from other files and make customizable.
|
||||
|
||||
2005-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* pcvs.el (cvs-temp-buffer, cvs-mode-kill-process, cvs-buffer-check):
|
||||
Use buffer-live-p.
|
||||
(cvs-mode-run): Don't call cvs-update-header here.
|
||||
(cvs-run-process): Call cvs-update-header.
|
||||
Use process properties for cvs-postprocess and cvs-buffer so that
|
||||
the sentinel can behave better if the temp buffer is killed.
|
||||
Use a pipe rather than a tty, to better handle unexpected prompts.
|
||||
(cvs-sentinel): Rewrite. Call cvs-update-header.
|
||||
|
||||
2005-04-01 Andre Spiegel <spiegel@gnu.org>
|
||||
|
||||
* vc-hooks.el (vc-workfile-unchanged-p): Disable mtime check when
|
||||
we go via Tramp or Ange-FTP. Suggested by Kai Grossjohann.
|
||||
|
||||
2005-03-31 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* generic.el (define-generic-mode): Add indentation rule.
|
||||
|
||||
2005-03-31 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* files.el (mode-require-final-newline): Make Custom correctly
|
||||
report a nil value and allow to set it to nil via Custom.
|
||||
Doc fix.
|
||||
|
||||
2005-04-01 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* international/characters.el: Enable the correct case setting for
|
||||
dotless-i and dotted-I.
|
||||
|
||||
2005-04-01 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* ido.el (ido-file-internal): Fall back to non-ido command if
|
||||
initial directory is on slow ftp (or tramp) host.
|
||||
|
||||
2005-03-31 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* emacs-lisp/autoload.el (make-autoload):
|
||||
Handle define-global-minor-mode.
|
||||
|
||||
* emacs-lisp/easy-mmode.el (define-global-minor-mode):
|
||||
Rename from easy-mmode-define-global-mode.
|
||||
(easy-mmode-define-global-mode): Alias for define-global-minor-mode.
|
||||
|
||||
* progmodes/scheme.el (scheme-mode-syntax-table):
|
||||
Update syntax of | and # for two-character comment syntax.
|
||||
|
||||
2005-03-31 Lute Kamstra <lute@gnu.org>
|
||||
|
||||
* emacs-lisp/easy-mmode.el (easy-mmode-define-global-mode)
|
||||
(define-minor-mode): Call custom-current-group at load-time.
|
||||
|
||||
* generic.el (define-generic-mode): Add debug declaration.
|
||||
Add defcustom for the mode hook.
|
||||
(generic-mode-internal): Use run-mode-hooks.
|
||||
|
||||
2005-03-31 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* mouse.el (mouse-1-click-follows-link): Increase to 450 ms.
|
||||
(mouse-fixup-help-message): New defun called by show_help_echo
|
||||
to fixup mouse-2 prefix in help messages when applicable.
|
||||
|
||||
* tooltip.el (tooltip-show-help-function): Don't fixup message here.
|
||||
|
||||
2005-03-31 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* language/thai-word.el (thai-find-word-ends): Pay attention to
|
||||
the case that we reach the end of buffer.
|
||||
|
||||
* textmodes/fill.el (fill-text-properties-at): New function.
|
||||
(fill-newline): Use fill-text-properties-at instead of
|
||||
|
|
@ -69,13 +173,13 @@
|
|||
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
|
||||
(org-agenda-convert-date, org-agenda-goto-calendar): New commands.
|
||||
(org-diary-default-entry): New function.
|
||||
(org-get-entries-from-diary): Better parsing of diary entries
|
||||
(org-get-entries-from-diary): Better parsing of diary entries.
|
||||
(org-agenda-check-no-diary): New function.
|
||||
("diary-lib"): Advice to function `add-to-diary-list', to allow
|
||||
linking to diary entries.
|
||||
(org-agenda-execute-calendar-command): New function
|
||||
(org-agenda): Improved visible section in window. And
|
||||
use `org-fit-agenda-window'.
|
||||
(org-agenda-execute-calendar-command): New function.
|
||||
(org-agenda): Improve visible section in window.
|
||||
Use `org-fit-agenda-window'.
|
||||
(org-fit-agenda-window): New option.
|
||||
(org-move-subtree-down): Better handling of empty lines
|
||||
at end of subtree.
|
||||
|
|
@ -84,12 +188,10 @@
|
|||
(org-fontify-done-headline): New option.
|
||||
(org-headline-done-face): New face.
|
||||
(org-set-font-lock-defaults): Use `org-headline-done-face'.
|
||||
(org-table-copy-down): renamed from
|
||||
`org-table-copy-from-above'. When current field is non-empty, it
|
||||
is copied to next row.
|
||||
(org-table-copy-from-above): Fixed bug which made it
|
||||
impossible to copy fields containing only a single non-white
|
||||
character.
|
||||
(org-table-copy-down): Rename from `org-table-copy-from-above'.
|
||||
When current field is non-empty, it is copied to next row.
|
||||
(org-table-copy-from-above): Fix bug which made it
|
||||
impossible to copy fields containing only a single non-white character.
|
||||
|
||||
2005-03-30 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; calc-embed.el --- embed Calc in a buffer
|
||||
|
||||
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: David Gillespie <daveg@synaptics.com>
|
||||
;; Maintainer: Jay Belanger <belanger@truman.edu>
|
||||
|
|
@ -48,48 +48,18 @@
|
|||
(defvar calc-embedded-some-active nil)
|
||||
(make-variable-buffer-local 'calc-embedded-some-active)
|
||||
|
||||
(defvar calc-embedded-open-formula "\\`\\|^\n\\|\\$\\$?\\|\\\\\\[\\|^\\\\begin[^{].*\n\\|^\\\\begin{.*[^x]}.*\n\\|^@.*\n\\|^\\.EQ.*\n\\|\\\\(\\|^%\n\\|^\\.\\\\\"\n"
|
||||
"*A regular expression for the opening delimiter of a formula used by
|
||||
calc-embedded.")
|
||||
|
||||
(defvar calc-embedded-close-formula "\\'\\|\n$\\|\\$\\$?\\|\\\\]\\|^\\\\end[^{].*\n\\|^\\\\end{.*[^x]}.*\n\\|^@.*\n\\|^\\.EN.*\n\\|\\\\)\\|\n%\n\\|^\\.\\\\\"\n"
|
||||
"*A regular expression for the closing delimiter of a formula used by
|
||||
calc-embedded.")
|
||||
|
||||
(defvar calc-embedded-open-word "^\\|[^-+0-9.eE]"
|
||||
"*A regular expression for the opening delimiter of a formula used by
|
||||
calc-embedded-word.")
|
||||
|
||||
(defvar calc-embedded-close-word "$\\|[^-+0-9.eE]"
|
||||
"*A regular expression for the closing delimiter of a formula used by
|
||||
calc-embedded-word.")
|
||||
|
||||
(defvar calc-embedded-open-plain "%%% "
|
||||
"*A string which is the opening delimiter for a \"plain\" formula.
|
||||
If calc-show-plain mode is enabled, this is inserted at the front of
|
||||
each formula.")
|
||||
|
||||
(defvar calc-embedded-close-plain " %%%\n"
|
||||
"*A string which is the closing delimiter for a \"plain\" formula.
|
||||
See calc-embedded-open-plain.")
|
||||
|
||||
(defvar calc-embedded-open-new-formula "\n\n"
|
||||
"*A string which is inserted at front of formula by calc-embedded-new-formula.")
|
||||
|
||||
(defvar calc-embedded-close-new-formula "\n\n"
|
||||
"*A string which is inserted at end of formula by calc-embedded-new-formula.")
|
||||
|
||||
(defvar calc-embedded-announce-formula "%Embed\n\\(% .*\n\\)*"
|
||||
"*A regular expression which is sure to be followed by a calc-embedded formula." )
|
||||
|
||||
(defvar calc-embedded-open-mode "% "
|
||||
"*A string which should precede calc-embedded mode annotations.
|
||||
This is not required to be present for user-written mode annotations.")
|
||||
|
||||
(defvar calc-embedded-close-mode "\n"
|
||||
"*A string which should follow calc-embedded mode annotations.
|
||||
This is not required to be present for user-written mode annotations.")
|
||||
|
||||
;; The following variables are customizable and defined in calc.el.
|
||||
(defvar calc-embedded-announce-formula)
|
||||
(defvar calc-embedded-open-formula)
|
||||
(defvar calc-embedded-close-formula)
|
||||
(defvar calc-embedded-open-word)
|
||||
(defvar calc-embedded-close-word)
|
||||
(defvar calc-embedded-open-plain)
|
||||
(defvar calc-embedded-close-plain)
|
||||
(defvar calc-embedded-open-new-formula)
|
||||
(defvar calc-embedded-close-new-formula)
|
||||
(defvar calc-embedded-open-mode)
|
||||
(defvar calc-embedded-close-mode)
|
||||
|
||||
(defconst calc-embedded-mode-vars '(("precision" . calc-internal-prec)
|
||||
("word-size" . calc-word-size)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; calc-graph.el --- graph output functions for Calc
|
||||
|
||||
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2005 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: David Gillespie <daveg@synaptics.com>
|
||||
;; Maintainer: Jay Belanger <belanger@truman.edu>
|
||||
|
|
@ -33,14 +33,10 @@
|
|||
|
||||
;;; Graphics
|
||||
|
||||
(defvar calc-gnuplot-name "gnuplot"
|
||||
"*Name of GNUPLOT program, for calc-graph features.")
|
||||
|
||||
(defvar calc-gnuplot-plot-command nil
|
||||
"*Name of command for displaying GNUPLOT output; %s = file name to print.")
|
||||
|
||||
(defvar calc-gnuplot-print-command "lp %s"
|
||||
"*Name of command for printing GNUPLOT output; %s = file name to print.")
|
||||
;; The following three variables are customizable and defined in calc.el.
|
||||
(defvar calc-gnuplot-name)
|
||||
(defvar calc-gnuplot-plot-command)
|
||||
(defvar calc-gnuplot-print-command)
|
||||
|
||||
(defvar calc-gnuplot-tempfile "calc")
|
||||
|
||||
|
|
|
|||
|
|
@ -206,9 +206,121 @@
|
|||
|
||||
(require 'calc-macs)
|
||||
|
||||
(defgroup calc nil
|
||||
"GNU Calc"
|
||||
:prefix "calc-"
|
||||
:tag "Calc")
|
||||
|
||||
;;;###autoload
|
||||
(defvar calc-settings-file (convert-standard-filename "~/.calc.el")
|
||||
"*File in which to record permanent settings.")
|
||||
(defcustom calc-settings-file
|
||||
(convert-standard-filename "~/.calc.el")
|
||||
"*File in which to record permanent settings."
|
||||
:group 'calc
|
||||
:type '(file))
|
||||
|
||||
(defcustom calc-language-alist
|
||||
'((latex-mode . latex)
|
||||
(tex-mode . tex)
|
||||
(plain-tex-mode . tex)
|
||||
(context-mode . tex)
|
||||
(nroff-mode . eqn)
|
||||
(pascal-mode . pascal)
|
||||
(c-mode . c)
|
||||
(c++-mode . c)
|
||||
(fortran-mode . fortran)
|
||||
(f90-mode . fortran))
|
||||
"*Alist of major modes with appropriate Calc languages."
|
||||
:group 'calc
|
||||
:type '(alist :key-type symbol :value-type symbol))
|
||||
|
||||
(defcustom calc-embedded-announce-formula
|
||||
"%Embed\n\\(% .*\n\\)*"
|
||||
"*A regular expression which is sure to be followed by a calc-embedded formula."
|
||||
:group 'calc
|
||||
:type '(regexp))
|
||||
|
||||
(defcustom calc-embedded-open-formula
|
||||
"\\`\\|^\n\\|\\$\\$?\\|\\\\\\[\\|^\\\\begin[^{].*\n\\|^\\\\begin{.*[^x]}.*\n\\|^@.*\n\\|^\\.EQ.*\n\\|\\\\(\\|^%\n\\|^\\.\\\\\"\n"
|
||||
"*A regular expression for the opening delimiter of a formula used by calc-embedded."
|
||||
:group 'calc
|
||||
:type '(regexp))
|
||||
|
||||
(defcustom calc-embedded-close-formula
|
||||
"\\'\\|\n$\\|\\$\\$?\\|\\\\]\\|^\\\\end[^{].*\n\\|^\\\\end{.*[^x]}.*\n\\|^@.*\n\\|^\\.EN.*\n\\|\\\\)\\|\n%\n\\|^\\.\\\\\"\n"
|
||||
"*A regular expression for the closing delimiter of a formula used by calc-embedded."
|
||||
:group 'calc
|
||||
:type '(regexp))
|
||||
|
||||
(defcustom calc-embedded-open-word
|
||||
"^\\|[^-+0-9.eE]"
|
||||
"*A regular expression for the opening delimiter of a formula used by calc-embedded-word."
|
||||
:group 'calc
|
||||
:type '(regexp))
|
||||
|
||||
(defcustom calc-embedded-close-word
|
||||
"$\\|[^-+0-9.eE]"
|
||||
"*A regular expression for the closing delimiter of a formula used by calc-embedded-word."
|
||||
:group 'calc
|
||||
:type '(regexp))
|
||||
|
||||
(defcustom calc-embedded-open-plain
|
||||
"%%% "
|
||||
"*A string which is the opening delimiter for a \"plain\" formula.
|
||||
If calc-show-plain mode is enabled, this is inserted at the front of
|
||||
each formula."
|
||||
:group 'calc
|
||||
:type '(string))
|
||||
|
||||
(defcustom calc-embedded-close-plain
|
||||
" %%%\n"
|
||||
"*A string which is the closing delimiter for a \"plain\" formula.
|
||||
See calc-embedded-open-plain."
|
||||
:group 'calc
|
||||
:type '(string))
|
||||
|
||||
(defcustom calc-embedded-open-new-formula
|
||||
"\n\n"
|
||||
"*A string which is inserted at front of formula by calc-embedded-new-formula."
|
||||
:group 'calc
|
||||
:type '(string))
|
||||
|
||||
(defcustom calc-embedded-close-new-formula
|
||||
"\n\n"
|
||||
"*A string which is inserted at end of formula by calc-embedded-new-formula."
|
||||
:group 'calc
|
||||
:type '(string))
|
||||
|
||||
(defcustom calc-embedded-open-mode
|
||||
"% "
|
||||
"*A string which should precede calc-embedded mode annotations.
|
||||
This is not required to be present for user-written mode annotations."
|
||||
:group 'calc
|
||||
:type '(string))
|
||||
|
||||
(defcustom calc-embedded-close-mode
|
||||
"\n"
|
||||
"*A string which should follow calc-embedded mode annotations.
|
||||
This is not required to be present for user-written mode annotations."
|
||||
:group 'calc
|
||||
:type '(string))
|
||||
|
||||
(defcustom calc-gnuplot-name
|
||||
"gnuplot"
|
||||
"*Name of GNUPLOT program, for calc-graph features."
|
||||
:group 'calc
|
||||
:type '(string))
|
||||
|
||||
(defcustom calc-gnuplot-plot-command
|
||||
nil
|
||||
"*Name of command for displaying GNUPLOT output; %s = file name to print."
|
||||
:group 'calc
|
||||
:type '(choice (string) (sexp)))
|
||||
|
||||
(defcustom calc-gnuplot-print-command
|
||||
"lp %s"
|
||||
"*Name of command for printing GNUPLOT output; %s = file name to print."
|
||||
:group 'calc
|
||||
:type '(choice (string) (sexp)))
|
||||
|
||||
(defvar calc-bug-address "belanger@truman.edu"
|
||||
"Address of the author of Calc, for use by `report-calc-bug'.")
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ or macro definition or a defcustom)."
|
|||
(let ((car (car-safe form)) expand)
|
||||
(cond
|
||||
;; For complex cases, try again on the macro-expansion.
|
||||
((and (memq car '(easy-mmode-define-global-mode
|
||||
((and (memq car '(easy-mmode-define-global-mode define-global-minor-mode
|
||||
easy-mmode-define-minor-mode define-minor-mode))
|
||||
(setq expand (let ((load-file-name file)) (macroexpand form)))
|
||||
(eq (car expand) 'progn)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
;;; easy-mmode.el --- easy definition for major and minor modes
|
||||
|
||||
;; Copyright (C) 1997,2000,01,02,03,2004 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
;; Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Georges Brun-Cottan <Georges.Brun-Cottan@inria.fr>
|
||||
;; Maintainer: Stefan Monnier <monnier@gnu.org>
|
||||
|
|
@ -152,8 +153,8 @@ For example, you could write
|
|||
(unless group
|
||||
;; We might as well provide a best-guess default group.
|
||||
(setq group
|
||||
`(:group ',(or (custom-current-group)
|
||||
(intern (replace-regexp-in-string
|
||||
`(:group (or (custom-current-group)
|
||||
',(intern (replace-regexp-in-string
|
||||
"-mode\\'" "" mode-name))))))
|
||||
|
||||
`(progn
|
||||
|
|
@ -253,8 +254,9 @@ With zero or negative ARG turn mode off.
|
|||
;;;
|
||||
|
||||
;;;###autoload
|
||||
(defmacro easy-mmode-define-global-mode (global-mode mode turn-on
|
||||
&rest keys)
|
||||
(defalias 'easy-mmode-define-global-mode 'define-global-minor-mode)
|
||||
;;;###autoload
|
||||
(defmacro define-global-minor-mode (global-mode mode turn-on &rest keys)
|
||||
"Make GLOBAL-MODE out of the buffer-local minor MODE.
|
||||
TURN-ON is a function that will be called with no args in every buffer
|
||||
and that should try to turn MODE on if applicable for that buffer.
|
||||
|
|
@ -278,8 +280,8 @@ KEYS is a list of CL-style keyword arguments:
|
|||
(unless group
|
||||
;; We might as well provide a best-guess default group.
|
||||
(setq group
|
||||
`(:group ',(or (custom-current-group)
|
||||
(intern (replace-regexp-in-string
|
||||
`(:group (or (custom-current-group)
|
||||
',(intern (replace-regexp-in-string
|
||||
"-mode\\'" "" (symbol-name mode)))))))
|
||||
|
||||
`(progn
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ from `mode-require-final-newline'."
|
|||
:group 'editing-basics)
|
||||
|
||||
(defcustom mode-require-final-newline t
|
||||
"*Whether to add a newline at the end of the file, in certain major modes.
|
||||
"*Whether to add a newline at end of file, in certain major modes.
|
||||
Those modes set `require-final-newline' to this value when you enable them.
|
||||
They do so because they are used for files that are supposed
|
||||
to end in newlines, and the question is how to arrange that.
|
||||
|
|
@ -299,10 +299,16 @@ to end in newlines, and the question is how to arrange that.
|
|||
A value of t means do this only when the file is about to be saved.
|
||||
A value of `visit' means do this right after the file is visited.
|
||||
A value of `visit-save' means do it at both of those times.
|
||||
Any other non-nil value means ask user whether to add a newline, when saving."
|
||||
Any other non-nil value means ask user whether to add a newline, when saving.
|
||||
nil means don't add newlines.
|
||||
|
||||
You will have to be careful if you set this to nil: you will have
|
||||
to remember to manually add a final newline whenever you finish a
|
||||
file that really needs one."
|
||||
:type '(choice (const :tag "When visiting" visit)
|
||||
(const :tag "When saving" t)
|
||||
(const :tag "When visiting or saving" visit-save)
|
||||
(const :tag "Never" nil)
|
||||
(other :tag "Ask" ask))
|
||||
:group 'editing-basics
|
||||
:version "22.1")
|
||||
|
|
|
|||
|
|
@ -217,58 +217,72 @@ FUNCTION-LIST is a list of functions to call to do some
|
|||
additional setup.
|
||||
|
||||
See the file generic-x.el for some examples of `define-generic-mode'."
|
||||
(let* ((name-unquoted (if (eq (car-safe mode) 'quote) ; Backward compatibility.
|
||||
(eval mode)
|
||||
mode))
|
||||
(name-string (symbol-name name-unquoted))
|
||||
(declare (debug (sexp def-form def-form def-form form def-form
|
||||
&optional stringp))
|
||||
(indent 1))
|
||||
|
||||
;; Backward compatibility.
|
||||
(when (eq (car-safe mode) 'quote)
|
||||
(setq mode (eval mode)))
|
||||
(let* ((mode-name (symbol-name mode))
|
||||
(pretty-name (capitalize (replace-regexp-in-string
|
||||
"-mode\\'" "" name-string))))
|
||||
"-mode\\'" "" mode-name)))
|
||||
(mode-hook (intern (concat mode-name "-hook"))))
|
||||
|
||||
`(progn
|
||||
;; Add a new entry.
|
||||
(add-to-list 'generic-mode-list ,name-string)
|
||||
(add-to-list 'generic-mode-list ,mode-name)
|
||||
|
||||
;; Add it to auto-mode-alist
|
||||
(dolist (re ,auto-mode-list)
|
||||
(add-to-list 'auto-mode-alist (cons re ',name-unquoted)))
|
||||
(add-to-list 'auto-mode-alist (cons re ',mode)))
|
||||
|
||||
(defun ,name-unquoted ()
|
||||
(defcustom ,mode-hook nil
|
||||
,(concat "Hook run when entering " pretty-name " mode.")
|
||||
:type 'hook
|
||||
:group (or (custom-current-group)
|
||||
',(intern (replace-regexp-in-string
|
||||
"-mode\\'" "" mode-name))))
|
||||
|
||||
(defun ,mode ()
|
||||
,(or docstring
|
||||
(concat pretty-name " mode.\n"
|
||||
"This a generic mode defined with `define-generic-mode'."))
|
||||
(interactive)
|
||||
(generic-mode-internal ',name-unquoted ,comment-list ,keyword-list
|
||||
(generic-mode-internal ',mode ,comment-list ,keyword-list
|
||||
,font-lock-list ,function-list)))))
|
||||
|
||||
;;;###autoload
|
||||
(defun generic-mode-internal (mode comments keywords font-lock-list funs)
|
||||
(defun generic-mode-internal (mode comment-list keyword-list
|
||||
font-lock-list function-list)
|
||||
"Go into the generic mode MODE."
|
||||
(let* ((modename (symbol-name mode))
|
||||
(generic-mode-hooks (intern (concat modename "-hook")))
|
||||
(let* ((mode-name (symbol-name mode))
|
||||
(pretty-name (capitalize (replace-regexp-in-string
|
||||
"-mode\\'" "" modename))))
|
||||
"-mode\\'" "" mode-name)))
|
||||
(mode-hook (intern (concat mode-name "-hook"))))
|
||||
|
||||
(kill-all-local-variables)
|
||||
|
||||
(setq major-mode mode
|
||||
mode-name pretty-name)
|
||||
|
||||
(generic-mode-set-comments comments)
|
||||
(generic-mode-set-comments comment-list)
|
||||
|
||||
;; Font-lock functionality.
|
||||
;; Font-lock-defaults is always set even if there are no keywords
|
||||
;; or font-lock expressions, so comments can be highlighted.
|
||||
(setq generic-font-lock-keywords
|
||||
(append
|
||||
(when keywords
|
||||
(list (generic-make-keywords-list keywords font-lock-keyword-face)))
|
||||
(when keyword-list
|
||||
(list (generic-make-keywords-list keyword-list
|
||||
font-lock-keyword-face)))
|
||||
font-lock-list))
|
||||
(setq font-lock-defaults '(generic-font-lock-keywords nil))
|
||||
|
||||
;; Call a list of functions
|
||||
(mapcar 'funcall funs)
|
||||
(mapcar 'funcall function-list)
|
||||
|
||||
(run-hooks generic-mode-hooks)))
|
||||
(run-mode-hooks mode-hook)))
|
||||
|
||||
;;;###autoload
|
||||
(defun generic-mode (mode)
|
||||
|
|
@ -392,7 +406,7 @@ This hook will be installed if the variable
|
|||
|
||||
(defun generic-mode-ini-file-find-file-hook ()
|
||||
"Hook function to enter Default-Generic mode automatically for INI files.
|
||||
Done if the first few lines of a file in Fundamental mode look like an
|
||||
Done if the first few lines of a file in Fundamental mode look like an
|
||||
INI file. This hook is NOT installed by default."
|
||||
(and (eq major-mode 'fundamental-mode)
|
||||
(save-excursion
|
||||
|
|
|
|||
26
lisp/ido.el
26
lisp/ido.el
|
|
@ -1935,19 +1935,21 @@ If INITIAL is non-nil, it specifies the initial input string."
|
|||
;; Internal function for ido-find-file and friends
|
||||
(unless item
|
||||
(setq item 'file))
|
||||
(let* ((ido-current-directory (ido-expand-directory default))
|
||||
(ido-directory-nonreadable (ido-nonreadable-directory-p ido-current-directory))
|
||||
(ido-directory-too-big (and (not ido-directory-nonreadable)
|
||||
(ido-directory-too-big-p ido-current-directory)))
|
||||
(ido-context-switch-command switch-cmd)
|
||||
filename)
|
||||
(let ((ido-current-directory (ido-expand-directory default))
|
||||
(ido-context-switch-command switch-cmd)
|
||||
ido-directory-nonreadable ido-directory-too-big
|
||||
filename)
|
||||
|
||||
(cond
|
||||
((or (not ido-mode) (ido-is-slow-ftp-host))
|
||||
(setq filename t
|
||||
ido-exit 'fallback))
|
||||
(if (or (not ido-mode) (ido-is-slow-ftp-host))
|
||||
(setq filename t
|
||||
ido-exit 'fallback)
|
||||
(setq ido-directory-nonreadable
|
||||
(ido-nonreadable-directory-p ido-current-directory)
|
||||
ido-directory-too-big
|
||||
(and (not ido-directory-nonreadable)
|
||||
(ido-directory-too-big-p ido-current-directory))))
|
||||
|
||||
((and (eq item 'file)
|
||||
(when (and (eq item 'file)
|
||||
(or ido-use-url-at-point ido-use-filename-at-point))
|
||||
(let (fn d)
|
||||
(require 'ffap)
|
||||
|
|
@ -1966,7 +1968,7 @@ If INITIAL is non-nil, it specifies the initial input string."
|
|||
(setq d (file-name-directory fn))
|
||||
(file-directory-p d))
|
||||
(setq ido-current-directory d)
|
||||
(setq initial (file-name-nondirectory fn)))))))
|
||||
(setq initial (file-name-nondirectory fn))))))
|
||||
|
||||
(let (ido-saved-vc-hb
|
||||
(vc-handled-backends (and (boundp 'vc-handled-backends) vc-handled-backends))
|
||||
|
|
|
|||
|
|
@ -10780,7 +10780,7 @@ the current word list."
|
|||
;; character by character.
|
||||
(while this
|
||||
(setq pos (1+ pos)
|
||||
char (char-after pos)
|
||||
char (or (char-after pos) 0)
|
||||
category-set (char-category-set char))
|
||||
;; If the current sequence is recorded in `thai-word-table'
|
||||
;; (i.e. (car THIS) is 1) and the following Thai character is
|
||||
|
|
|
|||
|
|
@ -1622,13 +1622,15 @@ a remote mailbox, PASSWORD is the password if it should be
|
|||
supplied as a separate argument to `movemail' or nil otherwise, GOT-PASSWORD
|
||||
is non-nil if the user has supplied the password interactively.
|
||||
"
|
||||
(if (string-match "^\\([^:]+\\)://\\(\\([^:@]+\\)\\(:\\([^@]+\\)\\)?@\\)?.*" file)
|
||||
(cond
|
||||
((string-match "^\\([^:]+\\)://\\(\\([^:@]+\\)\\(:\\([^@]+\\)\\)?@\\)?.*" file)
|
||||
(let (got-password supplied-password
|
||||
(proto (match-string 1 file))
|
||||
(user (match-string 3 file))
|
||||
(pass (match-string 5 file))
|
||||
(host (substring file (or (match-end 2)
|
||||
(+ 3 (match-end 1))))))
|
||||
|
||||
(if (not pass)
|
||||
(when rmail-remote-password-required
|
||||
(setq got-password (not (rmail-have-password)))
|
||||
|
|
@ -1645,8 +1647,22 @@ is non-nil if the user has supplied the password interactively.
|
|||
(list file
|
||||
(or (string-equal proto "pop") (string-equal proto "imap"))
|
||||
supplied-password
|
||||
got-password)))
|
||||
(list file nil nil nil)))
|
||||
got-password))))
|
||||
|
||||
((string-match "^po:\\([^:]+\\)\\(:\\(.*\\)\\)?" file)
|
||||
(let (got-password supplied-password
|
||||
(proto "pop")
|
||||
(user (match-string 1 file))
|
||||
(host (match-string 3 file)))
|
||||
|
||||
(when rmail-remote-password-required
|
||||
(setq got-password (not (rmail-have-password)))
|
||||
(setq supplied-password (rmail-get-remote-password nil)))
|
||||
|
||||
(list file "pop" supplied-password got-password)))
|
||||
|
||||
(t
|
||||
(list file nil nil nil))))
|
||||
|
||||
(defun rmail-insert-inbox-text (files renamep)
|
||||
;; Detect a locked file now, so that we avoid moving mail
|
||||
|
|
@ -1686,15 +1702,7 @@ is non-nil if the user has supplied the password interactively.
|
|||
(expand-file-name buffer-file-name))))
|
||||
;; Always use movemail to rename the file,
|
||||
;; since there can be mailboxes in various directories.
|
||||
(setq movemail t)
|
||||
;;; ;; If getting from mail spool directory,
|
||||
;;; ;; use movemail to move rather than just renaming,
|
||||
;;; ;; so as to interlock with the mailer.
|
||||
;;; (setq movemail (string= file
|
||||
;;; (file-truename
|
||||
;;; (concat rmail-spool-directory
|
||||
;;; (file-name-nondirectory file)))))
|
||||
(if (and movemail (not popmail))
|
||||
(if (not popmail)
|
||||
(progn
|
||||
;; On some systems, /usr/spool/mail/foo is a directory
|
||||
;; and the actual inbox is /usr/spool/mail/foo/foo.
|
||||
|
|
@ -1716,23 +1724,6 @@ is non-nil if the user has supplied the password interactively.
|
|||
((or (file-exists-p tofile) (and (not popmail)
|
||||
(not (file-exists-p file))))
|
||||
nil)
|
||||
((and (not movemail) (not popmail))
|
||||
;; Try copying. If that fails (perhaps no space) and
|
||||
;; we're allowed to blow away the inbox, rename instead.
|
||||
(if rmail-preserve-inbox
|
||||
(copy-file file tofile nil)
|
||||
(condition-case nil
|
||||
(copy-file file tofile nil)
|
||||
(error
|
||||
;; Third arg is t so we can replace existing file TOFILE.
|
||||
(rename-file file tofile t))))
|
||||
;; Make the real inbox file empty.
|
||||
;; Leaving it deleted could cause lossage
|
||||
;; because mailers often won't create the file.
|
||||
(if (not rmail-preserve-inbox)
|
||||
(condition-case ()
|
||||
(write-region (point) (point) file)
|
||||
(file-error nil))))
|
||||
(t
|
||||
(with-temp-buffer
|
||||
(let ((errors (current-buffer)))
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
:version "22.1"
|
||||
:group 'mouse)
|
||||
|
||||
(defcustom mouse-1-click-follows-link 350
|
||||
(defcustom mouse-1-click-follows-link 450
|
||||
"Non-nil means that clicking Mouse-1 on a link follows the link.
|
||||
|
||||
With the default setting, an ordinary Mouse-1 click on a link
|
||||
|
|
@ -837,6 +837,29 @@ at the same position."
|
|||
(funcall action pos))
|
||||
(t action)))))))
|
||||
|
||||
(defun mouse-fixup-help-message (msg)
|
||||
"Fix help message MSG for `mouse-1-click-follows-link'."
|
||||
(let (mp pos)
|
||||
(if (and mouse-1-click-follows-link
|
||||
(stringp msg)
|
||||
(save-match-data
|
||||
(string-match "^mouse-2" msg))
|
||||
(setq mp (mouse-pixel-position))
|
||||
(consp (setq pos (cdr mp)))
|
||||
(car pos) (>= (car pos) 0)
|
||||
(cdr pos) (>= (cdr pos) 0)
|
||||
(setq pos (posn-at-x-y (car pos) (cdr pos) (car mp)))
|
||||
(windowp (posn-window pos)))
|
||||
(with-current-buffer (window-buffer (posn-window pos))
|
||||
(if (mouse-on-link-p pos)
|
||||
(setq msg (concat
|
||||
(cond
|
||||
((eq mouse-1-click-follows-link 'double) "double-")
|
||||
((and (integerp mouse-1-click-follows-link)
|
||||
(< mouse-1-click-follows-link 0)) "Long ")
|
||||
(t ""))
|
||||
"mouse-1" (substring msg 7)))))))
|
||||
msg)
|
||||
|
||||
(defun mouse-drag-region-1 (start-event)
|
||||
(mouse-minibuffer-check start-event)
|
||||
|
|
@ -886,6 +909,7 @@ at the same position."
|
|||
(track-mouse
|
||||
(while (progn
|
||||
(setq event (read-event))
|
||||
(setq mve (cons event (and (boundp 'mve) mve)))
|
||||
(or (mouse-movement-p event)
|
||||
(memq (car-safe event) '(switch-frame select-window))))
|
||||
(if (memq (car-safe event) '(switch-frame select-window))
|
||||
|
|
@ -997,7 +1021,7 @@ at the same position."
|
|||
(= (window-start start-window)
|
||||
start-window-start)))
|
||||
(if (and on-link
|
||||
(not end-point)
|
||||
(or (not end-point) (= end-point start-point))
|
||||
(consp event)
|
||||
(or remap-double-click
|
||||
(and
|
||||
|
|
|
|||
105
lisp/pcvs.el
105
lisp/pcvs.el
|
|
@ -358,7 +358,7 @@ from the current buffer."
|
|||
(dir default-directory)
|
||||
(buf (cond
|
||||
(name (cvs-get-buffer-create name))
|
||||
((and (bufferp cvs-temp-buffer) (buffer-name cvs-temp-buffer))
|
||||
((and (bufferp cvs-temp-buffer) (buffer-live-p cvs-temp-buffer))
|
||||
cvs-temp-buffer)
|
||||
(t
|
||||
(set (make-local-variable 'cvs-temp-buffer)
|
||||
|
|
@ -528,39 +528,49 @@ If non-nil, NEW means to create a new buffer no matter what."
|
|||
(files (nth 1 dir+files+rest))
|
||||
(rest (nth 2 dir+files+rest)))
|
||||
|
||||
;; setup the (current) process buffer
|
||||
(set (make-local-variable 'cvs-postprocess)
|
||||
(if (null rest)
|
||||
;; this is the last invocation
|
||||
postprocess
|
||||
;; else, we have to register ourselves to be rerun on the rest
|
||||
`(cvs-run-process ',args ',rest ',postprocess ',single-dir)))
|
||||
(add-hook 'kill-buffer-hook
|
||||
(lambda ()
|
||||
(let ((proc (get-buffer-process (current-buffer))))
|
||||
(when (processp proc)
|
||||
(set-process-filter proc nil)
|
||||
(set-process-sentinel proc nil)
|
||||
(delete-process proc))))
|
||||
;; Abort postprocessing but leave the sentinel so it
|
||||
;; will update the list of running procs.
|
||||
(process-put proc 'cvs-postprocess nil)
|
||||
(interrupt-process proc))))
|
||||
nil t)
|
||||
|
||||
;; create the new process and setup the procbuffer correspondingly
|
||||
(let* ((args (append (cvs-flags-query 'cvs-cvs-flags nil 'noquery)
|
||||
(let* ((msg (cvs-header-msg args fis))
|
||||
(args (append (cvs-flags-query 'cvs-cvs-flags nil 'noquery)
|
||||
(if cvs-cvsroot (list "-d" cvs-cvsroot))
|
||||
args
|
||||
files))
|
||||
;; If process-connection-type is nil and the repository
|
||||
;; is accessed via SSH, a bad interaction between libc,
|
||||
;; CVS and SSH can lead to garbled output.
|
||||
;; It might be a glibc-specific problem (but it also happens
|
||||
;; It might be a glibc-specific problem (but it can also happens
|
||||
;; under Mac OS X, it seems).
|
||||
;; Until the problem is cleared, we'll use a pty rather than
|
||||
;; a pipe.
|
||||
;; (process-connection-type nil) ; Use a pipe, not a pty.
|
||||
;; It seems that using a pty can help circumvent the problem,
|
||||
;; but at the cost of screwing up when the process thinks it
|
||||
;; can ask for user input (such as password or host-key
|
||||
;; confirmation). A better workaround is to set CVS_RSH to
|
||||
;; an appropriate script, or to use a later version of CVS.
|
||||
(process-connection-type nil) ; Use a pipe, not a pty.
|
||||
(process
|
||||
;; the process will be run in the selected dir
|
||||
(let ((default-directory (cvs-expand-dir-name dir)))
|
||||
(apply 'start-process "cvs" procbuf cvs-program args))))
|
||||
;; setup the process.
|
||||
(process-put process 'cvs-buffer cvs-buffer)
|
||||
(with-current-buffer cvs-buffer (cvs-update-header msg 'add))
|
||||
(process-put process 'cvs-header msg)
|
||||
(process-put
|
||||
process 'cvs-postprocess
|
||||
(if (null rest)
|
||||
;; this is the last invocation
|
||||
postprocess
|
||||
;; else, we have to register ourselves to be rerun on the rest
|
||||
`(cvs-run-process ',args ',rest ',postprocess ',single-dir)))
|
||||
(set-process-sentinel process 'cvs-sentinel)
|
||||
(set-process-filter process 'cvs-update-filter)
|
||||
(set-marker (process-mark process) (point-max))
|
||||
|
|
@ -636,33 +646,35 @@ If non-nil, NEW means to create a new buffer no matter what."
|
|||
This is responsible for parsing the output from the cvs update when
|
||||
it is finished."
|
||||
(when (memq (process-status proc) '(signal exit))
|
||||
(if (null (buffer-name (process-buffer proc)))
|
||||
;;(set-process-buffer proc nil)
|
||||
(error "cvs' process buffer was killed")
|
||||
(let* ((obuf (current-buffer))
|
||||
(procbuffer (process-buffer proc)))
|
||||
(set-buffer (with-current-buffer procbuffer cvs-buffer))
|
||||
(setq cvs-mode-line-process (symbol-name (process-status proc)))
|
||||
(force-mode-line-update)
|
||||
(set-buffer procbuffer)
|
||||
(let ((cvs-postproc cvs-postprocess))
|
||||
;; Since the buffer and mode line will show that the
|
||||
;; process is dead, we can delete it now. Otherwise it
|
||||
;; will stay around until M-x list-processes.
|
||||
(delete-process proc)
|
||||
(setq cvs-postprocess nil)
|
||||
;; do the postprocessing like parsing and such
|
||||
(save-excursion (eval cvs-postproc))
|
||||
;; check whether something is left
|
||||
(unless cvs-postprocess
|
||||
;; IIRC, we enable undo again once the process is finished
|
||||
;; for cases where the output was inserted in *vc-diff* or
|
||||
;; in a file-like buffer. -stef
|
||||
(buffer-enable-undo)
|
||||
(with-current-buffer cvs-buffer
|
||||
(message "CVS process has completed in %s" (buffer-name)))))
|
||||
;; This might not even be necessary
|
||||
(set-buffer obuf)))))
|
||||
(let ((cvs-postproc (process-get proc 'cvs-postprocess))
|
||||
(cvs-buf (process-get proc 'cvs-buffer)))
|
||||
;; Since the buffer and mode line will show that the
|
||||
;; process is dead, we can delete it now. Otherwise it
|
||||
;; will stay around until M-x list-processes.
|
||||
(process-put proc 'postprocess nil)
|
||||
(delete-process proc)
|
||||
;; Don't do anything if the main buffer doesn't exist any more.
|
||||
(when (buffer-live-p cvs-buf)
|
||||
(with-current-buffer cvs-buf
|
||||
(cvs-update-header (process-get proc 'cvs-header) nil)
|
||||
(setq cvs-mode-line-process (symbol-name (process-status proc)))
|
||||
(force-mode-line-update)
|
||||
(when cvs-postproc
|
||||
(if (null (buffer-live-p (process-buffer proc)))
|
||||
;;(set-process-buffer proc nil)
|
||||
(error "cvs' process buffer was killed")
|
||||
(with-current-buffer (process-buffer proc)
|
||||
;; do the postprocessing like parsing and such
|
||||
(save-excursion (eval cvs-postproc))
|
||||
;; check whether something is left
|
||||
(unless (get-buffer-process (current-buffer))
|
||||
;; IIRC, we enable undo again once the process is finished
|
||||
;; for cases where the output was inserted in *vc-diff* or
|
||||
;; in a file-like buffer. --Stef
|
||||
(buffer-enable-undo)
|
||||
(with-current-buffer cvs-buffer
|
||||
(message "CVS process has completed in %s"
|
||||
(buffer-name))))))))))))
|
||||
|
||||
(defun cvs-parse-process (dcd &optional subdir old-fis)
|
||||
"Parse the output of a cvs process.
|
||||
|
|
@ -770,7 +782,7 @@ before calling the real function `" (symbol-name fun-1) "'.\n")
|
|||
(defun-cvs-mode cvs-mode-kill-process ()
|
||||
"Kill the temporary buffer and associated process."
|
||||
(interactive)
|
||||
(when (and (bufferp cvs-temp-buffer) (buffer-name cvs-temp-buffer))
|
||||
(when (and (bufferp cvs-temp-buffer) (buffer-live-p cvs-temp-buffer))
|
||||
(let ((proc (get-buffer-process cvs-temp-buffer)))
|
||||
(when proc (delete-process proc)))))
|
||||
|
||||
|
|
@ -1133,7 +1145,7 @@ Full documentation is in the Texinfo file."
|
|||
(eq (ewoc-buffer cvs-cookies) buf)
|
||||
(setq check 'cvs-temp-buffer)
|
||||
(or (null cvs-temp-buffer)
|
||||
(null (buffer-name cvs-temp-buffer))
|
||||
(null (buffer-live-p cvs-temp-buffer))
|
||||
(and (eq (with-current-buffer cvs-temp-buffer cvs-buffer) buf)
|
||||
(equal (with-current-buffer cvs-temp-buffer
|
||||
default-directory)
|
||||
|
|
@ -1822,11 +1834,6 @@ POSTPROC is a list of expressions to be evaluated at the very end (after
|
|||
;; absence of `cvs update' output has a specific meaning.
|
||||
(or fis (list (cvs-create-fileinfo 'DIRCHANGE "" "." ""))))))
|
||||
(push `(cvs-parse-process ',dont-change-disc nil ',old-fis) postproc)))
|
||||
(let ((msg (cvs-header-msg args fis)))
|
||||
(cvs-update-header msg 'add)
|
||||
(push `(with-current-buffer cvs-buffer
|
||||
(cvs-update-header ',msg nil))
|
||||
postproc))
|
||||
(setq postproc (if (cdr postproc) (cons 'progn postproc) (car postproc)))
|
||||
(with-current-buffer buf
|
||||
(let ((inhibit-read-only t)) (erase-buffer))
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@
|
|||
(modify-syntax-entry ?\] ")[ " st)
|
||||
(modify-syntax-entry ?{ "(} " st)
|
||||
(modify-syntax-entry ?} "){ " st)
|
||||
(modify-syntax-entry ?\| " 23" st)
|
||||
(modify-syntax-entry ?\| "\" 23b" st)
|
||||
|
||||
;; Other atom delimiters
|
||||
(modify-syntax-entry ?\( "() " st)
|
||||
|
|
@ -103,7 +103,7 @@
|
|||
;; Special characters
|
||||
(modify-syntax-entry ?, "' " st)
|
||||
(modify-syntax-entry ?@ "' " st)
|
||||
(modify-syntax-entry ?# "' 14" st)
|
||||
(modify-syntax-entry ?# "' 14bn" st)
|
||||
(modify-syntax-entry ?\\ "\\ " st)
|
||||
st))
|
||||
|
||||
|
|
|
|||
|
|
@ -5238,6 +5238,7 @@ Enabling Visible mode makes all invisible text temporarily visible.
|
|||
Disabling Visible mode turns off that effect. Visible mode
|
||||
works by saving the value of `buffer-invisibility-spec' and setting it to nil."
|
||||
:lighter " Vis"
|
||||
:group 'editing-basics
|
||||
(when (local-variable-p 'vis-mode-saved-buffer-invisibility-spec)
|
||||
(setq buffer-invisibility-spec vis-mode-saved-buffer-invisibility-spec)
|
||||
(kill-local-variable 'vis-mode-saved-buffer-invisibility-spec))
|
||||
|
|
|
|||
|
|
@ -469,27 +469,7 @@ This function must return nil if it doesn't handle EVENT."
|
|||
(defun tooltip-show-help-function (msg)
|
||||
"Function installed as `show-help-function'.
|
||||
MSG is either a help string to display, or nil to cancel the display."
|
||||
(let ((previous-help tooltip-help-message)
|
||||
mp pos)
|
||||
(if (and mouse-1-click-follows-link
|
||||
(stringp msg)
|
||||
(save-match-data
|
||||
(string-match "^mouse-2" msg))
|
||||
(setq mp (mouse-pixel-position))
|
||||
(consp (setq pos (cdr mp)))
|
||||
(car pos) (>= (car pos) 0)
|
||||
(cdr pos) (>= (cdr pos) 0)
|
||||
(setq pos (posn-at-x-y (car pos) (cdr pos) (car mp)))
|
||||
(windowp (posn-window pos)))
|
||||
(with-current-buffer (window-buffer (posn-window pos))
|
||||
(if (mouse-on-link-p pos)
|
||||
(setq msg (concat
|
||||
(cond
|
||||
((eq mouse-1-click-follows-link 'double) "double-")
|
||||
((and (integerp mouse-1-click-follows-link)
|
||||
(< mouse-1-click-follows-link 0)) "Long ")
|
||||
(t ""))
|
||||
"mouse-1" (substring msg 7))))))
|
||||
(let ((previous-help tooltip-help-message))
|
||||
(setq tooltip-help-message msg)
|
||||
(cond ((null msg)
|
||||
;; Cancel display. This also cancels a delayed tip, if
|
||||
|
|
|
|||
184
lisp/url/vc-dav.el
Normal file
184
lisp/url/vc-dav.el
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
;;; vc-dav.el --- vc.el support for WebDAV
|
||||
|
||||
;; Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Bill Perry <wmperry@gnu.org>
|
||||
;; Maintainer: Bill Perry <wmperry@gnu.org>
|
||||
;; Keywords: url, vc
|
||||
|
||||
;; 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 2, 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., 59 Temple Place - Suite 330,
|
||||
;; Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'url)
|
||||
(require 'url-dav)
|
||||
|
||||
;;; Required functions for a vc backend
|
||||
(defun vc-dav-registered (url)
|
||||
"Return t iff URL is registered with a DAV aware server."
|
||||
(url-dav-vc-registered url))
|
||||
|
||||
(defun vc-dav-state (url)
|
||||
"Return the current version control state of URL.
|
||||
For a list of possible values, see `vc-state'."
|
||||
;; Things we can support for WebDAV
|
||||
;;
|
||||
;; up-to-date - use lockdiscovery
|
||||
;; edited - check for an active lock by us
|
||||
;; USER - use lockdiscovery + owner
|
||||
;;
|
||||
;; These don't make sense for WebDAV
|
||||
;; needs-patch
|
||||
;; needs-merge
|
||||
;; unlocked-changes
|
||||
(let ((locks (url-dav-active-locks url)))
|
||||
(cond
|
||||
((null locks) 'up-to-date)
|
||||
((assoc url locks)
|
||||
;; SOMEBODY has a lock... let's find out who.
|
||||
(setq locks (cdr (assoc url locks)))
|
||||
(if (rassoc url-dav-lock-identifier locks)
|
||||
;; _WE_ have a lock
|
||||
'edited
|
||||
(cdr (car locks)))))))
|
||||
|
||||
(defun vc-dav-checkout-model (url)
|
||||
"Indicate whether URL needs to be \"checked out\" before it can be edited.
|
||||
See `vc-checkout-model' for a list of possible values."
|
||||
;; The only thing we can support with webdav is 'locking
|
||||
'locking)
|
||||
|
||||
;; This should figure out the version # of the file somehow. What is
|
||||
;; the most appropriate property in WebDAV to look at for this?
|
||||
(defun vc-dav-workfile-version (url)
|
||||
"Return the current workfile version of URL."
|
||||
"Unknown")
|
||||
|
||||
(defun vc-dav-register (url &optional rev comment)
|
||||
"Register URL in the DAV backend."
|
||||
;; Do we need to do anything here? FIXME?
|
||||
)
|
||||
|
||||
(defun vc-dav-checkin (url rev comment)
|
||||
"Commit changes in URL to WebDAV.
|
||||
If REV is non-nil, that should become the new revision number.
|
||||
COMMENT is used as a check-in comment."
|
||||
;; This should PUT the resource and release any locks that we hold.
|
||||
)
|
||||
|
||||
(defun vc-dav-checkout (url &optional editable rev destfile)
|
||||
"Check out revision REV of URL into the working area.
|
||||
|
||||
If EDITABLE is non-nil URL should be writable by the user and if
|
||||
locking is used for URL, a lock should also be set.
|
||||
|
||||
If REV is non-nil, that is the revision to check out. If REV is the
|
||||
empty string, that means to check ou tht ehead of the trunk.
|
||||
|
||||
If optional arg DESTFILE is given, it is an alternate filename to
|
||||
write the contents to.
|
||||
"
|
||||
;; This should LOCK the resource.
|
||||
)
|
||||
|
||||
(defun vc-dav-revert (url &optional contents-done)
|
||||
"Revert URL back to the current workfile version.
|
||||
|
||||
If optional arg CONTENTS-DONE is non-nil, then the contents of FILE
|
||||
have already been reverted from a version backup, and this function
|
||||
only needs to update the status of URL within the backend.
|
||||
"
|
||||
;; Should do a GET if !contents_done
|
||||
;; Should UNLOCK the file.
|
||||
)
|
||||
|
||||
(defun vc-dav-print-log (url)
|
||||
"Insert the revision log of URL into the *vc* buffer."
|
||||
)
|
||||
|
||||
(defun vc-dav-diff (url &optional rev1 rev2)
|
||||
"Insert the diff for URL into the *vc-diff* buffer.
|
||||
If REV1 and REV2 are non-nil report differences from REV1 to REV2.
|
||||
If REV1 is nil, use the current workfile version as the older version.
|
||||
If REV2 is nil, use the current workfile contents as the nwer version.
|
||||
|
||||
It should return a status of either 0 (no differences found), or
|
||||
1 (either non-empty diff or the diff is run asynchronously).
|
||||
"
|
||||
;; We should do this asynchronously...
|
||||
;; How would we do it at all, that is the question!
|
||||
)
|
||||
|
||||
|
||||
|
||||
;;; Optional functions
|
||||
;; Should be faster than vc-dav-state - but how?
|
||||
(defun vc-dav-state-heuristic (url)
|
||||
"Estimate the version control state of URL at visiting time."
|
||||
(vc-dav-state url))
|
||||
|
||||
;; This should use url-dav-get-properties with a depth of `1' to get
|
||||
;; all the properties.
|
||||
(defun vc-dav-dir-state (url)
|
||||
"find the version control state of all files in DIR in a fast way."
|
||||
)
|
||||
|
||||
(defun vc-dav-workfile-unchanged-p (url)
|
||||
"Return non-nil if URL is unchanged from its current workfile version."
|
||||
;; Probably impossible with webdav
|
||||
)
|
||||
|
||||
(defun vc-dav-responsible-p (url)
|
||||
"Return non-nil if DAV considers itself `responsible' for URL."
|
||||
;; Check for DAV support on the web server.
|
||||
t)
|
||||
|
||||
(defun vc-dav-could-register (url)
|
||||
"Return non-nil if URL could be registered under this backend."
|
||||
;; Check for DAV support on the web server.
|
||||
t)
|
||||
|
||||
;;; Unimplemented functions
|
||||
;;
|
||||
;; vc-dav-latest-on-branch-p(URL)
|
||||
;; Return non-nil if the current workfile version of FILE is the
|
||||
;; latest on its branch. There are no branches in webdav yet.
|
||||
;;
|
||||
;; vc-dav-mode-line-string(url)
|
||||
;; Return a dav-specific mode line string for URL. Are there any
|
||||
;; specific states that we want exposed?
|
||||
;;
|
||||
;; vc-dav-dired-state-info(url)
|
||||
;; Translate the `vc-state' property of URL into a string that can
|
||||
;; be used in a vc-dired buffer. Are there any extra states that
|
||||
;; we want exposed?
|
||||
;;
|
||||
;; vc-dav-receive-file(url rev)
|
||||
;; Let this backend `receive' a file that is already registered
|
||||
;; under another backend. The default just calls `register', which
|
||||
;; should be sufficient for WebDAV.
|
||||
;;
|
||||
;; vc-dav-unregister(url)
|
||||
;; Unregister URL. Not possible with WebDAV, other than by
|
||||
;; deleting the resource.
|
||||
|
||||
(provide 'vc-dav)
|
||||
|
||||
;; arch-tag: 0a0fb9fe-8190-4c0a-a179-5c291d3a467e
|
||||
;;; vc-dav.el ends here
|
||||
|
|
@ -481,7 +481,9 @@ and does not employ any heuristic at all."
|
|||
"Return non-nil if FILE has not changed since the last checkout."
|
||||
(let ((checkout-time (vc-file-getprop file 'vc-checkout-time))
|
||||
(lastmod (nth 5 (file-attributes file))))
|
||||
(if checkout-time
|
||||
(if (and checkout-time
|
||||
;; Tramp and Ange-FTP return this when they don't know the time.
|
||||
(not (equal lastmod '(0 0))))
|
||||
(equal checkout-time lastmod)
|
||||
(let ((unchanged (vc-call workfile-unchanged-p file)))
|
||||
(vc-file-setprop file 'vc-checkout-time (if unchanged lastmod 0))
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
2005-04-01 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* nonascii.texi (Coding System Basics): Clarify previous change.
|
||||
|
||||
2005-04-01 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* nonascii.texi (Coding System Basics): Describe about rondtrip
|
||||
identity of coding systems.
|
||||
|
||||
2005-03-29 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* text.texi (Buffer Contents): Add filter-buffer-substring and
|
||||
|
|
|
|||
|
|
@ -628,6 +628,27 @@ characters; for example, there are three coding systems for the Cyrillic
|
|||
conversion, but some of them leave the choice unspecified---to be chosen
|
||||
heuristically for each file, based on the data.
|
||||
|
||||
In general, a coding system doesn't guarantee roundtrip identity:
|
||||
decoding text then encoding the result in the same coding system can
|
||||
produce a different byte sequence from the one you originally decoded.
|
||||
However, the following coding systems do guarantee that the result
|
||||
will be the same as what you originally decoded:
|
||||
|
||||
@quotation
|
||||
chinese-big5 chinese-iso-8bit cyrillic-iso-8bit emacs-mule
|
||||
greek-iso-8bit hebrew-iso-8bit iso-latin-1 iso-latin-2 iso-latin-3
|
||||
iso-latin-4 iso-latin-5 iso-latin-8 iso-latin-9 iso-safe
|
||||
japanese-iso-8bit japanese-shift-jis korean-iso-8bit raw-text
|
||||
@end quotation
|
||||
|
||||
Encoding buffer text and then decoding the result can also fail to
|
||||
reproduce the original text. For instance, when you encode Latin-2
|
||||
characters with @code{utf-8} and decode the result using the same
|
||||
coding system, you'll get Unicode characters (of charset
|
||||
@code{mule-unicode-0100-24ff}). When you encode Unicode characters
|
||||
with @code{iso-latin-2} and decode them back with the same coding
|
||||
system, you'll get Latin-2 characters.
|
||||
|
||||
@cindex end of line conversion
|
||||
@dfn{End of line conversion} handles three different conventions used
|
||||
on various systems for representing end of line in files. The Unix
|
||||
|
|
|
|||
|
|
@ -1,3 +1,16 @@
|
|||
2005-04-01 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
Reenable support for I18N to Lucid menus.
|
||||
|
||||
* xlwmenuP.h (_XlwMenu_part): Add fontSet resource.
|
||||
|
||||
* xlwmenu.c (string_width):
|
||||
(MENU_FONT_HEIGHT, MENU_FONT_ASCENT): Ditto.
|
||||
(display_menu_item, make_drawing_gcs, XlwMenuInitialize)
|
||||
(XlwMenuSetValues): Use font if fontSet is NULL, use only
|
||||
font for !HAVE_X_I18N.
|
||||
(xlwMenuResources): Add fontSet resource.
|
||||
|
||||
2005-03-22 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* xlwmenuP.h: Temporary #undef HAVE_X_I18N until FontSet for UTF-8
|
||||
|
|
|
|||
132
lwlib/xlwmenu.c
132
lwlib/xlwmenu.c
|
|
@ -131,20 +131,16 @@ xlwMenuTranslations [] =
|
|||
|
||||
/* FIXME: F10 should enter the menu, the first one in the menu-bar. */
|
||||
|
||||
/* FIXME: HAVE_X_I18N does not work yet. */
|
||||
#undef HAVE_X_I18N
|
||||
|
||||
#define offset(field) XtOffset(XlwMenuWidget, field)
|
||||
static XtResource
|
||||
xlwMenuResources[] =
|
||||
{
|
||||
#ifdef HAVE_X_I18N
|
||||
{XtNfont, XtCFont, XtRFontSet, sizeof(XFontSet),
|
||||
offset(menu.font), XtRString, "XtDefaultFontSet"},
|
||||
#else
|
||||
{XtNfontSet, XtCFontSet, XtRFontSet, sizeof(XFontSet),
|
||||
offset(menu.fontSet), XtRFontSet, NULL},
|
||||
#endif
|
||||
{XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *),
|
||||
offset(menu.font), XtRString, "XtDefaultFont"},
|
||||
#endif
|
||||
{XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
|
||||
offset(menu.foreground), XtRString, "XtDefaultForeground"},
|
||||
{XtNdisabledForeground, XtCDisabledForeground, XtRPixel, sizeof(Pixel),
|
||||
|
|
@ -361,24 +357,31 @@ string_width (mw, s)
|
|||
XlwMenuWidget mw;
|
||||
char *s;
|
||||
{
|
||||
#ifdef HAVE_X_I18N
|
||||
XRectangle ink, logical;
|
||||
XmbTextExtents (mw->menu.font, s, strlen (s), &ink, &logical);
|
||||
return logical.width;
|
||||
#else
|
||||
XCharStruct xcs;
|
||||
int drop;
|
||||
#ifdef HAVE_X_I18N
|
||||
XRectangle ink, logical;
|
||||
if (mw->menu.fontSet)
|
||||
{
|
||||
XmbTextExtents (mw->menu.fontSet, s, strlen (s), &ink, &logical);
|
||||
return logical.width;
|
||||
}
|
||||
#endif
|
||||
|
||||
XTextExtents (mw->menu.font, s, strlen (s), &drop, &drop, &drop, &xcs);
|
||||
return xcs.width;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#ifdef HAVE_X_I18N
|
||||
#define MENU_FONT_HEIGHT(mw) \
|
||||
((mw)->menu.font_extents->max_logical_extent.height)
|
||||
((mw)->menu.fontSet != NULL \
|
||||
? (mw)->menu.font_extents->max_logical_extent.height \
|
||||
: (mw)->menu.font->ascent + (mw)->menu.font->descent)
|
||||
#define MENU_FONT_ASCENT(mw) \
|
||||
(- (mw)->menu.font_extents->max_logical_extent.y)
|
||||
((mw)->menu.fontSet != NULL \
|
||||
? - (mw)->menu.font_extents->max_logical_extent.y \
|
||||
: (mw)->menu.font->ascent)
|
||||
#else
|
||||
#define MENU_FONT_HEIGHT(mw) \
|
||||
((mw)->menu.font->ascent + (mw)->menu.font->descent)
|
||||
|
|
@ -1053,10 +1056,14 @@ display_menu_item (mw, val, ws, where, highlighted_p, horizontal_p,
|
|||
|
||||
|
||||
#ifdef HAVE_X_I18N
|
||||
XmbDrawString (XtDisplay (mw), ws->window, mw->menu.font,
|
||||
#else
|
||||
XDrawString (XtDisplay (mw), ws->window,
|
||||
if (mw->menu.fontSet)
|
||||
XmbDrawString (XtDisplay (mw), ws->window, mw->menu.fontSet,
|
||||
text_gc, x_offset,
|
||||
y + v_spacing + shadow + font_ascent,
|
||||
display_string, strlen (display_string));
|
||||
else
|
||||
#endif
|
||||
XDrawString (XtDisplay (mw), ws->window,
|
||||
text_gc, x_offset,
|
||||
y + v_spacing + shadow + font_ascent,
|
||||
display_string, strlen (display_string));
|
||||
|
|
@ -1083,10 +1090,16 @@ display_menu_item (mw, val, ws, where, highlighted_p, horizontal_p,
|
|||
else if (val->key)
|
||||
{
|
||||
#ifdef HAVE_X_I18N
|
||||
XmbDrawString (XtDisplay (mw), ws->window, mw->menu.font,
|
||||
#else
|
||||
XDrawString (XtDisplay (mw), ws->window,
|
||||
if (mw->menu.fontSet)
|
||||
XmbDrawString (XtDisplay (mw), ws->window,
|
||||
mw->menu.fontSet,
|
||||
text_gc,
|
||||
x + label_width + mw->menu.arrow_spacing,
|
||||
y + v_spacing + shadow + font_ascent,
|
||||
val->key, strlen (val->key));
|
||||
else
|
||||
#endif
|
||||
XDrawString (XtDisplay (mw), ws->window,
|
||||
text_gc,
|
||||
x + label_width + mw->menu.arrow_spacing,
|
||||
y + v_spacing + shadow + font_ascent,
|
||||
|
|
@ -1493,34 +1506,25 @@ make_drawing_gcs (mw)
|
|||
{
|
||||
XGCValues xgcv;
|
||||
float scale;
|
||||
XtGCMask mask = GCForeground | GCBackground;
|
||||
|
||||
#ifndef HAVE_X_I18N
|
||||
#ifdef HAVE_X_I18N
|
||||
if (!mw->menu.fontSet)
|
||||
{
|
||||
xgcv.font = mw->menu.font->fid;
|
||||
mask |= GCFont;
|
||||
}
|
||||
#else
|
||||
xgcv.font = mw->menu.font->fid;
|
||||
mask |= GCFont;
|
||||
#endif
|
||||
xgcv.foreground = mw->menu.foreground;
|
||||
xgcv.background = mw->core.background_pixel;
|
||||
mw->menu.foreground_gc = XtGetGC ((Widget)mw,
|
||||
#ifndef HAVE_X_I18N
|
||||
GCFont |
|
||||
#endif
|
||||
GCForeground | GCBackground,
|
||||
&xgcv);
|
||||
mw->menu.foreground_gc = XtGetGC ((Widget)mw, mask, &xgcv);
|
||||
|
||||
#ifndef HAVE_X_I18N
|
||||
xgcv.font = mw->menu.font->fid;
|
||||
#endif
|
||||
xgcv.foreground = mw->menu.button_foreground;
|
||||
xgcv.background = mw->core.background_pixel;
|
||||
mw->menu.button_gc = XtGetGC ((Widget)mw,
|
||||
#ifndef HAVE_X_I18N
|
||||
GCFont |
|
||||
#endif
|
||||
GCForeground | GCBackground,
|
||||
&xgcv);
|
||||
mw->menu.button_gc = XtGetGC ((Widget)mw, mask, &xgcv);
|
||||
|
||||
#ifndef HAVE_X_I18N
|
||||
xgcv.font = mw->menu.font->fid;
|
||||
#endif
|
||||
xgcv.background = mw->core.background_pixel;
|
||||
|
||||
#define BRIGHTNESS(color) (((color) & 0xff) + (((color) >> 8) & 0xff) + (((color) >> 16) & 0xff))
|
||||
|
|
@ -1545,49 +1549,26 @@ make_drawing_gcs (mw)
|
|||
xgcv.foreground = mw->menu.foreground;
|
||||
xgcv.fill_style = FillStippled;
|
||||
xgcv.stipple = mw->menu.gray_pixmap;
|
||||
mw->menu.disabled_gc = XtGetGC ((Widget)mw,
|
||||
#ifndef HAVE_X_I18N
|
||||
GCFont |
|
||||
#endif
|
||||
GCForeground | GCBackground
|
||||
mw->menu.disabled_gc = XtGetGC ((Widget)mw, mask
|
||||
| GCFillStyle | GCStipple, &xgcv);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Many colors available, use disabled pixel. */
|
||||
xgcv.foreground = mw->menu.disabled_foreground;
|
||||
mw->menu.disabled_gc = XtGetGC ((Widget)mw,
|
||||
#ifndef HAVE_X_I18N
|
||||
GCFont |
|
||||
#endif
|
||||
GCForeground | GCBackground, &xgcv);
|
||||
mw->menu.disabled_gc = XtGetGC ((Widget)mw, mask, &xgcv);
|
||||
}
|
||||
|
||||
#ifndef HAVE_X_I18N
|
||||
xgcv.font = mw->menu.font->fid;
|
||||
#endif
|
||||
xgcv.foreground = mw->menu.button_foreground;
|
||||
xgcv.background = mw->core.background_pixel;
|
||||
xgcv.fill_style = FillStippled;
|
||||
xgcv.stipple = mw->menu.gray_pixmap;
|
||||
mw->menu.inactive_button_gc = XtGetGC ((Widget)mw,
|
||||
#ifndef HAVE_X_I18N
|
||||
GCFont |
|
||||
#endif
|
||||
GCForeground | GCBackground
|
||||
mw->menu.inactive_button_gc = XtGetGC ((Widget)mw, mask
|
||||
| GCFillStyle | GCStipple, &xgcv);
|
||||
|
||||
#ifndef HAVE_X_I18N
|
||||
xgcv.font = mw->menu.font->fid;
|
||||
#endif
|
||||
xgcv.foreground = mw->core.background_pixel;
|
||||
xgcv.background = mw->menu.foreground;
|
||||
mw->menu.background_gc = XtGetGC ((Widget)mw,
|
||||
#ifndef HAVE_X_I18N
|
||||
GCFont |
|
||||
#endif
|
||||
GCForeground | GCBackground,
|
||||
&xgcv);
|
||||
mw->menu.background_gc = XtGetGC ((Widget)mw, mask, &xgcv);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -1793,14 +1774,14 @@ XlwMenuInitialize (request, mw, args, num_args)
|
|||
gray_bitmap_width, gray_bitmap_height,
|
||||
(unsigned long)1, (unsigned long)0, 1);
|
||||
|
||||
#ifndef HAVE_X_I18N
|
||||
/* I don't understand why this ends up 0 sometimes,
|
||||
but it does. This kludge works around it.
|
||||
Can anyone find a real fix? -- rms. */
|
||||
if (mw->menu.font == 0)
|
||||
mw->menu.font = xlwmenu_default_font;
|
||||
#else
|
||||
mw->menu.font_extents = XExtentsOfFontSet (mw->menu.font);
|
||||
#ifdef HAVE_X_I18N
|
||||
if (mw->menu.fontSet)
|
||||
mw->menu.font_extents = XExtentsOfFontSet (mw->menu.fontSet);
|
||||
#endif
|
||||
|
||||
make_drawing_gcs (mw);
|
||||
|
|
@ -1969,7 +1950,10 @@ XlwMenuSetValues (current, request, new)
|
|||
|
||||
if (newmw->core.background_pixel != oldmw->core.background_pixel
|
||||
|| newmw->menu.foreground != oldmw->menu.foreground
|
||||
#ifndef HAVE_X_I18N
|
||||
#ifdef HAVE_X_I18N
|
||||
|| newmw->menu.fontSet != oldmw->menu.fontSet
|
||||
|| (newmw->menu.fontSet == NULL && newmw->menu.font != oldmw->menu.font)
|
||||
#else
|
||||
|| newmw->menu.font != oldmw->menu.font
|
||||
#endif
|
||||
)
|
||||
|
|
@ -1999,10 +1983,10 @@ XlwMenuSetValues (current, request, new)
|
|||
}
|
||||
|
||||
#ifdef HAVE_X_I18N
|
||||
if (newmw->menu.font != oldmw->menu.font)
|
||||
if (newmw->menu.fontSet != oldmw->menu.fontSet && newmw->menu.fontSet != NULL)
|
||||
{
|
||||
redisplay = True;
|
||||
newmw->menu.font_extents = XExtentsOfFontSet (newmw->menu.font);
|
||||
newmw->menu.font_extents = XExtentsOfFontSet (newmw->menu.fontSet);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -24,9 +24,6 @@ Boston, MA 02111-1307, USA. */
|
|||
#include "xlwmenu.h"
|
||||
#include <X11/CoreP.h>
|
||||
|
||||
/* FIXME: HAVE_X_I18N does not work yet. */
|
||||
#undef HAVE_X_I18N
|
||||
|
||||
/* Elements in the stack arrays. */
|
||||
typedef struct _window_state
|
||||
{
|
||||
|
|
@ -47,11 +44,10 @@ typedef struct _XlwMenu_part
|
|||
{
|
||||
/* slots set by the resources */
|
||||
#ifdef HAVE_X_I18N
|
||||
XFontSet font;
|
||||
XFontSet fontSet;
|
||||
XFontSetExtents *font_extents;
|
||||
#else
|
||||
XFontStruct* font;
|
||||
#endif
|
||||
XFontStruct* font;
|
||||
Pixel foreground;
|
||||
Pixel disabled_foreground;
|
||||
Pixel button_foreground;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,29 @@
|
|||
2005-04-01 Jay Belanger <belanger@truman.edu>
|
||||
|
||||
* calc.texi (Troubleshooting Commands): Remove comment about
|
||||
installation.
|
||||
(Installation): Remove section.
|
||||
(Customizable Variables): New section.
|
||||
(Basic Embedded Mode, Customizing Embedded Mode, Graphics)
|
||||
(Graphical Devices): Add references to Customizable Variables.
|
||||
|
||||
2005-04-01 Lute Kamstra <lute@gnu.org>
|
||||
|
||||
* maintaining.texi (Change Log): add-change-log-entry uses
|
||||
add-log-mailing-address.
|
||||
|
||||
2005-03-31 Luc Teirlinck <teirllm@auburn.edu>
|
||||
|
||||
* files.texi (Reverting): Move `auto-revert-check-vc-info' to
|
||||
`VC Mode Line' and put in an xref to that node.
|
||||
(VC Mode Line): Move `auto-revert-check-vc-info' here and clarify
|
||||
its description.
|
||||
|
||||
2005-03-31 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* calendar.texi (Calendar Systems): Say that the Persian calendar
|
||||
implemented here is the arithmetical one championed by Birashk.
|
||||
|
||||
2005-03-30 Glenn Morris <gmorris@ast.cam.ac.uk>
|
||||
|
||||
* programs.texi (Fortran Motion): Fix previous change.
|
||||
|
|
@ -21,7 +47,7 @@
|
|||
(Longlines): New node.
|
||||
(Auto Fill): Don't index "word wrap" here.
|
||||
(Filling): Add Longlines to menu.
|
||||
|
||||
|
||||
2005-03-29 Richard M. Stallman <rms@gnu.org>
|
||||
|
||||
* xresources.texi: Minor fixes.
|
||||
|
|
|
|||
263
man/calc.texi
263
man/calc.texi
|
|
@ -165,7 +165,7 @@ longer Info tutorial.)
|
|||
* Embedded Mode:: Working with formulas embedded in a file.
|
||||
* Programming:: Calc as a programmable calculator.
|
||||
|
||||
* Installation:: Installing Calc as a part of GNU Emacs.
|
||||
* Customizable Variables:: Customizable Variables.
|
||||
* Reporting Bugs:: How to report bugs and make suggestions.
|
||||
|
||||
* Summary:: Summary of Calc commands and functions.
|
||||
|
|
@ -10613,11 +10613,6 @@ If this happens, the easiest workaround is to type @kbd{M-# L}
|
|||
loaded right away. This will cause Emacs to take up a lot more
|
||||
memory than it would otherwise, but it's guaranteed to fix the problem.
|
||||
|
||||
If you seem to run into this problem no matter what you do, or if
|
||||
even the @kbd{M-# L} command crashes, Calc may have been improperly
|
||||
installed. @xref{Installation}, for details of the installation
|
||||
process.
|
||||
|
||||
@node Recursion Depth, Caches, Autoloading Problems, Troubleshooting Commands
|
||||
@subsection Recursion Depth
|
||||
|
||||
|
|
@ -12306,7 +12301,7 @@ if this file exists, and this file becomes the one that Calc will
|
|||
use in the future for commands like @kbd{m m}. The default settings
|
||||
file name is @file{~/.calc.el}. You can see the current file name by
|
||||
giving a blank response to the @kbd{m F} prompt. See also the
|
||||
discussion of the @code{calc-settings-file} variable; @pxref{Installation}.
|
||||
discussion of the @code{calc-settings-file} variable; @pxref{Customizable Variables}.
|
||||
|
||||
If the file name you give is your user init file (typically
|
||||
@file{~/.emacs}), @kbd{m F} will not automatically load the new file. This
|
||||
|
|
@ -29109,7 +29104,7 @@ of the @samp{*Gnuplot Commands*} buffer.
|
|||
@vindex calc-gnuplot-print-command
|
||||
@vindex calc-gnuplot-print-device
|
||||
@vindex calc-gnuplot-print-output
|
||||
If you are installing Calc you may wish to configure the default and
|
||||
You may wish to configure the default and
|
||||
printer devices and output files for the whole system. The relevant
|
||||
Lisp variables are @code{calc-gnuplot-default-device} and @code{-output},
|
||||
and @code{calc-gnuplot-print-device} and @code{-output}. The output
|
||||
|
|
@ -29122,7 +29117,8 @@ display or print the output of GNUPLOT, respectively. These may be
|
|||
@code{nil} if no command is necessary, or strings which can include
|
||||
@samp{%s} to signify the name of the file to be displayed or printed.
|
||||
Or, these variables may contain Lisp expressions which are evaluated
|
||||
to display or print the output.
|
||||
to display or print the output. These variables are customizable
|
||||
(@pxref{Customizable Variables}).
|
||||
|
||||
@kindex g x
|
||||
@pindex calc-graph-display
|
||||
|
|
@ -29910,7 +29906,8 @@ Similarly, Calc will use @TeX{} language for @code{tex-mode},
|
|||
@code{plain-tex-mode} and @code{context-mode}, C language for
|
||||
@code{c-mode} and @code{c++-mode}, FORTRAN language for
|
||||
@code{fortran-mode} and @code{f90-mode}, Pascal for @code{pascal-mode},
|
||||
and eqn for @code{nroff-mode}. These can be overridden with Calc's mode
|
||||
and eqn for @code{nroff-mode} (@pxref{Customizable Variables}).
|
||||
These can be overridden with Calc's mode
|
||||
changing commands (@pxref{Mode Settings in Embedded Mode}). If no
|
||||
suitable language is available, Calc will continue with its current language.
|
||||
|
||||
|
|
@ -30612,10 +30609,10 @@ for @code{Save} have no effect.
|
|||
|
||||
@noindent
|
||||
You can modify Embedded mode's behavior by setting various Lisp
|
||||
variables described here. Use @kbd{M-x set-variable} or
|
||||
@kbd{M-x edit-options} to adjust a variable on the fly, or
|
||||
put a suitable @code{setq} statement in your Calc init file (or
|
||||
@file{~/.emacs}) to set a variable permanently. (Another possibility would
|
||||
variables described here. These variables are customizable
|
||||
(@pxref{Customizable Variables}), or you can use @kbd{M-x set-variable}
|
||||
or @kbd{M-x edit-options} to adjust a variable on the fly.
|
||||
(Another possibility would
|
||||
be to use a file-local variable annotation at the end of the
|
||||
file; @pxref{File Variables, , Local Variables in Files, emacs, the
|
||||
Emacs manual}.)
|
||||
|
|
@ -30760,7 +30757,7 @@ is simply a newline, @code{"\n"}. If you change this, it is a
|
|||
good idea still to end with a newline so that mode annotations
|
||||
will appear on lines by themselves.
|
||||
|
||||
@node Programming, Installation, Embedded Mode, Top
|
||||
@node Programming, Customizable Variables, Embedded Mode, Top
|
||||
@chapter Programming
|
||||
|
||||
@noindent
|
||||
|
|
@ -34610,70 +34607,204 @@ used the first time, your hook should add a variable to the
|
|||
list and also call @code{make-local-variable} itself.
|
||||
@end defvar
|
||||
|
||||
@node Installation, Reporting Bugs, Programming, Top
|
||||
@appendix Installation
|
||||
@node Customizable Variables, Reporting Bugs, Programming, Top
|
||||
@appendix Customizable Variables
|
||||
|
||||
@noindent
|
||||
As of Calc 2.02g, Calc is integrated with GNU Emacs, and thus requires
|
||||
no separate installation of its Lisp files and this manual.
|
||||
GNU Calc is controlled by many variables, most of which can be reset
|
||||
from within Calc. Some variables are less involved with actual
|
||||
calculation, and can be set outside of Calc using Emacs's
|
||||
customization facilities. These variables are listed below.
|
||||
Typing @kbd{M-x customize-variable RET @var{variable-name} RET}
|
||||
will bring up a buffer in which the variable's value can be redefined.
|
||||
Typing @kbd{M-x customize-group RET calc RET} will bring up a buffer which
|
||||
contains all of Calc's customizable variables. (These variables can
|
||||
also be reset by putting the appropriate lines in your .emacs file;
|
||||
@xref{Init File, ,Init File, emacs, The GNU Emacs Manual}.)
|
||||
|
||||
@appendixsec The GNUPLOT Program
|
||||
Some of the customizable variables are regular expressions. A regular
|
||||
expression is basically a pattern that Calc can search for.
|
||||
See @ref{Regexp Search,, Regular Expression Search, emacs, The GNU Emacs Manual}
|
||||
to see how regular expressions work.
|
||||
|
||||
@noindent
|
||||
Calc's graphing commands use the GNUPLOT program. If you have GNUPLOT
|
||||
but you must type some command other than @file{gnuplot} to get it,
|
||||
you should add a command to set the Lisp variable @code{calc-gnuplot-name}
|
||||
to the appropriate file name. You may also need to change the variables
|
||||
@code{calc-gnuplot-plot-command} and @code{calc-gnuplot-print-command} in
|
||||
order to get correct displays and hardcopies, respectively, of your
|
||||
plots.
|
||||
@table @code
|
||||
|
||||
@ifinfo
|
||||
@example
|
||||
@item calc-settings-file
|
||||
|
||||
@end example
|
||||
@end ifinfo
|
||||
|
||||
@appendixsec Settings File
|
||||
|
||||
@noindent
|
||||
@vindex calc-settings-file
|
||||
Another variable you might want to set is @code{calc-settings-file},
|
||||
which holds the file name in which commands like @kbd{m m} and @kbd{Z P}
|
||||
store ``permanent'' definitions. The default value for this variable
|
||||
is @code{"~/.calc.el"}. If @code{calc-settings-file} is not your user
|
||||
init file (typically @file{~/.emacs}) and if the variable
|
||||
@code{calc-loaded-settings-file} is @code{nil}, then Calc will
|
||||
automatically load your settings file (if it exists) the first time
|
||||
Calc is invoked.
|
||||
The variable @code{calc-settings-file} holds the file name in
|
||||
which commands like @kbd{m m} and @kbd{Z P} store ``permanent''
|
||||
definitions.
|
||||
If @code{calc-settings-file} is not your user init file (typically
|
||||
@file{~/.emacs}) and if the variable @code{calc-loaded-settings-file} is
|
||||
@code{nil}, then Calc will automatically load your settings file (if it
|
||||
exists) the first time Calc is invoked.
|
||||
|
||||
@ifinfo
|
||||
The default value for this variable is @code{"~/.calc.el"}.
|
||||
|
||||
@item calc-gnuplot-name
|
||||
|
||||
See @ref{Graphics}.@*
|
||||
The variable @code{calc-gnuplot-name} should be the name of the
|
||||
GNUPLOT program (a string). If you have GNUPLOT installed on your
|
||||
system but Calc is unable to find it, you may need to set this
|
||||
variable. (@pxref{Customizable Variables})
|
||||
You may also need to set some Lisp variables to show Calc how to run
|
||||
GNUPLOT on your system, see @ref{Devices, ,Graphical Devices} . The default value
|
||||
of @code{calc-gnuplot-name} is @code{"gnuplot"}.
|
||||
|
||||
@item calc-gnuplot-plot-command
|
||||
@itemx calc-gnuplot-print-command
|
||||
|
||||
See @ref{Devices, ,Graphical Devices}.@*
|
||||
The variables @code{calc-gnuplot-plot-command} and
|
||||
@code{calc-gnuplot-print-command} represent system commands to
|
||||
display and print the output of GNUPLOT, respectively. These may be
|
||||
@code{nil} if no command is necessary, or strings which can include
|
||||
@samp{%s} to signify the name of the file to be displayed or printed.
|
||||
Or, these variables may contain Lisp expressions which are evaluated
|
||||
to display or print the output.
|
||||
|
||||
The default value of @code{calc-gnuplot-plot-command} is @code{nil},
|
||||
and the default value of @code{calc-gnuplot-print-command} is
|
||||
@code{"lp %s"}.
|
||||
|
||||
@item calc-language-alist
|
||||
|
||||
See @ref{Basic Embedded Mode}.@*
|
||||
The variable @code{calc-language-alist} controls the languages that
|
||||
Calc will associate with major modes. When Calc embedded mode is
|
||||
enabled, it will try to use the current major mode to
|
||||
determine what language should be used. (This can be overridden using
|
||||
Calc's mode changing commands, @xref{Mode Settings in Embedded Mode}.)
|
||||
The variable @code{calc-language-alist} consists of a list of pairs of
|
||||
the form @code{(@var{KEY} . @var{VALUE})}; for example,
|
||||
@code{(latex-mode . latex)} is one such pair. If Calc embedded is
|
||||
activated in a buffer whose major mode is @var{KEY}, it will set itself
|
||||
to use the language @var{VALUE}.
|
||||
|
||||
The default value of @code{calc-language-alist} is
|
||||
@example
|
||||
|
||||
((latex-mode . latex)
|
||||
(tex-mode . tex)
|
||||
(plain-tex-mode . tex)
|
||||
(context-mode . tex)
|
||||
(nroff-mode . eqn)
|
||||
(pascal-mode . pascal)
|
||||
(c-mode . c)
|
||||
(c++-mode . c)
|
||||
(fortran-mode . fortran)
|
||||
(f90-mode . fortran))
|
||||
@end example
|
||||
@end ifinfo
|
||||
@appendixsec Testing the Installation
|
||||
|
||||
@noindent
|
||||
To test your installation of Calc, start a new Emacs and type @kbd{M-# c}
|
||||
to make sure the autoloads and key bindings work. Type @kbd{M-# i}
|
||||
to make sure Calc can find its Info documentation. Press @kbd{q} to
|
||||
exit the Info system and @kbd{M-# c} to re-enter the Calculator.
|
||||
Type @kbd{20 S} to compute the sine of 20 degrees; this will test the
|
||||
autoloading of the extensions modules. The result should be
|
||||
0.342020143326. Finally, press @kbd{M-# c} again to make sure the
|
||||
Calculator can exit.
|
||||
@item calc-embedded-announce-formula
|
||||
|
||||
You may also wish to test the GNUPLOT interface; to plot a sine wave,
|
||||
type @kbd{' [0 ..@: 360], sin(x) @key{RET} g f}. Type @kbd{g q} when you
|
||||
are done viewing the plot.
|
||||
See @ref{Customizing Embedded Mode}.@*
|
||||
The variable @code{calc-embedded-announce-formula} helps determine
|
||||
what formulas @kbd{M-# a} will activate in a buffer. It is a
|
||||
regular expression, and when activating embedded formulas with
|
||||
@kbd{M-# a}, it will tell Calc that what follows is a formula to be
|
||||
activated. (Calc also uses other patterns to find formulas, such as
|
||||
@samp{=>} and @samp{:=}.)
|
||||
|
||||
Calc is now ready to use. If you wish to go through the Calc Tutorial,
|
||||
press @kbd{M-# t} to begin.
|
||||
@example
|
||||
The default pattern is @code{"%Embed\n\\(% .*\n\\)*"}, which checks
|
||||
for @samp{%Embed} followed by any number of lines beginning with
|
||||
@samp{%} and a space.
|
||||
|
||||
@end example
|
||||
@node Reporting Bugs, Summary, Installation, Top
|
||||
@item calc-embedded-open-formula
|
||||
@itemx calc-embedded-close-formula
|
||||
|
||||
See @ref{Customizing Embedded Mode}.@*
|
||||
The variables @code{calc-embedded-open-formula} and
|
||||
@code{calc-embedded-open-formula} control the region that Calc will
|
||||
activate as a formula when Embedded mode is entered with @kbd{M-# e}.
|
||||
They are regular expressions;
|
||||
Calc normally scans backward and forward in the buffer for the
|
||||
nearest text matching these regular expressions to be the ``formula
|
||||
delimiters''.
|
||||
|
||||
The simplest delimiters are blank lines. Other delimiters that
|
||||
Embedded mode understands by default are:
|
||||
@enumerate
|
||||
@item
|
||||
The @TeX{} and La@TeX{} math delimiters @samp{$ $}, @samp{$$ $$},
|
||||
@samp{\[ \]}, and @samp{\( \)};
|
||||
@item
|
||||
Lines beginning with @samp{\begin} and @samp{\end} (except matrix delimiters);
|
||||
@item
|
||||
Lines beginning with @samp{@@} (Texinfo delimiters).
|
||||
@item
|
||||
Lines beginning with @samp{.EQ} and @samp{.EN} (@dfn{eqn} delimiters);
|
||||
@item
|
||||
Lines containing a single @samp{%} or @samp{.\"} symbol and nothing else.
|
||||
@end enumerate
|
||||
|
||||
@item calc-embedded-open-word
|
||||
@itemx calc-embedded-close-word
|
||||
|
||||
See @ref{Customizing Embedded Mode}.@*
|
||||
The variables @code{calc-embedded-open-word} and
|
||||
@code{calc-embedded-close-word} control the region that Calc will
|
||||
activate when Embedded mode is entered with @kbd{M-# w}. They are
|
||||
regular expressions.
|
||||
|
||||
The default values of @code{calc-embedded-open-word} and
|
||||
@code{calc-embedded-close-word} are @code{"^\\|[^-+0-9.eE]"} and
|
||||
@code{"$\\|[^-+0-9.eE]"} respectively.
|
||||
|
||||
@item calc-embedded-open-plain
|
||||
@itemx calc-embedded-close-plain
|
||||
|
||||
See @ref{Customizing Embedded Mode}.@*
|
||||
The variables @code{calc-embedded-open-plain} and
|
||||
@code{calc-embedded-open-plain} are used to delimit ``plain''
|
||||
formulas. Note that these are actual strings, not regular
|
||||
expressions, because Calc must be able to write these string into a
|
||||
buffer as well as to recognize them.
|
||||
|
||||
The default string for @code{calc-embedded-open-plain} is
|
||||
@code{"%%% "}, note the trailing space. The default string for
|
||||
@code{calc-embedded-close-plain} is @code{" %%%\n"}, without
|
||||
the trailing newline here, the first line of a Big mode formula
|
||||
that followed might be shifted over with respect to the other lines.
|
||||
|
||||
@item calc-embedded-open-new-formula
|
||||
@itemx calc-embedded-close-new-formula
|
||||
|
||||
See @ref{Customizing Embedded Mode}.@*
|
||||
The variables @code{calc-embedded-open-new-formula} and
|
||||
@code{calc-embedded-close-new-formula} are strings which are
|
||||
inserted before and after a new formula when you type @kbd{M-# f}.
|
||||
|
||||
The default value of @code{calc-embedded-open-new-formula} is
|
||||
@code{"\n\n"}. If this string begins with a newline character and the
|
||||
@kbd{M-# f} is typed at the beginning of a line, @kbd{M-# f} will skip
|
||||
this first newline to avoid introducing unnecessary blank lines in the
|
||||
file. The default value of @code{calc-embedded-close-new-formula} is
|
||||
also @code{"\n\n"}. The final newline is omitted by @w{@kbd{M-# f}}
|
||||
if typed at the end of a line. (It follows that if @kbd{M-# f} is
|
||||
typed on a blank line, both a leading opening newline and a trailing
|
||||
closing newline are omitted.)
|
||||
|
||||
@item calc-embedded-open-mode
|
||||
@itemx calc-embedded-close-mode
|
||||
|
||||
See @ref{Customizing Embedded Mode}.@*
|
||||
The variables @code{calc-embedded-open-mode} and
|
||||
@code{calc-embedded-close-mode} are strings which Calc will place before
|
||||
and after any mode annotations that it inserts. Calc never scans for
|
||||
these strings; Calc always looks for the annotation itself, so it is not
|
||||
necessary to add them to user-written annotations.
|
||||
|
||||
The default value of @code{calc-embedded-open-mode} is @code{"% "}
|
||||
and the default value of @code{calc-embedded-close-mode} is
|
||||
@code{"\n"}.
|
||||
If you change the value of @code{calc-embedded-close-mode}, it is a good
|
||||
idea still to end with a newline so that mode annotations will appear on
|
||||
lines by themselves.
|
||||
|
||||
@end table
|
||||
|
||||
@node Reporting Bugs, Summary, Customizable Variables, Top
|
||||
@appendix Reporting Bugs
|
||||
|
||||
@noindent
|
||||
|
|
|
|||
|
|
@ -691,6 +691,12 @@ Their calendar consists of twelve months of which the first six have 31
|
|||
days, the next five have 30 days, and the last has 29 in ordinary years
|
||||
and 30 in leap years. Leap years occur in a complicated pattern every
|
||||
four or five years.
|
||||
The calendar implemented here is the arithmetical Persian calendar
|
||||
championed by Birashk, based on a 2,820-year cycle. It differs from
|
||||
the astronomical Persian calendar, which is based on astronomical
|
||||
events. As of this writing the first future discrepancy is projected
|
||||
to occur on March 20, 2025. It is currently not clear what the
|
||||
official calendar of Iran will be that far into the future.
|
||||
|
||||
@cindex Chinese calendar
|
||||
The Chinese calendar is a complicated system of lunar months arranged
|
||||
|
|
|
|||
|
|
@ -1196,8 +1196,9 @@ appear until you deiconify it.
|
|||
@opindex -hb
|
||||
@itemx --horizontal-scroll-bars
|
||||
@opindex --horizontal-scroll-bars
|
||||
@cindex horizontal scroll bars, command-line argument
|
||||
Enable horizontal scroll bars.
|
||||
@c @cindex horizontal scroll bars, command-line argument
|
||||
Enable horizontal scroll bars. Since horizontal scroll bars
|
||||
are not yet implemented, this actually does nothing.
|
||||
|
||||
@item -vb
|
||||
@opindex -vb
|
||||
|
|
|
|||
|
|
@ -940,14 +940,8 @@ Auto-Revert Tail mode, @kbd{M-x auto-revert-tail-mode}.
|
|||
for a changed file. Since checking a remote file is too slow, these
|
||||
modes do not check or revert remote files.
|
||||
|
||||
@vindex auto-revert-check-vc-info
|
||||
Whenever Auto Revert mode reverts the buffer, it updates the version
|
||||
control information, such as the version control number displayed in
|
||||
the mode line. However, this information may not be properly updated
|
||||
if the version control state changes outside of Emacs---for example,
|
||||
if a new version is checked in from outside the current Emacs session.
|
||||
If you set @code{auto-revert-check-vc-info} to @code{t}, Auto Revert
|
||||
mode will update the version control status information periodically.
|
||||
@xref{VC Mode Line}, for Auto Revert peculiarities in buffers that
|
||||
visit files under version control.
|
||||
|
||||
@node Auto Save
|
||||
@section Auto-Saving: Protection Against Disasters
|
||||
|
|
@ -1375,6 +1369,18 @@ locking is not in use). @samp{:} indicates that the file is locked, or
|
|||
that it is modified. If the file is locked by some other user (for
|
||||
instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
|
||||
|
||||
@vindex auto-revert-check-vc-info
|
||||
When Auto Revert mode (@pxref{Reverting}) reverts a buffer that is
|
||||
under version control, it updates the version control information in
|
||||
the mode line. However, Auto Revert mode may not properly update this
|
||||
information if the version control status changes without changes to
|
||||
the work file, from outside the current Emacs session. If you set
|
||||
@code{auto-revert-check-vc-info} to @code{t}, Auto Revert mode updates
|
||||
the version control status information every
|
||||
@code{auto-revert-interval} seconds, even if the work file itself is
|
||||
unchanged. The resulting CPU usage depends on the version control
|
||||
system, but is usually not excessive.
|
||||
|
||||
@node Basic VC Editing
|
||||
@subsection Basic Editing under Version Control
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
@c This is part of the Emacs manual.
|
||||
@c Copyright (C) 1985,86,87,93,94,95,97,99,00,2001 Free Software Foundation, Inc.
|
||||
@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
|
||||
@c 2001, 2005 Free Software Foundation, Inc.
|
||||
@c See file emacs.texi for copying conditions.
|
||||
@node Maintaining, Abbrevs, Building, Top
|
||||
@chapter Maintaining Programs
|
||||
|
|
@ -8,8 +9,8 @@
|
|||
@cindex program editing
|
||||
|
||||
This chapter describes Emacs features for maintaining programs. The
|
||||
version control features (@pxref{Version Control}) are also
|
||||
particularly useful for this purpose.
|
||||
version control features (@pxref{Version Control}) are also particularly
|
||||
useful for this purpose.
|
||||
|
||||
@menu
|
||||
* Change Log:: Maintaining a change history for your program.
|
||||
|
|
@ -51,13 +52,13 @@ permitted provided the copyright notice and this notice are preserved.
|
|||
@noindent
|
||||
Of course, you should substitute the proper years and copyright holder.
|
||||
|
||||
A change log entry starts with a header line that contains the
|
||||
current date, your name, and your email address (taken from the
|
||||
variable @code{user-mail-address}). Aside from these header lines,
|
||||
every line in the change log starts with a space or a tab. The bulk
|
||||
of the entry consists of @dfn{items}, each of which starts with a line
|
||||
starting with whitespace and a star. Here are two entries, both dated
|
||||
in May 1993, each with two items:
|
||||
A change log entry starts with a header line that contains the current
|
||||
date, your name, and your email address (taken from the variable
|
||||
@code{add-log-mailing-address}). Aside from these header lines, every
|
||||
line in the change log starts with a space or a tab. The bulk of the
|
||||
entry consists of @dfn{items}, each of which starts with a line starting
|
||||
with whitespace and a star. Here are two entries, both dated in May
|
||||
1993, each with two items:
|
||||
|
||||
@iftex
|
||||
@medbreak
|
||||
|
|
|
|||
|
|
@ -1,3 +1,56 @@
|
|||
2005-04-02 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
|
||||
|
||||
* alloc.c (allocate_string_data): Call BLOCK_INPUT before calling
|
||||
mallopt.
|
||||
|
||||
* ralloc.c (r_alloc_init): Ditto.
|
||||
|
||||
2005-04-01 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* lisp.h (Vascii_upcase_table, Vascii_canon_table,
|
||||
Vascii_eqv_table): Extern them.
|
||||
|
||||
* casetab.c (set_case_table): If standard is nonzero, setup
|
||||
Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table.
|
||||
|
||||
* search.c (looking_at_1): Use current_buffer->case_canon_table,
|
||||
not DOWNCASE_TABLE.
|
||||
(string_match_1): Likewise.
|
||||
(fast_c_string_match_ignore_case): Use Vascii_canon_table, not
|
||||
Vascii_downcase_table.
|
||||
(fast_string_match_ignore_case): Likewise.
|
||||
(search_buffer): Fix checking of boyer-moore usability.
|
||||
(boyer_moore): Calculate translate_prev_byte1/2/3 in advance. No
|
||||
need of tranlating characters in PAT. Fix calculation of
|
||||
simple_translate.
|
||||
|
||||
2005-03-31 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* xterm.c [HAVE_XAW3D]: Include ThreeD.h for XtNbeNiceToColormap.
|
||||
(x_create_toolkit_scroll_bar): Test XtNbeNiceToColormap before using it.
|
||||
Use XtNtopShadowPixel and XtNbottomShadowPixel.
|
||||
(x_set_toolkit_scroll_bar_thumb): Remove ugly old hack that didn't
|
||||
really work and that breaks with some versions of Xaw3d.
|
||||
|
||||
2005-03-31 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* coding.c (syms_of_coding): Fix previous change.
|
||||
|
||||
2005-03-30 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* fileio.c (search_embedded_absfilename): Fix last change.
|
||||
|
||||
2005-03-25 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* coding.c (syms_of_coding): Suggest to use set-coding-category in
|
||||
the docstring of coding-category-list.
|
||||
|
||||
2005-03-31 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* keyboard.c (Qmouse_fixup_help_message): New var.
|
||||
(syms_of_keyboard): Intern and staticpro it.
|
||||
(show_help_echo): Apply mouse-fixup-help-message to help string.
|
||||
|
||||
2005-03-30 Kim F. Storm <storm@cua.dk>
|
||||
|
||||
* xdisp.c (display_line): Allow multiple overlay arrows in window.
|
||||
|
|
@ -15,7 +68,7 @@
|
|||
|
||||
2005-03-26 Lennart Borgman <lennart.borgman.073@student.lu.se>
|
||||
|
||||
* w32term.h (x_output): add focus_state.
|
||||
* w32term.h (x_output): Add focus_state.
|
||||
|
||||
* w32term.c (x_focus_changed, w32_detect_focus_change): New functions.
|
||||
(w32_read_socket) [WM_SETFOCUS]: Call w32_detect_focus_change.
|
||||
|
|
|
|||
|
|
@ -1933,14 +1933,18 @@ allocate_string_data (s, nchars, nbytes)
|
|||
mmap'ed data typically have an address towards the top of the
|
||||
address space, which won't fit into an EMACS_INT (at least on
|
||||
32-bit systems with the current tagging scheme). --fx */
|
||||
BLOCK_INPUT;
|
||||
mallopt (M_MMAP_MAX, 0);
|
||||
UNBLOCK_INPUT;
|
||||
#endif
|
||||
|
||||
b = (struct sblock *) lisp_malloc (size + GC_STRING_EXTRA, MEM_TYPE_NON_LISP);
|
||||
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
/* Back to a reasonable maximum of mmap'ed areas. */
|
||||
BLOCK_INPUT;
|
||||
mallopt (M_MMAP_MAX, MMAP_MAX_AREAS);
|
||||
UNBLOCK_INPUT;
|
||||
#endif
|
||||
|
||||
b->next_free = &b->first_data;
|
||||
|
|
|
|||
|
|
@ -161,7 +161,12 @@ set_case_table (table, standard)
|
|||
XCHAR_TABLE (canon)->extras[2] = eqv;
|
||||
|
||||
if (standard)
|
||||
Vascii_downcase_table = table;
|
||||
{
|
||||
Vascii_downcase_table = table;
|
||||
Vascii_upcase_table = up;
|
||||
Vascii_canon_table = canon;
|
||||
Vascii_eqv_table = eqv;
|
||||
}
|
||||
else
|
||||
{
|
||||
current_buffer->downcase_table = table;
|
||||
|
|
|
|||
|
|
@ -9357,7 +9357,7 @@ associated with each coding-category one by one in this order. When
|
|||
one algorithm agrees with a byte sequence of source text, the coding
|
||||
system bound to the corresponding coding-category is selected.
|
||||
|
||||
Don't modify this variable directly, but use `set-coding-category'. */);
|
||||
Don't modify this variable directly, but use `set-coding-priority'. */);
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
|
|||
|
|
@ -523,6 +523,10 @@ Lisp_Object Qmake_frame_visible;
|
|||
Lisp_Object Qselect_window;
|
||||
Lisp_Object Qhelp_echo;
|
||||
|
||||
#ifdef HAVE_MOUSE
|
||||
Lisp_Object Qmouse_fixup_help_message;
|
||||
#endif
|
||||
|
||||
/* Symbols to denote kinds of events. */
|
||||
Lisp_Object Qfunction_key;
|
||||
Lisp_Object Qmouse_click;
|
||||
|
|
@ -2304,6 +2308,11 @@ show_help_echo (help, window, object, pos, ok_to_overwrite_keystroke_echo)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef HAVE_MOUSE
|
||||
if (!noninteractive && STRINGP (help))
|
||||
help = call1 (Qmouse_fixup_help_message, help);
|
||||
#endif
|
||||
|
||||
if (STRINGP (help) || NILP (help))
|
||||
{
|
||||
if (!NILP (Vshow_help_function))
|
||||
|
|
@ -10873,6 +10882,11 @@ syms_of_keyboard ()
|
|||
Qmenu_bar = intern ("menu-bar");
|
||||
staticpro (&Qmenu_bar);
|
||||
|
||||
#ifdef HAVE_MOUSE
|
||||
Qmouse_fixup_help_message = intern ("mouse-fixup-help-message");
|
||||
staticpro (&Qmouse_fixup_help_message);
|
||||
#endif
|
||||
|
||||
Qabove_handle = intern ("above-handle");
|
||||
staticpro (&Qabove_handle);
|
||||
Qhandle = intern ("handle");
|
||||
|
|
|
|||
|
|
@ -1879,7 +1879,8 @@ extern Lisp_Object case_temp2;
|
|||
NATNUMP (case_temp2)) \
|
||||
? XFASTINT (case_temp2) : case_temp1)
|
||||
|
||||
extern Lisp_Object Vascii_downcase_table;
|
||||
extern Lisp_Object Vascii_downcase_table, Vascii_upcase_table;
|
||||
extern Lisp_Object Vascii_canon_table, Vascii_eqv_table;
|
||||
|
||||
/* Number of bytes of structure consed since last GC. */
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ Boston, MA 02111-1307, USA. */
|
|||
|
||||
#include <config.h>
|
||||
#include "lisp.h" /* Needed for VALBITS. */
|
||||
#include "blockinput.h"
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
|
|
@ -1255,7 +1256,9 @@ r_alloc_init ()
|
|||
#endif
|
||||
|
||||
#ifdef DOUG_LEA_MALLOC
|
||||
mallopt (M_TOP_PAD, 64 * 4096);
|
||||
BLOCK_INPUT;
|
||||
mallopt (M_TOP_PAD, 64 * 4096);
|
||||
UNBLOCK_INPUT;
|
||||
#else
|
||||
#ifndef SYSTEM_MALLOC
|
||||
/* Give GNU malloc's morecore some hysteresis
|
||||
|
|
|
|||
67
src/search.c
67
src/search.c
|
|
@ -259,7 +259,7 @@ looking_at_1 (string, posix)
|
|||
CHECK_STRING (string);
|
||||
bufp = compile_pattern (string, &search_regs,
|
||||
(!NILP (current_buffer->case_fold_search)
|
||||
? DOWNCASE_TABLE : Qnil),
|
||||
? current_buffer->case_canon_table : Qnil),
|
||||
posix,
|
||||
!NILP (current_buffer->enable_multibyte_characters));
|
||||
|
||||
|
|
@ -365,7 +365,7 @@ string_match_1 (regexp, string, start, posix)
|
|||
|
||||
bufp = compile_pattern (regexp, &search_regs,
|
||||
(!NILP (current_buffer->case_fold_search)
|
||||
? DOWNCASE_TABLE : Qnil),
|
||||
? current_buffer->case_canon_table : Qnil),
|
||||
posix,
|
||||
STRING_MULTIBYTE (string));
|
||||
immediate_quit = 1;
|
||||
|
|
@ -465,7 +465,7 @@ fast_c_string_match_ignore_case (regexp, string)
|
|||
regexp = string_make_unibyte (regexp);
|
||||
re_match_object = Qt;
|
||||
bufp = compile_pattern (regexp, 0,
|
||||
Vascii_downcase_table, 0,
|
||||
Vascii_canon_table, 0,
|
||||
0);
|
||||
immediate_quit = 1;
|
||||
val = re_search (bufp, string, len, 0, len, 0);
|
||||
|
|
@ -482,7 +482,7 @@ fast_string_match_ignore_case (regexp, string)
|
|||
int val;
|
||||
struct re_pattern_buffer *bufp;
|
||||
|
||||
bufp = compile_pattern (regexp, 0, Vascii_downcase_table,
|
||||
bufp = compile_pattern (regexp, 0, Vascii_canon_table,
|
||||
0, STRING_MULTIBYTE (string));
|
||||
immediate_quit = 1;
|
||||
re_match_object = string;
|
||||
|
|
@ -1253,6 +1253,7 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n,
|
|||
if (RE && *base_pat == '\\')
|
||||
{
|
||||
len--;
|
||||
raw_pattern_size--;
|
||||
base_pat++;
|
||||
}
|
||||
c = *base_pat++;
|
||||
|
|
@ -1487,16 +1488,18 @@ simple_search (n, pat, len, len_byte, trt, pos, pos_byte, lim, lim_byte)
|
|||
return n;
|
||||
}
|
||||
|
||||
/* Do Boyer-Moore search N times for the string PAT,
|
||||
/* Do Boyer-Moore search N times for the string BASE_PAT,
|
||||
whose length is LEN/LEN_BYTE,
|
||||
from buffer position POS/POS_BYTE until LIM/LIM_BYTE.
|
||||
DIRECTION says which direction we search in.
|
||||
TRT and INVERSE_TRT are translation tables.
|
||||
Characters in PAT are already translated by TRT.
|
||||
|
||||
This kind of search works if all the characters in PAT that have
|
||||
nontrivial translation are the same aside from the last byte. This
|
||||
makes it possible to translate just the last byte of a character,
|
||||
and do so after just a simple test of the context.
|
||||
This kind of search works if all the characters in BASE_PAT that
|
||||
have nontrivial translation are the same aside from the last byte.
|
||||
This makes it possible to translate just the last byte of a
|
||||
character, and do so after just a simple test of the context.
|
||||
CHARSET_BASE is nonzero iff there is such a non-ASCII character.
|
||||
|
||||
If that criterion is not satisfied, do not call this function. */
|
||||
|
||||
|
|
@ -1523,8 +1526,13 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt,
|
|||
int multibyte = ! NILP (current_buffer->enable_multibyte_characters);
|
||||
|
||||
unsigned char simple_translate[0400];
|
||||
int translate_prev_byte = 0;
|
||||
int translate_anteprev_byte = 0;
|
||||
/* These are set to the preceding bytes of a byte to be translated
|
||||
if charset_base is nonzero. As the maximum byte length of a
|
||||
multibyte character is 4, we have to check at most three previous
|
||||
bytes. */
|
||||
int translate_prev_byte1 = 0;
|
||||
int translate_prev_byte2 = 0;
|
||||
int translate_prev_byte3 = 0;
|
||||
|
||||
#ifdef C_ALLOCA
|
||||
int BM_tab_space[0400];
|
||||
|
|
@ -1590,6 +1598,23 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt,
|
|||
for (i = 0; i < 0400; i++)
|
||||
simple_translate[i] = i;
|
||||
|
||||
if (charset_base)
|
||||
{
|
||||
/* Setup translate_prev_byte1/2/3 from CHARSET_BASE. Only a
|
||||
byte following them are the target of translation. */
|
||||
int sample_char = charset_base | 0x20;
|
||||
unsigned char str[MAX_MULTIBYTE_LENGTH];
|
||||
int len = CHAR_STRING (sample_char, str);
|
||||
|
||||
translate_prev_byte1 = str[len - 2];
|
||||
if (len > 2)
|
||||
{
|
||||
translate_prev_byte2 = str[len - 3];
|
||||
if (len > 3)
|
||||
translate_prev_byte3 = str[len - 4];
|
||||
}
|
||||
}
|
||||
|
||||
i = 0;
|
||||
while (i != infinity)
|
||||
{
|
||||
|
|
@ -1777,9 +1802,13 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt,
|
|||
|| ((cursor == tail_end_ptr
|
||||
|| CHAR_HEAD_P (cursor[1]))
|
||||
&& (CHAR_HEAD_P (cursor[0])
|
||||
|| (translate_prev_byte == cursor[-1]
|
||||
&& (CHAR_HEAD_P (translate_prev_byte)
|
||||
|| translate_anteprev_byte == cursor[-2])))))
|
||||
/* Check if this is the last byte of
|
||||
a translable character. */
|
||||
|| (translate_prev_byte1 == cursor[-1]
|
||||
&& (CHAR_HEAD_P (translate_prev_byte1)
|
||||
|| (translate_prev_byte2 == cursor[-2]
|
||||
&& (CHAR_HEAD_P (translate_prev_byte2)
|
||||
|| (translate_prev_byte3 == cursor[-3]))))))))
|
||||
ch = simple_translate[*cursor];
|
||||
else
|
||||
ch = *cursor;
|
||||
|
|
@ -1857,9 +1886,13 @@ boyer_moore (n, base_pat, len, len_byte, trt, inverse_trt,
|
|||
|| ((ptr == tail_end_ptr
|
||||
|| CHAR_HEAD_P (ptr[1]))
|
||||
&& (CHAR_HEAD_P (ptr[0])
|
||||
|| (translate_prev_byte == ptr[-1]
|
||||
&& (CHAR_HEAD_P (translate_prev_byte)
|
||||
|| translate_anteprev_byte == ptr[-2])))))
|
||||
/* Check if this is the last byte of a
|
||||
translable character. */
|
||||
|| (translate_prev_byte1 == ptr[-1]
|
||||
&& (CHAR_HEAD_P (translate_prev_byte1)
|
||||
|| (translate_prev_byte2 == ptr[-2]
|
||||
&& (CHAR_HEAD_P (translate_prev_byte2)
|
||||
|| translate_prev_byte3 == ptr[-3])))))))
|
||||
ch = simple_translate[*ptr];
|
||||
else
|
||||
ch = *ptr;
|
||||
|
|
|
|||
29
src/xterm.c
29
src/xterm.c
|
|
@ -131,9 +131,7 @@ extern void _XEditResCheckMessages ();
|
|||
#ifdef HAVE_XAW3D
|
||||
#include <X11/Xaw3d/Simple.h>
|
||||
#include <X11/Xaw3d/Scrollbar.h>
|
||||
#define ARROW_SCROLLBAR
|
||||
#define XAW_ARROW_SCROLLBARS
|
||||
#include <X11/Xaw3d/ScrollbarP.h>
|
||||
#include <X11/Xaw3d/ThreeD.h>
|
||||
#else /* !HAVE_XAW3D */
|
||||
#include <X11/Xaw/Simple.h>
|
||||
#include <X11/Xaw/Scrollbar.h>
|
||||
|
|
@ -4553,6 +4551,7 @@ x_create_toolkit_scroll_bar (f, bar)
|
|||
f->output_data.x->scroll_bar_bottom_shadow_pixel = pixel;
|
||||
}
|
||||
|
||||
#ifdef XtNbeNiceToColormap
|
||||
/* Tell the toolkit about them. */
|
||||
if (f->output_data.x->scroll_bar_top_shadow_pixel == -1
|
||||
|| f->output_data.x->scroll_bar_bottom_shadow_pixel == -1)
|
||||
|
|
@ -4576,16 +4575,17 @@ x_create_toolkit_scroll_bar (f, bar)
|
|||
pixel = f->output_data.x->scroll_bar_top_shadow_pixel;
|
||||
if (pixel != -1)
|
||||
{
|
||||
XtSetArg (av[ac], "topShadowPixel", pixel);
|
||||
XtSetArg (av[ac], XtNtopShadowPixel, pixel);
|
||||
++ac;
|
||||
}
|
||||
pixel = f->output_data.x->scroll_bar_bottom_shadow_pixel;
|
||||
if (pixel != -1)
|
||||
{
|
||||
XtSetArg (av[ac], "bottomShadowPixel", pixel);
|
||||
XtSetArg (av[ac], XtNbottomShadowPixel, pixel);
|
||||
++ac;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
widget = XtCreateWidget (scroll_bar_name, scrollbarWidgetClass,
|
||||
f->output_data.x->edit_widget, av, ac);
|
||||
|
|
@ -4731,30 +4731,11 @@ x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole)
|
|||
XawScrollbarSetThumb (widget, top, shown);
|
||||
else
|
||||
{
|
||||
#ifdef HAVE_XAW3D
|
||||
ScrollbarWidget sb = (ScrollbarWidget) widget;
|
||||
int scroll_mode = 0;
|
||||
|
||||
/* `scroll_mode' only exists with Xaw3d + ARROW_SCROLLBAR. */
|
||||
if (xaw3d_arrow_scroll)
|
||||
{
|
||||
/* Xaw3d stupidly ignores resize requests while dragging
|
||||
so we have to make it believe it's not in dragging mode. */
|
||||
scroll_mode = sb->scrollbar.scroll_mode;
|
||||
if (scroll_mode == 2)
|
||||
sb->scrollbar.scroll_mode = 0;
|
||||
}
|
||||
#endif
|
||||
/* Try to make the scrolling a tad smoother. */
|
||||
if (!xaw3d_pick_top)
|
||||
shown = min (shown, old_shown);
|
||||
|
||||
XawScrollbarSetThumb (widget, top, shown);
|
||||
|
||||
#ifdef HAVE_XAW3D
|
||||
if (xaw3d_arrow_scroll && scroll_mode == 2)
|
||||
sb->scrollbar.scroll_mode = scroll_mode;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue