Programowanie w języku Delphi » Artykuły

Opcje edytora kodu

  • 2006-12-20 01:03
  • 0 komentarzy
  • 2308 odsłon
  • Oceń ten tekst jako pierwszy
Artykuł był pisany w oparciu o Delphi 7 Enterprise.


Środowisko programistyczne Delphi ma możliwość dostosowania edytora kodu według własnych potrzeb. Dzięki wybraniu z menu Tools opcji Editor Options lub z menu kontekstowego opcji Properties, można ustawić wygląd dyrektyw, komentarzy itp. W bardzo prosty sposób możesz mieć podkreślone zielone kursywy, czy czerwony mechanizm uzupełniania kodu (Code Insight). Z niniejszego artykułu dowiesz się jak bezpiecznie (aby niczego nie uszkodzić) skonfigurować edytor kodu Delphi według swoich upodobań.

Zakładka General



Zakładka General widoczna jest na powyższym rysunku. Zawiera ona opcje określające aspekty funkcjonowania edytora.

Opcja Insert mode określa domyślny tryb postępowania z wpisywanymi znakami. Gdy jest zaznaczona - wstawienie, gdy odznaczona zastępowanie. Można znacznie szybciej przełączać się między tymi trybami - wciskając klawisz Insert (gdy kursor jest aktywny w edytorze kodu).

