0
0
mirror of https://github.com/vim/vim.git synced 2025-07-04 23:07:33 -04:00

updated for version 7.0027

This commit is contained in:
Bram Moolenaar 2004-12-31 20:56:11 +00:00
parent 8fc061c7f7
commit dfccaf0f00
20 changed files with 2304 additions and 104 deletions

View File

@ -5,19 +5,19 @@ static char * tb_print_xpm[] = {
/* colors */
" s none m none c none",
". s iconColor1 m black c #000000",
"X s iconColor2 m none c #FFFFFF",
"o s iconGray2 m none c #bdbdbd",
"X s iconColor2 m none c #FFFFFF",
"o s iconGray2 m none c #bdbdbd",
"O s iconGray5 m black c #737373",
"+ s bottomShadowColor m black c #5D6069",
"@ c #FF1144",
/* pixels */
" ....... ",
" .XXXXX.. ",
" .X...X.X. ",
" .XXXXX.X. ",
" .XXXXX.... ",
" .X...XXXX.O ",
" .XXXXXXXX.O ",
" .X.....XX.O ",
" .XXXXXXXX. ",
" .XXXXXXXX. ",
" ..XXXXXXXX.. ",
" .XXXXXXXX.O ",
"................ ",
".XXXXXXXXXXXXXO. ",

View File

@ -1,4 +1,4 @@
*help.txt* For Vim version 7.0aa. Last change: 2004 Jul 05
*help.txt* For Vim version 7.0aa. Last change: 2004 Dec 30
VIM - main help file
k
@ -189,12 +189,6 @@ Standard plugins ~
|pi_expl.txt| File explorer
LOCAL ADDITIONS: *local-additions*
|engspchk.txt| English Spelling Checker (v57) May 25, 2004
|example.txt| Example for a locally added help file
|matchit.txt| Extended "%" matching
|test.txt| Testing the hélp cömmånd nôw
|typecorr.txt| Plugin for correcting typing mistakes
|helpp.txt| Dummy line to avoid an error message
------------------------------------------------------------------------------
*bars* Bars example

View File

@ -0,0 +1,261 @@
" Menu Translations: Polish
" Maintainer: Rafal M. Sulejman <rms@poczta.onet.pl>
" Initial Translation: Marcin Dalecki <dalecki@cs.net.pl>
" Last Change: 06 Sep 2001
" Quit when menu translations have already been done.
if exists("did_menu_trans")
finish
endif
let did_menu_trans = 1
scriptencoding iso-8859-2
" Help menu
menutrans &Help Po&moc
menutrans &Overview<Tab><F1> &Spis\ Treci<Tab><F1>
menutrans &How-to\ links &Odnoniki\ JTZ
menutrans &Credits Po&dziêkowania
menutrans &User\ Manual Podrêcznik\ &u¿ytkownika
menutrans Co&pying &Kopiowanie
menutrans &Version &Wersja
menutrans &About o\ &Aplikacji
" File menu
menutrans &File &Plik
menutrans &Open\.\.\.<Tab>:e &Otwórz\.\.\.<Tab>:e
menutrans Sp&lit-Open\.\.\.<Tab>:sp Otwórz\ z\ &podzia³em\.\.\.<Tab>:sp
menutrans &New<Tab>:enew &Nowy<Tab>:enew
menutrans &Close<Tab>:close &Zamknij<Tab>:close
menutrans &Save<Tab>:w Za&pisz<Tab>:w
menutrans Save\ &As\.\.\.<Tab>:sav Zapisz\ &jako\.\.\.<Tab>:sav
menutrans Split\ &Diff\ with\.\.\. Podziel\ na\ diff-a\ miêdzy\.\.\.
menutrans Split\ Patched\ &By\.\.\. Podziel\ ³atane\ przez\.\.\.
menutrans &Print &Drukuj
menutrans Sa&ve-Exit<Tab>:wqa Zapisz\ i\ w&yjd¼<Tab>:wqa
menutrans E&xit<Tab>:qa &Wyjcie<Tab>:qa
" Edit menu
menutrans &Edit &Edycja
menutrans &Undo<Tab>u &Cofnij<Tab>u
menutrans &Redo<Tab>^R &Ponów<Tab>^R
menutrans Rep&eat<Tab>\. P&owtórz<Tab>\.
menutrans Cu&t<Tab>"+x W&ytnij<Tab>"+x
menutrans &Copy<Tab>"+y &Kopiuj<Tab>"+y
menutrans &Paste<Tab>"+gP &Wklej<Tab>"+gP
menutrans Put\ &Before<Tab>[p Wstaw\ p&rzed<Tab>[p
menutrans Put\ &After<Tab>]p Wstaw\ p&o<Tab>]p
menutrans &Select\ all<Tab>ggVG Z&aznacz\ ca³oæ<Tab>ggVG
menutrans &Find\.\.\. &Szukaj\.\.\.
menutrans &Find<Tab>/ &Szukaj<Tab>/
menutrans Find\ and\ Rep&lace\.\.\. &Zamieñ\.\.\.
menutrans Find\ and\ Rep&lace<Tab>:%s &Zamieñ<Tab>:%s
menutrans Find\ and\ Rep&lace &Zamieñ
menutrans Find\ and\ Rep&lace<Tab>:s &Zamieñ<Tab>:s
menutrans Options\.\.\. Opcje\.\.\.
menutrans Settings\ &Window Ustawienia
menutrans &Global\ Settings Ustawienia\ &globalne
menutrans F&ile\ Settings Ustawienia\ dla\ pliku
menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! &Numerowanie\ wierszy<Tab>:set\ nu!
menutrans Toggle\ &List\ Mode<Tab>:set\ list! Tryb\ &listowania<Tab>:set\ list!
menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap! Za&wijanie\ wierszy<Tab>:set\ wrap!
menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr! £amanie\ wie&rsza<Tab>:set\ lbr!
menutrans Toggle\ &expand-tab<Tab>:set\ et! Rozwijani&e\ tabulatorów<Tab>:set\ et!
menutrans Toggle\ &auto-indent<Tab>:set\ ai! &Automatyczne\ wciêcia<Tab>:set\ ai!
menutrans Toggle\ &C-indenting<Tab>:set\ cin! Wciêcia\ &C<Tab>:set\ cin!
menutrans &Shiftwidth &Szerokoæ\ wciêcia
menutrans Te&xt\ Width\.\.\. D³ugoæ\ linii\.\.\.
menutrans &File\ Format\.\.\. &Format\ pliku\.\.\.
menutrans Soft\ &Tabstop Rozmiar\ &tabulacji
menutrans C&olor\ Scheme Zestawy\ kolorów
menutrans &Keymap Uk³ady\ klawiatury
menutrans None ¿aden
menutrans accents akcenty
menutrans hebrew hebrajski
menutrans hebrewp hebrajski\ p
menutrans russian-jcuken rosyjski-jcuken
menutrans russian-jcukenwin rosyjski-jcukenwin
menutrans russian-yawerty rosyjski-yawerty
menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Podkrelanie\ &wzorców<Tab>:set\ hls!
menutrans Toggle\ &Ignore-case<Tab>:set\ ic! &Ignorowanie\ wielkoci<Tab>:set\ ic!
menutrans Toggle\ &Showmatch<Tab>:set\ sm! &Pokazywanie\ pasuj±cych<Tab>:set\ sm!
menutrans &Context\ lines Wiersze\ &kontekstowe
menutrans &Virtual\ Edit Obróbka\ &wirtualna
menutrans Never Nigdy
menutrans Block\ Selection Zaznaczanie\ zakresu
menutrans Insert\ mode Tryb\ wprowadzania
menutrans Block\ and\ Insert Zakres\ i\ wprowadzanie
menutrans Always Zawsze
menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! Tryb\ wprowadzania<Tab>:set\ im!
menutrans Search\ &Path\.\.\. Scie¿ka\ poszukiwania\.\.\.
menutrans Ta&g\ Files\.\.\. Pliki\ tagów\.\.\.
"
" GUI options
menutrans Toggle\ &Toolbar Pasek\ narzêdzi
menutrans Toggle\ &Bottom\ Scrollbar Dolny\ przewijacz
menutrans Toggle\ &Left\ Scrollbar &Lewy\ przewijacz
menutrans Toggle\ &Right\ Scrollbar P&rawy\ przewijacz
" Programming menu
menutrans &Tools &Narzêdzia
menutrans &Jump\ to\ this\ tag<Tab>g^] &Skocz\ do\ taga<Tab>g^]
menutrans Jump\ &back<Tab>^T Skok\ w\ &ty³<Tab>^T
menutrans Build\ &Tags\ File &Twórz\ plik\ tagów
" Folding
menutrans &Folding &Zwijanie
menutrans &Enable/Disable\ folds<Tab>zi &Zwiñ/rozwiñ<Tab>zi
menutrans &View\ Cursor\ Line<Tab>zv &Linia\ kursora<Tab>zv
menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx &Tylko\ linia\ kursora<Tab>zMzx
menutrans C&lose\ more\ folds<Tab>zm Zwiñ\ wiêcej<Tab>zm
menutrans &Close\ all\ folds<Tab>zM Z&wiñ\ wszystkie<Tab>zM
menutrans &Open\ all\ folds<Tab>zR Rozwiñ\ wszystkie<Tab>zR
menutrans O&pen\ more\ folds<Tab>zr R&ozwiñ\ wiêcej<Tab>zr
menutrans Create\ &Fold<Tab>zf T&wórz\ zawiniêcie<Tab>zf
menutrans &Delete\ Fold<Tab>zd U&suñ\ zawiniêcie<Tab>zd
menutrans Delete\ &All\ Folds<Tab>zD &Usuñ\ wszystkie\ zawiniêcia<Tab>zD
menutrans Fold\ column\ &width Szerokoæ\ kolumny\ za&winiêæ
menutrans Fold\ Met&hod Me&toda\ zawijania
menutrans M&anual &Rêcznie
menutrans I&ndent W&ciêcie
menutrans E&xpression W&yrazenie
menutrans S&yntax S&k³adnia
menutrans Ma&rker Zn&acznik
" Diff
menutrans &Update &Odwie¿
menutrans &Get\ Block &Pobierz\ blok
menutrans &Put\ Block &Wstaw\ blok
" Make and stuff...
menutrans &Make<Tab>:make M&ake<Tab>:make
menutrans &List\ Errors<Tab>:cl &Poka¿\ b³êdy<Tab>:cl
menutrans L&ist\ Messages<Tab>:cl! W&ylicz\ powiadomienia<Tab>:cl!
menutrans &Next\ Error<Tab>:cn &Nastêpny\ b³±d<Tab>:cn
menutrans &Previous\ Error<Tab>:cp &Poprzedni\ b³±d<Tab>:cp
menutrans &Older\ List<Tab>:cold &Starsza\ lista<Tab>:cold
menutrans N&ewer\ List<Tab>:cnew N&owsza\ lista<Tab>:cnew
menutrans Error\ &Window Okno\ komu&nikatów
menutrans &Update<Tab>:cwin Akt&ualizuj<Tab>:cwin
menutrans &Close<Tab>:cclose &Zamknij<Tab>:cclose
menutrans &Open<Tab>:copen &Otwórz<Tab>:copen
menutrans &Set\ Compiler U&staw\ kompilator
menutrans &Convert\ to\ HEX<Tab>:%!xxd Kody\ szesnastkowe<Tab>:%!xxd
menutrans Conve&rt\ back<Tab>:%!xxd\ -r Zwyk³y\ tekst<Tab>:%!xxd\ -r
" Names for buffer menu.
menutrans &Buffers &Bufory
menutrans &Refresh\ menu Odwie¿
menutrans Delete Skasuj
menutrans &Alternate &Zmieñ
menutrans &Next &Nastêpny
menutrans &Previous &Poprzedni
menutrans [No\ File] [Brak\ Pliku]
" Window menu
menutrans &Window &Widoki
menutrans &New<Tab>^Wn &Nowy<Tab>^Wn
menutrans S&plit<Tab>^Ws Po&dziel<Tab>^Ws
menutrans Sp&lit\ To\ #<Tab>^W^^ P&odziel\ na\ #<Tab>^W^^
menutrans Split\ &Vertically<Tab>^Wv Podziel\ pionowo<Tab>^Wv
menutrans Split\ File\ E&xplorer Otwórz\ mened¿er\ plików
menutrans &Close<Tab>^Wc &Zamknij<Tab>^Wc
menutrans Close\ &Other(s)<Tab>^Wo Zamknij\ &inne<Tab>^Wo
menutrans Ne&xt<Tab>^Ww &Nastêpny<Tab>^Ww
menutrans P&revious<Tab>^WW &Poprzedni<Tab>^WW
menutrans &Equal\ Size<Tab>^W= &Wyrównaj\ wysokoci<Tab>^W=
menutrans &Max\ Height<Tab>^W_ Z&maksymalizuj\ wysokoæ<Tab>^W_
menutrans M&in\ Height<Tab>^W1_ Zminim&alizuj\ wysokoæ<Tab>^W1_
menutrans Max\ Width<Tab>^W\| Maksymalna\ szerokoæ<Tab>^W\|
menutrans Min\ Width<Tab>^W1\| Minimalna\ szerokoæ<Tab>^W1\|
menutrans Max\ &Width<Tab>^W\| Zmaksymalizuj\ szerokoæ<Tab>^W\|
menutrans Min\ Widt&h<Tab>^W1\| Zminimalizuj\ szerokoæ<Tab>^W1\|
menutrans Move\ &To &Id¼\ do
menutrans &Top<Tab>^WK &Góra<Tab>^WK
menutrans &Bottom<Tab>^WJ &³<Tab>^WJ
menutrans &Left\ side<Tab>^WH &Lewa\ strona<Tab>^WH
menutrans &Right\ side<Tab>^WL &Prawa\ strona<Tab>^WL
menutrans Rotate\ &Up<Tab>^WR Obróæ\ w\ &górê<Tab>^WR
menutrans Rotate\ &Down<Tab>^Wr Obróæ\ w\ &³<Tab>^Wr
menutrans Split\ &Vertically<Tab>^Wv &Podziel\ w\ poziomie<Tab>^Wv
menutrans Select\ Fo&nt\.\.\. Wybierz\ &czcionkê\.\.\.
" The popup menu
menutrans &Undo &Cofnij
menutrans Cu&t W&ytnij
menutrans &Copy &Kopiuj
menutrans &Paste &Wklej
menutrans &Delete &Skasuj
menutrans Select\ Blockwise Zaznacz\ &blok
menutrans Select\ &Word Zaznacz\ &s³owo
menutrans Select\ &Line Zaznacz\ w&iersz
menutrans Select\ &Block Zaznacz\ &blok
menutrans Select\ &All Zaznacz\ c&a³oæ
" The GUI toolbar
if has("toolbar")
if exists("*Do_toolbar_tmenu")
delfun Do_toolbar_tmenu
endif
fun Do_toolbar_tmenu()
tmenu ToolBar.Open Otwórz plik
tmenu ToolBar.Save Zapisz bie¿±cy plik
tmenu ToolBar.SaveAll Zapisz wszystkie pliki
tmenu ToolBar.Print Drukuj
tmenu ToolBar.Undo Cofnij
tmenu ToolBar.Redo Ponów
tmenu ToolBar.Cut Wytnij
tmenu ToolBar.Copy Skopiuj
tmenu ToolBar.Paste Wklej
tmenu ToolBar.Find Szukaj...
tmenu ToolBar.FindNext Szukaj nastêpnego
tmenu ToolBar.FindPrev Szukaj poprzedniego
tmenu ToolBar.Replace Szukaj i zamieniaj...
if 0 " disabled; These are in the Windows menu
tmenu ToolBar.New Nowy widok
tmenu ToolBar.WinSplit Podziel widok
tmenu ToolBar.WinMax Zmaksymalizuj widok
tmenu ToolBar.WinMin Zminimalizuj widok
tmenu ToolBar.WinClose Zamknij widok
endif
tmenu ToolBar.LoadSesn Za³aduj sesjê
tmenu ToolBar.SaveSesn Zachowaj bie¿±c± sesjê
tmenu ToolBar.RunScript Uruchom skrypt Vima
tmenu ToolBar.Make Wykonaj bie¿±cy projekt
tmenu ToolBar.Shell Otwórz pow³okê
tmenu ToolBar.RunCtags Twórz tagi w bie¿±cym katalogu
tmenu ToolBar.TagJump Skok do taga pod kursorem
tmenu ToolBar.Help Pomoc Vima
tmenu ToolBar.FindHelp Przeszukuj pomoc Vim-a
endfun
endif
" Syntax menu
menutrans &Show\ filetypes\ in\ menu &Pokazuj\ rodzaj\ pliku\ w\ menue
menutrans &Syntax &Sk³adnia
menutrans Set\ '&syntax'\ only Ustaw\ tylko\ '&syntax'
menutrans Set\ '&filetype'\ too Ustaw\ równie¿\ '&filetype'
menutrans &Off &Wy³±cz
menutrans &Manual &Rêcznie
menutrans A&utomatic A&utomatyczne
menutrans on/off\ for\ &This\ file w³±cz/w&y³±cz\ dla\ pliku
menutrans Co&lor\ test Test\ &kolorów
menutrans &Highlight\ test &Test\ podwietlania
menutrans &Convert\ to\ HTML Przetwórz\ na\ &HTML
" dialog texts
let menutrans_no_file = "[Brak pliku]"
let menutrans_help_dialog = "Wprowad¼ komendê lub s³owo, aby otrzymaæ pomoc o:\n\nPrzedrostek i_ oznacza komendê trybu Wprowadzania (np. i_CTRL-X)\nPrzedrostek c_ oznacza komendê edycji wiersza komend (np. c_<Del>)\nPrzedrostek ' oznacza nazwê opcji (np. 'shiftwidth')"
let g:menutrans_path_dialog = "Wprowad¼ ¶cie¿kê poszukiwania plików.\nProszê rozdzielaæ nazwy katalogów przecinkiem."
let g:menutrans_tags_dialog = "Podaj nazwy plików tagów.\nProszê rozdzielaæ nazwy przecinkiem."
let g:menutrans_textwidth_dialog = "Wprowad¼ now± szeroko¶æ tekstu (0 wy³±cza przewijanie): "
let g:menutrans_fileformat_dialog = "Wybierz format w którym ten plik ma byæ zapisany"