Zaznaczenie opcji Cursor through tabs spowoduje, iż ruch kursora będzie płynny (tak aby ruch strzałką był równy spacji; gdy opcja jest odznaczona kursor "przeskakuje" przez każdy odstęp tabulacyjny - traktuje go wtedy jak pojedynczy znak. Omawiana opcja działa poprawnie tylko wtedy, gdy opcja Use tab character z karty Source Options jest zaznaczona.
Group undo decyduje o grupowaniu operacji cofania. Jeśli opcja ta jest zaznaczona - każe polecenie cofnięcia dotyczy nie tylko ostatniej operacji, lecz także wszystkich poprzedzających ją operacji tego samego typu. Jest ona niezmiernie przydatna...

Opcja Cursor beyond EOF umożliwia wysunięcie kursora poza ostatni znak w pliku za pomocą klawiszy nawigacyjnych.

Gdy zaznaczysz opcję Double click line - dwukrotne kliknięcie dowolnego znaku w linii tekstu spowoduje zaznaczenie całej linii. Gdy opcja jest wyłączona - przy dwukrotnym kliknięciu zaznaczysz tylko słowo, w którym znajduje się kursor.

Force cut and copy enabled - jeśli ta opcja jest wyłączona - po rozwinięciu z menu Edit lub menu kontekstowego opcje kopiowania i wycinanie (Copy i Cut) będą zacieniowane (jeżeli w schowku nie ma żadnego tekstu lub jest jakiś plik). Gdy opcja jest włączona opcje zaprezentowane w poprzedniej linijce będą zawsze niezacieniowane. Moim zdaniem najlepszym ustawieniem jest wyłączenie owej opcji - wtedy wiadowo czy można coś wkleić do edytora, czy też nie...

Zaznaczenie pola wyboru Auto-complete text to find spowoduje uruchomienie mechanizmu autouzupełniania w oknach Find Text (szukania tekstu) i Replace Text (zamieniania tekstu). Autouzupełnianie jest po prostu wyszukiwaniem przyrostowym prowadzonym na liście historii związanej z polem Text to Find - po wpisaniu kolejnego znaku edytor zaproponuje Ci wyrazy użyte spośród osatnio używanych elementów, które rozpoczynają się od wpisanego ciągu wyrazów.

Opcja Undo after save po zaznaczeniu spowoduje, że zapisanie zawartości okna nie blokuje możliwości cofania (undo) poprzednio wydanych poleceń. Natomiast cofanie poleceń dotyczyć będzie jednak tylko zawartości okna - poprzednia zawartość pliku na na dysku nie zostanie przywrócona.

BRIEF regular expressions - określa, czy czy w procesie wyszukiwania i zastępowania tekstu honorowane będą wyrażenia regularne edytora BRIEF.

Gdy zaznaczysz opcję Persistent blocks, nadasz trwały charakter zaznaczonym blokom tekstu. "Trwałość" polega tu na tym, iż blok pozostaje zaznaczony aż do do zaznaczenia innego bloku.

Opcja Overwrite block określa zachowanie się bloku w przypadku wprowadzenia znaku z klawiatury. Owa opcja do poprawnego działania potrzebuje wyłączenia opcji Persistent blocks.

Standardowo zaznaczone pole Find text at cursor, wymusza bezwarunkowe umieszczenie słowa znajdującego się w otoczeniu kursora w polu Text to Find otwieranego okna Find Text lub Replace Text.

Omawianie pierwszej zakładki - General - powoli dobiega końca. Powyżej przedstawiłem przeznaczenie pól  wyboru znajdujących się w pojemniku Editor Options. Jednak pod owym pojemnikiem mieszczą się także opcje Editor SpeedSettings oraz Undo limit, z których możesz wybrać, z rozwijanej listy, interesującą Cię opcję. Ta pierwsza, określa ustawienia poszczególnych opcji, poprzez wykorzystanie gotowych schematów. Natomiast, dzięki Undo limit ustawia się  maksymalną liczbę oststnio wykonanych operacji, których skutki można jeszcze cofnąć; możesz tu wpisywać dowolną wartość z zakresu typu Integer. Domyślną tu wartością jest 32767, która jest tak dobrana, aby w zupełności wystarczała.

Zakładka Source Options



Na zakładce Source Options można ustawić aspekty tekstu źródłowego, które stanowią  specyfikę wybranego języka programowania. Ciekawostką może być to, że niektóre opcje znalazły się tu tylko z jednego powodu - zabrakło dla nich miejsca na poprzednio omawianej zakładce (General).

W miejscu Source file type ustala się, z rozwijanej listy widocznej zaraz po prawej stronie, domyślny zestaw językowych typów projektów. Obok znajdują się dwa przyciski - New (Nowy) i Delete (Usuń). Umożliwiają one dodanie jej o nowe typy i usuwanie z niej tych niepotrzebnych.

Poniżej znajduje się pojemnik o nazwie Options. Zaraz na samej górze mieści pole Extensions, a koło niej rozwijana lista z rozszerzeniami charakterystycznymi dla typu projektu, którego użytkownik wybrał z rozwijanej listy przy polu Source file type. Poniżej znajdują się pola wyboru - oto, co one oznaczają:
  • Zaznaczona opcja Auto indent mode spowoduje automatyczne "wcinanie" następnej linii kodu tak, aby kursor znajdował się w tej samej odległości, co pierwszy znak w poprzedniej linii.
  • Use tab character - jeśli zaznaczysz tę opcję, spowodujesz wpisywanie do teksu znaków tabulacji poziomej, po naciśnięciu tabulatora, czyli klawisza Tab. Jeśli owa opcja jest odznaczona - zamiast tabulacji, otrzymasz ciągi spacji.
  • Gdy zaznaczysz opcję Smart tab - znak tabulacji będzie wpisywany do tekstu jedynie do celu "autowcięcia" wymuszonego poprzez opcję Auto indent mode. Uwaga: W danej chwili może być zaznaczona tylko jedna opcja spośród pól Smart tab oraz Use tab character.

    Opcja Optimal fill powoduje, iż każde "autocofnięcie" linii realizowane będzie za pomocą jak najmniejszych liczby znaków, co osiąga się poprzez "mieszanie" znaków spacji i tabulacji. Jeśli opcja Use tab character jest wyłączona - "autowcięcia" realizowane będą za pomocą spacji.
  • Jeżeli opcja Backspace unindents jest zaznaczona, po naciśnięciu klawisza Backspace w sytuacji, gdy kursor znajduje się w pustej linii lub na pierwszym niepustym znaku aktualnej linii spowoduje "cofnięcie" początku linii do poprzedniego "poziomu wycinania". Kiedy opcja jest odznaczona - naciśnięcie klawisza Backspace spowoduje cofnięcie o jeden znak.

    Keep trailing blanks - jeśli jest ona włączona, zachowywanie pustych znaków na końcu linii. Jeśli opcja nie jest zaznaczona - znaki takie są obcinane.
  • Opcja Show tab character powoduje uwidacznianie w tekście wszystkich znaków tabulacji za pomocą specjalnego symbolu.
Uwidacznianie znaków tabluacji

Dzięki opcji Show space character możesz uwidaczniać w tekście wszystkie znaki spacji za pomocą specjalnych kropek. Podobny efekt widoczny jest na rysunku po prawej stronie.

Gdy pole Use syntax highlight jest zaznaczone, edytor koloruje składnię. W przeciwnym wypadku - brak kolorowania.

Powyżej przedstawiłem znaczenia pól wyboru znajdujących się w pojemniku Options. Jednak pod nimi znajdują się też inne opcje. Poznajmy je bliżej!

Pole Syntax Highlighter określa, dla jakiego języka ma być kolorowana składnia. Wybiera się go z rozwijanej listy po prawej stronie.

Block indents - zawiera wielkość "skoku", o jaki przesuwany jest zaznaczony blok w wyniku użycia kombinacji klawiszy Ctrl+Shift+I bądź Ctrl+Shift+U.

W polu Tab stops możesz określić długość tabulatorów. Czyli, np. wybierając z rozwijanej listy wartość 8 - po naciśnięciu klawisza Tab, otrzymasz odstęp ośmiu pustych znaków. Początkowo są widoczne tylko dwie wartości - 2 i 8, jednak możesz łatwo dodawać swoje ręcznie, np. 50.

No, to by było na tyle, jeśli chodzi o zakładkę Source Options.

Zakładka Display



Na zakładce Display możesz określić różne opcje związane z wizualnymi aspektami okna edytora kodu. Poniżej postaram Ci wytłumaczyć, co oznaczają poszczególne opcje z omawianej zakładki. Zapraszam.

Na początku przyjrzyjmy się pojemnikowi Display and file options. Znajdują się w nim cztery pola wyboru. Poniżej przedstawiam ich znaczenie:

BRIEF cursor shapes - po zaznaczeniu tej opcji, kursor będzie zajmował szerokość zaznaczenia jednego znaku, jeśli znajduje się koło jakiegoś znaku. Jeśli znajduje się dalej choć o jedną spację, będzie liczył: szerokość zaznaczenia jednego znaku, a wysokość połowę wysokości zaznaczenia jednego znaku.

Gdy opcja Create backup file jest zaznaczona, każda operacja zapisu pliku poprzedzana będzie utworzeniem kopii zapasowej pliku. Kopia zachowuje nazwę pliku, a jej rozszerzenie poprzedzone jest znakiem tyldy, np. plik.~pas.

Opcja Zoom to full screen odpowiada za maksymalizowanie okna edytora kodu. Standardowo opcja ta jest wyłączona i po zmaksymalizowaniu okna edytora nie zajmuje całego ekranu - widoczny jest panel główny, czyli to okno gdzie znajduje się menu główe IDE, paleta komponentów, pasek narzędzi. Gdy opcja jest zaznaczona - okno edytora zajmie powierzchnię całego ekranu (oczywiście bez paska zadań Windows).

Menu kontekstowe Pages

Pole Sort popup pages menu odpowiada za kolejność nazw poszczególnych stron w podmenu Pages menu kontekstowego znajdującego się przy zakładkach otwieranych plików (przedstawia to rysunek obok). Jeśli opcja jest zaznaczona, poszczególne strony ułożone są według alfabetycznej kolejności nazw; przy braku zaznaczenia są ułożone w kolejności ich otwierania.

Przejdźmy teraz do omawiania zawartości pojemnika Margin and gutter. Ustawia tu się parametry prawy margines (margin) i kolektor (gutter).

Pole wyboru Visible right margin określa, czy ma być widoczny prawy margines (pionowa kreska), czy też nie.

Visible gutter - określa, czy ma być widoczny kolektor (kolumna po lewej stronie), czy też nie.

Dzięki opcji Right margin możesz ustawić odległość między kolektorem a prawym marginesem. Standardowo jest to wartość 80, jednak zawsze możesz dopisać ją ręcznie.

Opcja Gutter width określa szerokość kolektora.

Prawie już wszystkie opcje z tej zakładki mamy już omówione. Pozostały tylko dwia, chyba najprostsze ustawienia. Oto one:

Poprzez opcję Editor font możesz wybrać rodzaj czcionki, który będzie Ci towarzyszył w edytorze kodu.

I ostatnia opcja - Size. Określa ona nic innego jak wielkość czcionki w edytorze.

Zakładka Key Mappings



Na zakładce Key Mappings można ustalić mapowanie klawiszy. Dzięki temu można przypisać konkretne kombinacje klawiszy dla poszczególnych operacji wykonywanych przez edytor. Delphi oferuje osiem predefiniowanych mapowań, umożliwiając ponadto definiowanie i integrowanie ze środowiskiem IDE modułów rozszerzających definiujących nowe kombinacje klawiszy. W sekcji Enhancement modules znajduje się lista zainstalowanych modułów rozszerzających.

Zakładka Color



Na tej zakładce możesz określić, w jaki sposób ma być kolorowany dany element i właściwości atrybutów tekstu. Dany element możesz wybrać z listy Element lub po prostu kliknąć na wybrany przez siebie element znajdujący się na widocznej kontrolce edycyjnej wypełnionej kodem.

Pod listą elementów znajdują się dwie opcje: Foreground Color (kolor "zwykłego" tekstu) i Background Color (kolor "zwykłego" tła). Nad omawianym przed paroma zdaniami "obrazkiem", znajdują się dwa pojemniki: Text attributes i Use defaults for. Ten pierwszy określa czy wskazany w liście Element tekst ma być: pogrubiony (Bold), pochylony - wyróżniony kursywą (Italic), czy też podkreślony (Underline). Natomiast w pojemniku Use defaults for ustala się, czy ma być włączony domyślny kolor dla tekstu (Foreground) i tła (Background). Nad sekcją Element znajduje się jeszcze opcja Color SpeedSetting, gdzie z rozwijanej listy możesz wybrać jeden z gotowych pięciu schematów kolorowania. Z zakładki Color zostało nam jeszcze omówić poszczególne opcje z sekcji Element.

Element Whitespace z ustawioną opcją Background Color na Fuchsia

Pole Whitespace określa kolor "czystego" tła, tzn. miejsca w edytorze, gdzie nie jest wpisany żaden tekst. W zasadzie kolor tekstu i właściwości atrybutów tekstu nie są tu w ogóle potrzebne. Mogły by być one chociaż zacieniowane.

W polu Comment określa się ustawienia nic innego jak komentarzy.

Reserved word - tu ustawisz, jak wyglądać będą wszystkie słowa kluczowe, czyli np. begin, end, czy const.

Element Identifier z ustawionym podkreśleniem i kolorem tekstu na czerwony

Dzięki Identifier, użytkownik ma możliwość ustawienia wyglądu tekstu znajdującego się zaraz po np. dyretywie procedure lub uzupełnieniem jakiejś procedury. Aby pokazać, o co dokładnie mi chodzi, zamieszczam obok screena z przykładowej sytuacji ;)