View File

@ -382,7 +382,7 @@ if has("keymap")
endif
unlet s:n
endif
if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR>
endif

185
runtime/plugin/tar.vim Normal file
View File

@ -0,0 +1,185 @@
" vim:set ts=4 sw=4 ai nobackup:
" tar.vim -- a vim plugin for browsing tarfiles
" Copyright (c) 2002, Michael C. Toren <mct@toren.net>
"
" Updates are available from <http://michael.toren.net/code/>. If you
" find this script useful, or have suggestions for improvements, please
" let me know.
"
" Usage:
" Once this script is installed, attempting to edit a tarfile will present
" the user with a list of files contained in the tar archive. By moving the
" cursor over a filename and pressing ENTER, the contents of a file can be
" viewed in read-only mode, in a new window. Unfortunately, write support
" for tarfile components is not currently possible.
"
" Requirements:
" GNU tar, or a tar implementation that supports the "P" (don't strip
" out leading /'s from filenames), and "O" (extract files to standard
" output) options. Additionally, gzip is required for handling *.tar.Z,
" *.tar.gz, and *.tgz compressed tarfiles, and bzip2 is required for
" handling *.tar.bz2 compressed tarfiles. A unix-like operating system
" is probably also required.
"
" Installation:
" Place this file, tar.vim, in your $HOME/.vim/plugin directory, and
" either restart vim, or execute ":source $HOME/.vim/plugin/tar.vim"
"
" Todo:
" - Handle zipfiles?
" - Implement write support, somehow.
"
" License:
" This program is free software; you can redistribute it and/or modify it
" under the terms of the GNU General Public License, version 2, as published
" by the Free Software Foundation.
"
" This program 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.
"
" A copy of the GNU GPL is available as /usr/doc/copyright/GPL on Debian
" systems, or on the World Wide Web at http://www.gnu.org/copyleft/gpl.html
" You can also obtain it by writing to the Free Software Foundation, Inc.,
" 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
"
" Changelog:
" Tue Dec 31 13:38:08 EST 2002 First release to beta testers
" Sat Jan 4 14:06:19 EST 2003 Version 1.00 released
let s:version = "1.00"
if has("autocmd")
augroup tar
au!
au BufReadCmd tarfile:* call s:TarRead(expand("<afile>"), 1)
au BufReadCmd tarfile:*/* call s:TarRead(expand("<afile>"), 1)
au FileReadCmd tarfile:* call s:TarRead(expand("<afile>"), 0)
au FileReadCmd tarfile:*/* call s:TarRead(expand("<afile>"), 0)
au BufWriteCmd tarfile:* call s:TarWrite(expand("<afile>"))
au BufWriteCmd tarfile:*/* call s:TarWrite(expand("<afile>"))
au FileWriteCmd tarfile:* call s:TarWrite(expand("<afile>"))
au FileWriteCmd tarfile:*/* call s:TarWrite(expand("<afile>"))
au BufReadCmd *.tar call s:TarBrowse(expand("<afile>"))
au BufReadCmd *.tar.gz call s:TarBrowse(expand("<afile>"))
au BufReadCmd *.tar.bz2 call s:TarBrowse(expand("<afile>"))
au BufReadCmd *.tar.Z call s:TarBrowse(expand("<afile>"))
au BufReadCmd *.tgz call s:TarBrowse(expand("<afile>"))
augroup END
endif
function! s:TarWrite(argument)
echo "ERROR: Sorry, no write support for tarfiles yet"
endfunction
function! s:TarRead(argument, cleanup)
let l:argument = a:argument
let l:argument = substitute(l:argument, '^tarfile:', '', '')
let l:argument = substitute(l:argument, '^\~', $HOME, '')
let l:tarfile = l:argument
while 1
if (l:tarfile == "" || l:tarfile == "/")
echo "ERROR: Could not find a readable tarfile in path:" l:argument
return
endif
if filereadable(l:tarfile) " found it!
break
endif
let l:tarfile = fnamemodify(l:tarfile, ":h")
endwhile
let l:toextract = strpart(l:argument, strlen(l:tarfile) + 1)
if (l:toextract == "")
return
endif
let l:cat = s:TarCatCommand(l:tarfile)
execute "r !" . l:cat . " < '" . l:tarfile . "'"
\ " | tar OPxf - '" . l:toextract . "'"
if (a:cleanup)
0d "blank line
execute "doautocmd BufReadPost " . expand("%")
setlocal readonly
silent preserve
endif
endfunction
function! s:TarBrowse(tarfile)
setlocal noswapfile
setlocal buftype=nofile
setlocal bufhidden=hide
setlocal filetype=
setlocal nobuflisted
setlocal buftype=nofile
setlocal wrap
let l:tarfile = a:tarfile
let b:tarfile = l:tarfile
let l:cat = s:TarCatCommand(l:tarfile)
if ! filereadable(l:tarfile)
let l:tarfile = substitute(l:tarfile, '^tarfile:', '', '')
endif
if ! filereadable(l:tarfile)
echo "ERROR: File not readable:" l:tarfile
return
endif
call s:Say("\" tar.vim version " . s:version)
call s:Say("\" Browsing tarfile " . l:tarfile)
call s:Say("\" Hit ENTER to view contents in new window")
call s:Say("")
silent execute "r!" . l:cat . "<'" . l:tarfile . "'| tar Ptf - "
0d "blank line
/^$/1
setlocal readonly
setlocal nomodifiable
noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
endfunction
function! s:TarBrowseSelect()
let l:line = getline(".")
if (l:line =~ '^" ')
return
endif
if (l:line =~ '/$')
echo "Please specify a file, not a directory"
return
endif
let l:selection = "tarfile:" . b:tarfile . "/" . l:line
new
wincmd _
execute "e " . l:selection
endfunction
" kludge to deal with compressed archives
function! s:TarCatCommand(tarfile)
if a:tarfile =~# '\.\(gz\|tgz\|Z\)$'
let l:cat = "gzip -d -c"
elseif a:tarfile =~# '\.bz2$'
let l:cat = "bzip2 -d -c"
else
let l:cat = "cat"
endif
return l:cat
endfunction
function! s:Say(string)
let @" = a:string
$ put
endfunction