Element Symbol określa operatory (np. operator przypisania - :=) i znaki interpunkcyjne (m.in. kropki, przecinki, średniki, nawiasy).

We właściwości String możesz ustalić, w jaki sposób będą wyświetlane napisy typu String, czyli na przykład:
URL := '4programmers.net'; { zwróć uwagę na napis 4programmers.net i apostrofy }

Dzięki opcji Number możesz ustawić wygląd numerów, cyfr i liczb.

Opcja Assembler określa, jak wyglądać będzie składnia języka Asembler (ang. Assembler).

Hot Link - określa, jak wyglądać będzie link, wywołany Ctrl + najazd myszką. Efekt taki można uzyskać, najeżdżając myszką, w opisany przed chwilą sposób, na fragment nazwy jakiegoś komponentu, gdzie po kliknięciu otwiera się kod źródłowy komponentu.

Blok tekstu z ustawionymi Background Color na Maroon i Foreground Color na Lime

Dzięki Marked block możesz określić, jak będą wyglądały bloki tekstu. Efekt zaznaczania bloku tekstu można uzyskać dzięki Alt + wskaźnik myszy. Przykładowy zaznaczony blok tekstu widoczny jest na obrazku po lewej stronie.

Opcja Search match dotyczy szukania tekstu. Po wybraniu z menu Search opcji Find... lub wciskając kombinację klawiszy Ctrl+F, w polu Text to find wpisuje się szukaną frazę; jeśli Delphi znajdzie w edytorze owy tekst, przeniesie Cię do linijki, w której się znajduje i wyróżni w opisywany w opcjach edytora sposób (choć można zrobić tak, aby wyglądał tak samo, jak zwykły tekst).