View File

@ -2,8 +2,9 @@
" Language: BIND 8.x configuration file
" Maintainer: glory hump <rnd@web-drive.ru>
" Last change: Mon May 21 04:51:01 SAMST 2001
" Updated: by Martin Dalecki 2004-12-31
" Filenames: named.conf
" URL: http://rnd.web-drive.ru/vim/syntax/named.vim
" URL: http://rnd.web-drive.ru/vim/syntax/named.vim [DEFUNCT]
" $Id$
"
" NOTE
@ -33,10 +34,11 @@ set cpo-=C
" BIND configuration file
syn match namedComment "//.*"
syn match namedComment "#.*"
syn region namedComment start="/\*" end="\*/"
syn region namedString start=/"/ end=/"/ contained
" --- omitted trailing semicolon FIXME
syn match namedError /[^;{]$/
" --- omitted trailing semicolon
syn match namedError /[^;{#]$/
" --- top-level keywords

View File

@ -1089,9 +1089,11 @@ GTK_MAN_TARGETS = yes
GTK_TESTTARGET = gui
### Motif GUI
MOTIF_SRC = gui.c gui_motif.c gui_x11.c pty.c gui_beval.c
MOTIF_SRC = gui.c gui_motif.c gui_x11.c pty.c gui_beval.c \
gui_xmdlg.c
MOTIF_OBJ = objects/gui.o objects/gui_motif.o objects/gui_x11.o \
objects/pty.o objects/gui_beval.o
objects/pty.o objects/gui_beval.o \
objects/gui_xmdlg.o
MOTIF_DEFS = -DFEAT_GUI_MOTIF $(NARROW_PROTO)
MOTIF_IPATH = $(GUI_INC_LOC)
MOTIF_LIBS_DIR = $(GUI_LIB_LOC)
@ -1203,8 +1205,8 @@ CARBONGUI_BUNDLE = $(VIMNAME).app
CARBONGUI_TESTARG = VIMPROG=../$(CARBONGUI_BUNDLE)/Contents/MacOS/$(VIMTARGET)
# All GUI files
ALL_GUI_SRC = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c pty.c gui_kde.cc gui_kde_wid.cc gui_kde_x11.cc gui_kde_wid_moc.cc
ALL_GUI_PRO = gui.pro gui_gtk.pro gui_motif.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w16.pro gui_w32.pro gui_amiga.pro gui_photon.pro
ALL_GUI_SRC = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_xmdlg.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c pty.c gui_kde.cc gui_kde_wid.cc gui_kde_x11.cc gui_kde_wid_moc.cc
ALL_GUI_PRO = gui.pro gui_gtk.pro gui_motif.pro gui_xmdlg.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w16.pro gui_w32.pro gui_amiga.pro gui_photon.pro
# }}}
@ -2194,6 +2196,9 @@ objects/gui_gtk_x11.o: gui_gtk_x11.c
objects/gui_motif.o: gui_motif.c
$(CCC) -o $@ gui_motif.c
objects/gui_xmdlg.o: gui_xmdlg.c
$(CCC) -o $@ gui_xmdlg.c
objects/gui_x11.o: gui_x11.c
$(CCC) -o $@ gui_x11.c

View File

@ -1238,6 +1238,7 @@ gui_mch_get_font(char_u *name, int giveErrorIfMissing)
return NULL;
}
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Return the name of font "font" in allocated memory.
* We always use the default font.
@ -1247,6 +1248,7 @@ gui_mch_get_fontname(GuiFont font, char_u *name)
{
return vim_strsave((char_u *)"default");
}
#endif
void
gui_mch_set_font(GuiFont font)

View File

@ -2396,6 +2396,7 @@ error:
return (GuiFont)font;
}
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Return the name of font "font" in allocated memory.
*/
@ -2404,6 +2405,7 @@ gui_mch_get_fontname(GuiFont font, char_u *name)
{
return vim_strsave(((VimFont *)font)->name);
}
#endif
/*
* Set the current text font.

View File

@ -700,6 +700,7 @@ gui_mch_get_font(char_u * name, int report_error)//{{{
return (GuiFont) myFont;
}//}}}
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Return the name of font "font" in allocated memory.
* Don't know how to get the actual name, thus use the provided name.
@ -711,6 +712,7 @@ gui_mch_get_fontname(GuiFont font, char_u *name)//{{{
return NULL;
return vim_strsave(name);
}//}}}
#endif
/*
* Set the current text font.

View File

@ -3569,6 +3569,7 @@ gui_mch_get_font(name, giveErrorIfMissing)
return font;
}
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Return the name of font "font" in allocated memory.
* Don't know how to get the actual name, thus use the provided name.
@ -3582,6 +3583,7 @@ gui_mch_get_fontname(font, name)
return NULL;
return vim_strsave(name);
}
#endif
/*
* Set the current text font.

View File

@ -93,9 +93,6 @@ static void attachDump(Widget, char *);
static void gui_motif_menu_colors __ARGS((Widget id));
static void gui_motif_scroll_colors __ARGS((Widget id));
#ifdef FEAT_MENU
static void gui_motif_menu_fontlist __ARGS((Widget id));
#endif
#if (XmVersion >= 1002)
# define STRING_TAG XmFONTLIST_DEFAULT_TAG
@ -125,17 +122,122 @@ scroll_cb(w, client_data, call_data)
gui_drag_scrollbar(sb, value, dragging);
}
/*
* End of call-back routines
*/
#ifndef LESSTIF_VERSION
/*
* Implement three dimensional shading of insensitive labels.
* By Martin Dalecki.
*/
#include <Xm/XmP.h>
#include <Xm/LabelP.h>
static XtExposeProc old_label_expose = NULL;
static void label_expose __ARGS((Widget _w, XEvent *_event, Region _region));
static void
label_expose(_w, _event, _region)
Widget _w;
XEvent *_event;
Region _region;
{
GC insensitiveGC;
XmLabelWidget lw = (XmLabelWidget)_w;
unsigned char label_type = XmSTRING;
XtVaGetValues(_w, XmNlabelType, &label_type, (XtPointer)0);
if (XtIsSensitive(_w) || label_type != XmSTRING)
(*old_label_expose)(_w, _event, _region);
else
{
XGCValues values;
XtGCMask mask;
XtGCMask dynamic;
XFontStruct *fs;
_XmFontListGetDefaultFont(lw->label.font, &fs);
/* FIXME: we should be doing the whole drawing ourself here. */
insensitiveGC = lw->label.insensitive_GC;
mask = GCForeground | GCBackground | GCGraphicsExposures;
dynamic = GCClipMask | GCClipXOrigin | GCClipYOrigin;
values.graphics_exposures = False;
if (fs != 0)
{
mask |= GCFont;
values.font = fs->fid;
}
if (lw->primitive.top_shadow_pixmap != None
&& lw->primitive.top_shadow_pixmap != XmUNSPECIFIED_PIXMAP)
{
mask |= GCFillStyle | GCTile;
values.fill_style = FillTiled;
values.tile = lw->primitive.top_shadow_pixmap;
}
lw->label.TextRect.x += 1;
lw->label.TextRect.y += 1;
if (lw->label._acc_text != 0)
{
lw->label.acc_TextRect.x += 1;
lw->label.acc_TextRect.y += 1;
}
values.foreground = lw->primitive.top_shadow_color;
values.background = lw->core.background_pixel;
lw->label.insensitive_GC =
XtAllocateGC((Widget) lw, 0, mask, &values, dynamic, 0);
(*old_label_expose)(_w, _event, _region);
XtReleaseGC(_w, lw->label.insensitive_GC);
lw->label.TextRect.x -= 1;
lw->label.TextRect.y -= 1;
if (lw->label._acc_text != 0)
{
lw->label.acc_TextRect.x -= 1;
lw->label.acc_TextRect.y -= 1;
}
values.foreground = lw->primitive.bottom_shadow_color;
values.background = lw->core.background_pixel;
lw->label.insensitive_GC =
XtAllocateGC((Widget) lw, 0, mask, &values, dynamic, 0);
(*old_label_expose)(_w, _event, _region);
XtReleaseGC(_w, lw->label.insensitive_GC);
lw->label.insensitive_GC = insensitiveGC;
}
}
#endif
/*
* Create all the motif widgets necessary.
*/
void
gui_x11_create_widgets()
{
#ifndef LESSTIF_VERSION
/*
* Install the 3D shade effect drawing routines.
*/
if (old_label_expose == NULL)
{
old_label_expose = xmLabelWidgetClass->core_class.expose;
xmLabelWidgetClass->core_class.expose = label_expose;
}
#endif
/*
* Start out by adding the configured border width into the border offset
*/
@ -329,9 +431,7 @@ gui_x11_set_back_color()
* Manage dialog centered on pointer. This could be used by the Athena code as
* well.
*/
static void manage_centered __ARGS((Widget dialog_child));
static void
void
manage_centered(dialog_child)
Widget dialog_child;
{
@ -855,16 +955,15 @@ gui_mch_add_menu_item(menu, idx)
xms = XmStringCreate((char *)menu->dname, STRING_TAG);
XtSetArg(args[n], XmNlabelString, xms); n++;
#ifndef FEAT_SUN_WORKSHOP
/* Without shadows one can't sense whatever the button has been
* pressed or not! However we wan't to save a bit of space...
* Need the highlightThickness to see the focus.
*/
XtSetArg(args[n], XmNhighlightThickness, 0); n++;
XtSetArg(args[n], XmNhighlightThickness, 1); n++;
XtSetArg(args[n], XmNhighlightOnEnter, True); n++;
XtSetArg(args[n], XmNmarginWidth, 0); n++;
XtSetArg(args[n], XmNmarginHeight, 0); n++;
#endif
if (menu->image == 0)
{
XtSetArg(args[n], XmNlabelType, XmSTRING); n++;
@ -1384,7 +1483,6 @@ gui_mch_create_scrollbar(sb, orient)
int n;
n = 0;
XtSetArg(args[n], XmNshadowThickness, 1); n++;
XtSetArg(args[n], XmNminimum, 0); n++;
XtSetArg(args[n], XmNorientation,
(orient == SBAR_VERT) ? XmVERTICAL : XmHORIZONTAL); n++;
@ -1484,6 +1582,219 @@ gui_x11_get_wid()
return(XtWindow(textArea));
}
/*
* Look for a widget in the widget tree w, with a mnemonic matching keycode.
* When one is found, simulate a button press on that widget and give it the
* keyboard focus. If the mnemonic is on a label, look in the userData field
* of the label to see if it points to another widget, and give that the focus.
*/
static void
do_mnemonic(Widget w, unsigned int keycode)
{
WidgetList children;
int numChildren, i;
Boolean isMenu;
KeySym mnemonic = '\0';
char mneString[2];
Widget userData;
unsigned char rowColType;
if (XtIsComposite(w))
{
if (XtClass(w) == xmRowColumnWidgetClass)
{
XtVaGetValues(w, XmNrowColumnType, &rowColType, 0);
isMenu = (rowColType != (unsigned char)XmWORK_AREA);
}
else
isMenu = False;
if (!isMenu)
{
XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
&numChildren, 0);
for (i = 0; i < numChildren; i++)
do_mnemonic(children[i], keycode);
}
}
else
{
XtVaGetValues(w, XmNmnemonic, &mnemonic, 0);
if (mnemonic != '\0')
{
mneString[0] = mnemonic;
mneString[1] = '\0';
if (XKeysymToKeycode(XtDisplay(XtParent(w)),
XStringToKeysym(mneString)) == keycode)
{
if (XtClass(w) == xmLabelWidgetClass
|| XtClass(w) == xmLabelGadgetClass)
{
XtVaGetValues(w, XmNuserData, &userData, 0);
if (userData != NULL && XtIsWidget(userData))
XmProcessTraversal(userData, XmTRAVERSE_CURRENT);
}
else
{
XKeyPressedEvent keyEvent;
XmProcessTraversal(w, XmTRAVERSE_CURRENT);
memset((char *) &keyEvent, 0, sizeof(XKeyPressedEvent));
keyEvent.type = KeyPress;
keyEvent.serial = 1;
keyEvent.send_event = True;
keyEvent.display = XtDisplay(w);
keyEvent.window = XtWindow(w);
XtCallActionProc(w, "Activate", (XEvent *) & keyEvent,
NULL, 0);
}
}
}
}
}
/*
* Callback routine for dialog mnemonic processing.
*/
/*ARGSUSED*/
static void
mnemonic_event(Widget w, XtPointer call_data, XKeyEvent *event)
{
do_mnemonic(w, event->keycode);
}
/*
* Search the widget tree under w for widgets with mnemonics. When found, add
* a passive grab to the dialog widget for the mnemonic character, thus
* directing mnemonic events to the dialog widget.
*/
static void
add_mnemonic_grabs(Widget dialog, Widget w)
{
char mneString[2];
WidgetList children;
int numChildren, i;
Boolean isMenu;
KeySym mnemonic = '\0';
unsigned char rowColType;
if (XtIsComposite(w))
{
if (XtClass(w) == xmRowColumnWidgetClass)
{
XtVaGetValues(w, XmNrowColumnType, &rowColType, 0);
isMenu = (rowColType != (unsigned char)XmWORK_AREA);
}
else
isMenu = False;
if (!isMenu)
{
XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
&numChildren, 0);
for (i = 0; i < numChildren; i++)
add_mnemonic_grabs(dialog, children[i]);
}
}
else
{
XtVaGetValues(w, XmNmnemonic, &mnemonic, 0);
if (mnemonic != '\0')
{
mneString[0] = mnemonic;
mneString[1] = '\0';
XtGrabKey(dialog, XKeysymToKeycode(XtDisplay(dialog),
XStringToKeysym(mneString)),
Mod1Mask, True, GrabModeAsync, GrabModeAsync);
}
}
}
/*
* Add a handler for mnemonics in a dialog. Motif itself only handles
* mnemonics in menus. Mnemonics added or changed after this call will be
* ignored.
*
* To add a mnemonic to a text field or list, set the XmNmnemonic resource on
* the appropriate label and set the XmNuserData resource of the label to the
* widget to get the focus when the mnemonic is typed.
*/
static void
activate_dialog_mnemonics(Widget dialog)
{
if (!dialog)
return;
XtAddEventHandler(dialog, KeyPressMask, False,
(XtEventHandler) mnemonic_event, (XtPointer) NULL);
add_mnemonic_grabs(dialog, dialog);
}
/*
* Removes the event handler and key-grabs for dialog mnemonic handling.
*/
static void
suppress_dialog_mnemonics(Widget dialog)
{
if (!dialog)
return;
XtUngrabKey(dialog, AnyKey, Mod1Mask);
XtRemoveEventHandler(dialog, KeyPressMask, False,
(XtEventHandler) mnemonic_event, (XtPointer) NULL);
}
#if defined(FEAT_BROWSE) || defined(FEAT_GUI_DIALOG)
static void set_fontlist __ARGS((Widget wg));
/*
* Use the 'guifont' or 'guifontset' as a fontlist for a dialog widget.
*/
static void
set_fontlist(id)
Widget id;
{
XmFontList fl;
#ifdef FONTSET_ALWAYS
if (gui.fontset != NOFONTSET) {
fl = gui_motif_fontset2fontlist((XFontSet *)&gui.fontset);
if (fl != NULL)
{
if (XtIsManaged(id))
{
XtUnmanageChild(id);
XtVaSetValues(id, XmNfontList, fl, NULL);
/* We should force the widget to recalculate it's
* geometry now. */
XtManageChild(id);
}
else
XtVaSetValues(id, XmNfontList, fl, NULL);
XmFontListFree(fl);
}
}
#else
if (gui.norm_font != NOFONT) {
fl = gui_motif_create_fontlist((XFontStruct *)gui.norm_font);
if (fl != NULL)
{
if (XtIsManaged(id))
{
XtUnmanageChild(id);
XtVaSetValues(id, XmNfontList, fl, NULL);
/* We should force the widget to recalculate it's
* geometry now. */
XtManageChild(id);
}
else
XtVaSetValues(id, XmNfontList, fl, NULL);
XmFontListFree(fl);
}
}
#endif
}
#endif
#if defined(FEAT_BROWSE) || defined(PROTO)
@ -1517,29 +1828,67 @@ static void DialogAcceptCB __ARGS((Widget, XtPointer, XtPointer));
* - equalize the messages between different GUI implementations as far as
* possible.
*/
static void set_predefined_label __ARGS((Widget parent, String name, char * new_label));
static void set_predefined_label __ARGS((Widget parent, String name, char *new_label));
static void
set_predefined_label(parent, name, new_label)
Widget parent;
String name;
char * new_label;
Widget parent;
String name;
char *new_label;
{
XmString str;
Widget w;
XmString str;
Widget w;
char_u *p, *next;
KeySym mnemonic = NUL;
w = XtNameToWidget(parent, name);
if (!w)
return;
str = XmStringCreate(new_label, STRING_TAG);
if (str)
p = vim_strsave((char_u *)new_label);
if (p == NULL)
return;
for (next = p; *next; ++next)
{
XtVaSetValues(w, XmNlabelString, str, NULL);
if (*next == DLG_HOTKEY_CHAR)
{
int len = STRLEN(next);
if (len > 0)
{
mch_memmove(next, next + 1, len);
mnemonic = next[0];
}
}
}
str = XmStringCreate((char *)p, STRING_TAG);
vim_free(p);
if (str != NULL)
{
XtVaSetValues(w,
XmNlabelString, str,
XmNmnemonic, mnemonic,
NULL);
XmStringFree(str);
}
gui_motif_menu_fontlist(w);
}
static void
set_predefined_fontlist(parent, name)
Widget parent;
String name;
{
Widget w;
w = XtNameToWidget(parent, name);
if (!w)
return;
set_fontlist(w);
}
/*
@ -1561,7 +1910,12 @@ gui_mch_browse(saving, title, dflt, ext, initdir, filter)
char_u *pattern;
char_u *tofree = NULL;
dialog_wgt = XmCreateFileSelectionDialog(vimShell, (char *)title, NULL, 0);
/* There a difference between the resource name and value, Therefore, we
* avoid to (ab-)use the (maybe internationalized!) dialog title as a
* dialog name.
*/
dialog_wgt = XmCreateFileSelectionDialog(vimShell, "browseDialog", NULL, 0);
if (initdir == NULL || *initdir == NUL)
{
@ -1614,15 +1968,21 @@ gui_mch_browse(saving, title, dflt, ext, initdir, filter)
XmNdialogTitle, XmRString, (char *)title, STRLEN(title) + 1,
NULL);
set_predefined_label(dialog_wgt, "Apply", _("Filter"));
set_predefined_label(dialog_wgt, "Cancel", _("Cancel"));
set_predefined_label(dialog_wgt, "Apply", _("&Filter"));
set_predefined_label(dialog_wgt, "Cancel", _("&Cancel"));
set_predefined_label(dialog_wgt, "Dir", _("Directories"));
set_predefined_label(dialog_wgt, "FilterLabel", _("Filter"));
set_predefined_label(dialog_wgt, "Help", _("Help"));
set_predefined_label(dialog_wgt, "Help", _("&Help"));
set_predefined_label(dialog_wgt, "Items", _("Files"));
set_predefined_label(dialog_wgt, "OK", _("OK"));
set_predefined_label(dialog_wgt, "OK", _("&OK"));
set_predefined_label(dialog_wgt, "Selection", _("Selection"));
/* This is to save us from silly external settings using not fixed with
* fonts for file selection.
*/
set_predefined_fontlist(dialog_wgt, "DirListSW.DirList");
set_predefined_fontlist(dialog_wgt, "ItemsListSW.ItemsList");
gui_motif_menu_colors(dialog_wgt);
if (gui.scroll_bg_pixel != INVALCOLOR)
XtVaSetValues(dialog_wgt, XmNtroughColor, gui.scroll_bg_pixel, NULL);
@ -1634,6 +1994,7 @@ gui_mch_browse(saving, title, dflt, ext, initdir, filter)
(unsigned char)XmDIALOG_HELP_BUTTON));
manage_centered(dialog_wgt);
activate_dialog_mnemonics(dialog_wgt);
/* sit in a loop until the dialog box has gone away */
do
@ -1642,6 +2003,7 @@ gui_mch_browse(saving, title, dflt, ext, initdir, filter)
(XtInputMask)XtIMAll);
} while (XtIsManaged(dialog_wgt));
suppress_dialog_mnemonics(dialog_wgt);
XtDestroyWidget(dialog_wgt);
vim_free(tofree);
@ -1746,31 +2108,6 @@ butproc(w, client_data, call_data)
dialogStatus = (int)(long)client_data + 1;
}
static void gui_motif_set_fontlist __ARGS((Widget wg));
/*
* Use the 'guifont' or 'guifontset' as a fontlist for a dialog widget.
*/
static void
gui_motif_set_fontlist(wg)
Widget wg;
{
XmFontList fl;
fl =
#ifdef FEAT_XFONTSET
gui.fontset != NOFONTSET ?
gui_motif_fontset2fontlist((XFontSet *)&gui.fontset)
:
#endif
gui_motif_create_fontlist((XFontStruct *)gui.norm_font);
if (fl != NULL)
{
XtVaSetValues(wg, XmNfontList, fl, NULL);
XmFontListFree(fl);
}
}
#ifdef HAVE_XPM
static Widget create_pixmap_label(Widget parent, String name, char **data, ArgList args, Cardinal arg);
@ -1853,6 +2190,7 @@ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
XtAppContext app;
XmString label;
int butcount;
Widget w;
Widget dialogform = NULL;
Widget form = NULL;
Widget dialogtextfield = NULL;
@ -1913,10 +2251,20 @@ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
p = buts;
for (butcount = 0; *p; ++butcount)
{
KeySym mnemonic = NUL;
for (next = p; *next; ++next)
{
if (*next == DLG_HOTKEY_CHAR)
mch_memmove(next, next + 1, STRLEN(next));
{
int len = STRLEN(next);
if (len > 0)
{
mch_memmove(next, next + 1, len);
mnemonic = next[0];
}
}
if (*next == DLG_BUTTON_SEP)
{
*next++ = NUL;
@ -1930,12 +2278,14 @@ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
buttons[butcount] = XtVaCreateManagedWidget("button",
xmPushButtonWidgetClass, dialogform,
XmNlabelString, label,
XmNmnemonic, mnemonic,
XmNbottomAttachment, XmATTACH_FORM,
XmNbottomOffset, 4,
XmNshowAsDefault, butcount == dfltbutton - 1,
XmNdefaultButtonShadowThickness, 1,
NULL);
XmStringFree(label);
gui_motif_menu_fontlist(buttons[butcount]);
/* Layout properly. */
@ -2041,7 +2391,7 @@ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
XmNbottomAttachment, XmATTACH_FORM,
NULL);
gui_motif_set_fontlist(dialogtextfield);
set_fontlist(dialogtextfield);
XmTextFieldSetString(dialogtextfield, (char *)textfield);
XtManageChild(dialogtextfield);
XtAddEventHandler(dialogtextfield, KeyPressMask, False,
@ -2093,13 +2443,19 @@ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
XtManageChild(dialogpixmap);
#endif
/* Create the dialog message. */
label = XmStringLtoRCreate((char *)message, STRING_TAG);
/* Create the dialog message.
* Since LessTif is apparently having problems with the creation of
* properly localized string, we use LtoR here. The symptom is that the
* string sill not show properly in multiple lines as it does in native
* Motif.
*/
label = XmStringCreateLtoR((char *)message, STRING_TAG);
if (label == NULL)
return -1;
(void)XtVaCreateManagedWidget("dialogMessage",
w = XtVaCreateManagedWidget("dialogMessage",
xmLabelGadgetClass, form,
XmNlabelString, label,
XmNalignment, XmALIGNMENT_BEGINNING,
XmNtopAttachment, XmATTACH_FORM,
XmNtopOffset, 8,
#ifdef HAVE_XPM
@ -2115,6 +2471,7 @@ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
XmNbottomOffset, 8,
NULL);
XmStringFree(label);
set_fontlist(w);
if (textfield != NULL)
{
@ -2149,6 +2506,7 @@ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
NULL);
manage_centered(dialogform);
activate_dialog_mnemonics(dialogform);
if (textfield != NULL && *textfield != NUL)
{
@ -2185,6 +2543,7 @@ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
}
}
suppress_dialog_mnemonics(dialogform);
XtDestroyWidget(dialogform);
return dialogStatus;
@ -2246,8 +2605,11 @@ gui_mch_set_footer(s)
XmString xms;
xms = XmStringCreate((char *)s, STRING_TAG);
XtVaSetValues(footer, XmNlabelString, xms, NULL);
XmStringFree(xms);
if (xms != NULL)
{
XtVaSetValues(footer, XmNlabelString, xms, NULL);
XmStringFree(xms);
}
}
#endif
@ -2522,14 +2884,15 @@ gui_motif_scroll_colors(id)
XtVaSetValues(id, XmNforeground, gui.scroll_fg_pixel, NULL);
}
#ifdef FEAT_MENU
/*
* Set the fontlist for Widget "id" to use gui.menu_fontset or gui.menu_font.
*/
static void
/*ARGSUSED*/
void
gui_motif_menu_fontlist(id)
Widget id;
{
#ifdef FEAT_MENU
#ifdef FONTSET_ALWAYS
if (gui.menu_fontset != NOFONTSET)
{
@ -2573,9 +2936,9 @@ gui_motif_menu_fontlist(id)
}
}
#endif
#endif
}
#endif
/*
* We don't create it twice for the sake of speed.
@ -2617,8 +2980,10 @@ find_replace_destroy_callback(w, client_data, call_data)
{
SharedFindReplace *cd = (SharedFindReplace *)client_data;
if (cd != NULL)
if (cd != NULL) {
/* suppress_dialog_mnemonics(cd->dialog); */
cd->dialog = (Widget)0;
}
}
/*ARGSUSED*/
@ -2718,6 +3083,48 @@ find_replace_keypress(w, frdp, event)
XtUnmanageChild(frdp->dialog);
}
static void
set_label(w, label)
Widget w;
char_u *label;
{
XmString str;
char_u *p, *next;
KeySym mnemonic = NUL;
if (!w)
return;
p = vim_strsave(label);
if (p == NULL)
return;
for (next = p; *next; ++next)
{
if (*next == DLG_HOTKEY_CHAR)
{
int len = STRLEN(next);
if (len > 0)
{
mch_memmove(next, next + 1, len);
mnemonic = next[0];
}
}
}
str = XmStringCreateSimple((char *)p);
vim_free(p);
if (str)
{
XtVaSetValues(w,
XmNlabelString, str,
XmNmnemonic, mnemonic,
NULL);
XmStringFree(str);
}
gui_motif_menu_fontlist(w);
}
static void
find_replace_dialog_create(arg, do_replace)
char_u *arg;
@ -2746,6 +3153,8 @@ find_replace_dialog_create(arg, do_replace)
/* If the dialog already exists, just raise it. */
if (frdp->dialog)
{
gui_motif_synch_fonts();
/* If the window is already up, just pop it to the top */
if (XtIsManaged(frdp->dialog))
XMapRaised(XtDisplay(frdp->dialog),
@ -2789,16 +3198,14 @@ find_replace_dialog_create(arg, do_replace)
XmNbottomOffset, 4,
NULL);
str = XmStringCreateSimple(_("Find Next"));
frdp->find = XtVaCreateManagedWidget("findButton",
xmPushButtonWidgetClass, button_form,
XmNlabelString, str,
XmNsensitive, True,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
XmStringFree(str);
set_label(frdp->find, _("Find &Next"));
XtAddCallback(frdp->find, XmNactivateCallback,
find_replace_callback,
@ -2806,57 +3213,50 @@ find_replace_dialog_create(arg, do_replace)
if (do_replace)
{
str = XmStringCreateSimple(_("Replace"));
frdp->replace = XtVaCreateManagedWidget("replaceButton",
xmPushButtonWidgetClass, button_form,
XmNlabelString, str,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, frdp->find,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
XmStringFree(str);
set_label(frdp->replace, _("&Replace"));
XtAddCallback(frdp->replace, XmNactivateCallback,
find_replace_callback, (XtPointer)FRD_REPLACE);
str = XmStringCreateSimple(_("Replace All"));
frdp->all = XtVaCreateManagedWidget("replaceAllButton",
xmPushButtonWidgetClass, button_form,
XmNlabelString, str,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, frdp->replace,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
XmStringFree(str);
set_label(frdp->all, _("Replace &All"));
XtAddCallback(frdp->all, XmNactivateCallback,
find_replace_callback, (XtPointer)FRD_REPLACEALL);
str = XmStringCreateSimple(_("Undo"));
frdp->undo = XtVaCreateManagedWidget("undoButton",
xmPushButtonWidgetClass, button_form,
XmNlabelString, str,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, frdp->all,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
NULL);
XmStringFree(str);
set_label(frdp->undo, _("&Undo"));
XtAddCallback(frdp->undo, XmNactivateCallback,
find_replace_callback, (XtPointer)FRD_UNDO);
}
str = XmStringCreateSimple(_("Cancel"));
frdp->cancel = XtVaCreateManagedWidget("closeButton",
xmPushButtonWidgetClass, button_form,
XmNlabelString, str,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
NULL);
XmStringFree(str);
set_label(frdp->cancel, _("&Cancel"));
XtAddCallback(frdp->cancel, XmNactivateCallback,
find_replace_dismiss_callback, frdp);
gui_motif_menu_fontlist(frdp->cancel);
XtManageChild(button_form);
@ -2894,6 +3294,7 @@ find_replace_dialog_create(arg, do_replace)
XmNtopOffset, 4,
NULL);
XmStringFree(str);
gui_motif_menu_fontlist(label_what);
frdp->what = XtVaCreateManagedWidget("whatText",
xmTextFieldWidgetClass, input_form,
@ -2928,6 +3329,7 @@ find_replace_dialog_create(arg, do_replace)
XmNbottomAttachment, XmATTACH_FORM,
NULL);
XmStringFree(str);
gui_motif_menu_fontlist(label_with);
/*
* Make the entry activation only change the input focus onto the
@ -2975,6 +3377,7 @@ find_replace_dialog_create(arg, do_replace)
{
Widget radio_box;
Widget w;
frame = XtVaCreateWidget("directionFrame",
xmFrameWidgetClass, frdp->dialog,
@ -2988,13 +3391,14 @@ find_replace_dialog_create(arg, do_replace)
NULL);
str = XmStringCreateSimple(_("Direction"));
(void)XtVaCreateManagedWidget("directionFrameLabel",
w = XtVaCreateManagedWidget("directionFrameLabel",
xmLabelGadgetClass, frame,
XmNlabelString, str,
XmNchildHorizontalAlignment, XmALIGNMENT_BEGINNING,
XmNchildType, XmFRAME_TITLE_CHILD,
NULL);
XmStringFree(str);
gui_motif_menu_fontlist(w);
radio_box = XmCreateRadioBox(frame, "radioBox",
(ArgList)NULL, 0);
@ -3006,6 +3410,7 @@ find_replace_dialog_create(arg, do_replace)
XmNset, False,
NULL);
XmStringFree(str);
gui_motif_menu_fontlist(frdp->up);
str = XmStringCreateSimple(_("Down"));
frdp->down = XtVaCreateManagedWidget("downRadioButton",
@ -3014,6 +3419,7 @@ find_replace_dialog_create(arg, do_replace)
XmNset, True,
NULL);
XmStringFree(str);
gui_motif_menu_fontlist(frdp->down);
XtManageChild(radio_box);
XtManageChild(frame);
@ -3057,6 +3463,8 @@ find_replace_dialog_create(arg, do_replace)
XmNset, mcase,
NULL);
XmStringFree(str);
gui_motif_menu_fontlist(frdp->wword);
gui_motif_menu_fontlist(frdp->mcase);
XtManageChild(toggle_form);
@ -3064,7 +3472,10 @@ find_replace_dialog_create(arg, do_replace)
XmTextFieldSetString(frdp->what, (char *)entry_text);
vim_free(entry_text);
XtManageChild(frdp->dialog);
gui_motif_synch_fonts();
manage_centered(frdp->dialog);
activate_dialog_mnemonics(frdp->dialog);
XmProcessTraversal(frdp->what, XmTRAVERSE_CURRENT);
}
@ -3088,3 +3499,40 @@ gui_mch_replace_dialog(eap)
find_replace_dialog_create(eap->arg, TRUE);
}
/*
* Synchronize all gui elements, which are dependant upon the
* main text font used. Those are in esp. the find/replace dialogs.
* If you don't understand why this should be needed, please try to
* search for "piê¶æ" in iso8859-2.
*/
void
gui_motif_synch_fonts(void)
{
SharedFindReplace *frdp;
int do_replace;
XFontStruct *font;
XmFontList font_list;
/* FIXME: Unless we find out how to create a XmFontList from a XFontSet,
* we just give up here on font synchronization. */
font = (XFontStruct *)gui.norm_font;
if (font == NULL)
return;
font_list = gui_motif_create_fontlist(font);
/* OK this loop is a bit tricky... */
for (do_replace = 0; do_replace <= 1; ++do_replace)
{
frdp = (do_replace) ? (&repl_widgets) : (&find_widgets);
if (frdp->dialog)
{
XtVaSetValues(frdp->what, XmNfontList, font_list, NULL);
if (do_replace)
XtVaSetValues(frdp->with, XmNfontList, font_list, NULL);
}
}
XmFontListFree(font_list);
}

View File

@ -3047,6 +3047,7 @@ gui_mch_get_font(char_u *vim_font_name, int report_error)
return( FAIL );
}
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Return the name of font "font" in allocated memory.
* Don't know how to get the actual name, thus use the provided name.
@ -3060,6 +3061,7 @@ gui_mch_get_fontname(font, name)
return NULL;
return vim_strsave(name);
}
#endif
void
gui_mch_set_font(GuiFont font)

View File

@ -1052,6 +1052,7 @@ gui_mch_get_font(name, giveErrorIfMissing)
return handle;
}
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Return the name of font "font" in allocated memory.
* Don't know how to get the actual name, thus use the provided name.
@ -1065,6 +1066,7 @@ gui_mch_get_fontname(font, name)
return NULL;
return vim_strsave(name);
}
#endif
/*
* Set the current text font.

View File

@ -1249,6 +1249,7 @@ gui_mch_get_font(
return font;
}
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Return the name of font "font" in allocated memory.
* Don't know how to get the actual name, thus use the provided name.
@ -1262,6 +1263,7 @@ gui_mch_get_fontname(font, name)
return NULL;
return vim_strsave(name);
}
#endif
void
gui_mch_free_font(GuiFont font)

1287
src/gui_xmdlg.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -107,9 +107,9 @@ coladvance(wcol)
if (wcol == MAXCOL || rc == FAIL)
curwin->w_valid &= ~VALID_VIRTCOL;
else
else if (*ml_get_cursor() != TAB)
{
/* Virtcol is valid */
/* Virtcol is valid when not on a TAB */
curwin->w_valid |= VALID_VIRTCOL;
curwin->w_virtcol = wcol;
}

View File

@ -194,6 +194,7 @@ extern char_u *vimpty_getenv __ARGS((const char_u *string)); /* from pty.c */
# endif
# ifdef FEAT_GUI_MOTIF
# include "gui_motif.pro"
# include "gui_xmdlg.pro"
# endif
# ifdef FEAT_GUI_ATHENA
# include "gui_athena.pro"

3
src/proto/gui_xmdlg.pro Normal file
View File

@ -0,0 +1,3 @@
/* gui_xmdlg.c */
char_u *gui_xm_select_font __ARGS((char_u *current));
/* vim: set ft=c : */

View File

@ -15,10 +15,10 @@
#include <stdlib.h>
#include <stdarg.h>
#include <fcntl.h>
#include <sys/types.h>
#include <netdb.h>
#include <netinet/in.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#ifdef HAVE_LIBGEN_H
# include <libgen.h>