Pole Execution point związane jest z pracą krokową. W czasie pracy krokowej widoczny jest wskaźnik wykonywania - jest to podświetlenie wyróżniające następną instrukcję do wykonania. Podświetleniu temu towarzyszy zielona strzałka w kolektorze. Standardowo owe podświetlenie jest to granatowa linia o tekscie koloru białego. Jednak nie trudno to zmienić...

Enabled break i Disabled break - te opcje odpowiedzialne są za tzw. punkty przerwań. Domyślnym schematem jest - dla tej pierwszej - czerwona linia i biały tekst, natomiast dla Disabled break - jasnozielona linia i czerwony tekst.

Opcja Invalid break związana jest także z punktami przerwań (zwanymi również punktami wstrzymań). Jeśli naciśniesz klawisz F5 - ustawisz punkt przerwań; ponowne jego naciśnięcie w tej samej linii spowoduje jego likwidację. Jeśli operacja przebiegła pomyślnie - zaznaczony jest czerwoną kropką z tzw. "ptaszkiem" w kolektorze. Jednak jeśli nie wszystko poszło po naszej myśli - pojawi się kropka z krzyżykiem, z domyślnie podświetloną linią w kolorze oliwkowym i kolorze tekstu jasnozielonym.


Wyróżniona linia, w której nastąpił błąd przy kompilacji
Error line - opcja odpowiedzialna jest za wyróżnienie linii przy której nastąpił jakiś błąd przy kompilacji programu. Aby uwietrznić to przykładem, spójrz na obrazek u góry - napis CyberNet powinien być umieszczony pomiędzy apostrofami. Warto nie pozbywać się wyróżnienia tej opcji.

Right margin - ta opcja dotyczy niczego innego jak już wcześniej omawianego prawego marginesu. Ustala się tu kolor jego kolor - standardowo jest to srebrny.

Opcja Float pozwala określić wygląd liczb zmiennopozycyjnych. Są to liczby zawierające kropkę dziesiętną.

Pole Hex określa jak wyglądać będą wartości koloru typu HEX. Zaczynają się one przedrostkiem znaku dolara ($).

Tags (HTML), Attrib Names (HTML) i  Attrib Values (HTML) - to opcje określające kolorowanie składni języka HTML. Ta pierwsza odpowiedzialna za wygląd znaczników, druga - Attrib Names (HTML) - określa styl wyświetlania atrybutów.

Zakładka Code Insight



Mechanizmy uzupełniania kodu Code completion, parametryzacji kodu Code parametrs, szybkiego oglądania wartości wyrażenia Tooltip expression evaluation oraz szybkiego udostępniania deklaracji symbolu w postaci podpowiedzi kontekstowej - Tooltip symbol insight składają się w jedną całość nazywaną Code Insight. Przejdźmy od razu do omawiania ostatniej zakładki.

Znajdują się tu dwa pojemniki - Automatic features i CodeInsight Color. Na początku ten pierwszy:

Gdy opcja Code completion jest zaznaczona, mechanizm uzupełniania kodu jest włączony, jeżeli nie - wyłączony.
Następne pola wyboru służą do włączania/wyłączania kolejno Code parametrs, Tooltip expression evaluation i Tooltip symbol insight.

Po prawej stronie owego pojemnika znajduje się pasek postępu o nazwie Delay. Służy on do określenia, ile sekund użytkownik ma czekać na automatyczne pojawienie się mechanizmu Code completion.

Pierwszy pojemnik masz już za sobą. Został jeszcze jeden, ostatni - mianowicie CodeInsight Colors. Służy on do określenia kolorystyki mechanizmu uzupełniania kodu Code Insight.

Pierwsza opcja, Abstract Symbol, służy do określenia wyglądu abstrakcyjnych symboli.

Constant Symbol - dzięki tej opcji możesz określić, jak będzie się prezentować pole typu constant, oczywiście w mechanizmie Code Insight.

Opcja Function Symbol pozwala określić kolor tekstu typu Function. A więc w Code Insight będzie to napis Function, który standardowo jest niebieski.

Następne - Label Symbol i Procedure Symbol - służą do ustawienia kolejno styli typu Label i Procedure, czyli procedur.

Ostatnie opcje: Property Symbol - opcja ta służy do ustalenia wyglądu typu Property, Type Symbol dotyczy typu Type, Unit Symbol - służy do określenia typu Unit, zaś Variable Symbol - dotyczy typu Variable.

Została tylko jedna opcja - Background. Dzięki niej określasz nic innego jak tło mechanizmu Code Insight.

I tak oto artykuł dobiegł końca. Mam nadzieję, że coś z niego wyniosłeś.

Pozdrawiam,
Coldpeer

sierpień 2005