Lazarus/Pascal i tworzenie oprogramowania dla systemu Android

Lazarus/Pascal i tworzenie oprogramowania dla systemu Android
KR
  • Rejestracja:ponad 6 lat
  • Ostatnio:około rok
  • Postów:174
2

Myślałem, że ten cały LAMW to tylko sztuka dla sztuki, ale okazuje się że jednak da się zrobić całkiem fajną aplikacje dla systemu Android, napisaną w Object Pascalu przy użyciu Lazarus Android Module Wizard:)

https://play.google.com/store/apps/details?id=swbcdx.cap.shortwavelist
Aplikacja całkiem nieźle działa i się prezentuje, nie tylko pokazuje częstotliwości radiostacji z całego świata ale je też odtwarza:)
Info, że to jest w Pascalu znalazłem na forum freepascal.org.
Ciekawe czy ktoś z Was próbował tworzyć w ten sposób aplikacje na androida? Mnie jak na razie nie chciało się bawić :(

edytowany 2x, ostatnio: flowCRANE
KA
  • Rejestracja:prawie 21 lat
  • Ostatnio:11 dni
  • Postów:700
0

Przymierzam się żeby ugryźć temat ale widziałem, że trzeba robić cuda ze środowiskiem więc póki co zrezygnowałem ;)


Kto nigdy nie zrobił var dupa niech pierwszy rzuci kamień.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Tuchów
  • Postów:12167
4

Dla mnie wszelkie problemy związane z budowaniem aplikacja na inne platformy (na inne niż ta, na której uruchomione jest IDE) nie powinny w ogóle istnieć. Nie powinno być tak, że muszę cuda na kiju uprawiać, żeby zbudować aplikację np. na Androida z poziomu Win32. Jeśli – ogólnie pisząc – środowisko pozwala tworzyć programy na wiele platform, ale nie mogę tej platformy wybrać i projektu skompilować bo dostaję błędy, to takie narzędzie jest wybrakowane. No i jest wybrakowane – niby mogę zbudować apkę na inną platformę, ale nie mogę.

Lazarus powinien być dostarczany z kompletem kompilatorów i konfiguracji dla wszystkich wspieranych jako target platform. Wszystkie od razu gotowe do użycia, a wybór docelowej platformy powinien być równoważny z wybraniem odpowiedniej pozycji np. w combobox w oknie ustawień projektu. Wszelkie prace związane z dociąganiem kompilatorów, ich budowaniem, konfiguracją ścieżek i ogólnie ręcznym edytowaniem konfigów itd. to marnotrastwo czasu programisty.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
PerlMonk
Żeby to chociaż były projekty hobbystyczne. Często IDE robią korporacje, więc można zrobić niemal dowolny program bez gadania, że się nie da. Niestety widać, że np. taki M$ woli skierować strumień kasy tylko na uzależnianie od siebie firm.
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Poznań
  • Postów:8774
3

Lazarus powinien być dostarczany z kompletem kompilatorów[...] wybór docelowej platformy powinien równoważny z wybraniem odpowiedniej pozycji np. w combobox w oknie ustawień projektu

Trochę cierpliwości, jeszcze z 12-15 lat i do tego pewnie dojdzie ;)


flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Tuchów
  • Postów:12167
0

@cerrato: na szczęście póki co nie mam parcia na tworzenie oprogramowania na inne platformy niż desktopowy Windows, więc mogę poczekać. Swoją drogą, skoro już tyle platform ma wsparcie, to przydałoby się dodać do zestawu takie perełki jak NES i SNES – tym bradziej że GameBoy Advance jest już obsługiwany. :]


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
cerrato
zabrzmiało hardcorowo, ale szanse raczej nikłe ;)
flowCRANE
A szkoda – NES ciągle żyje, ale tworzenie na niego gier jest ekstremalnie trudne i wymaga użycia wielu narzędzi. Dlatego niewiele z nowo powstających gier jest wartych uwagi (choćby Micro Mages czy nowy Gruniożerca).
stivens
Parcia*. Dziwnie sie czyta "prącia"
flowCRANE
Ooo, faktycznie. Dzięki.
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Poznań
  • Postów:8774
0

A co znaczy, że gameboy jest obsługiwany? Czy polega to na tym, że FPC jest w stanie stworzyć na niego binarki, czy może jakaś część LCL została na niego portowana?


flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Tuchów
  • Postów:12167
2
cerrato napisał(a):

A co znaczy, że gameboy jest obsługiwany?

FPC potrafi kompilować binarki dedykowane tej platformie (czyli gry), dodatkowe narzędzia też są. Ale póki co wsparcie nie jest imponujące, artykułów jak na lekarstwo (w dodatku wiele niedokończonych), no i najpierw trzeba się babrać w budowanie kompilatora, więc może nie być łatwo… :/

W razie czego poczytaj krótki artykuł GameBoy Advance we wiki – nakreśli Ci to sprawę.


Od dawna rozmyślam na temat stworzenia dużego i funkcjonalnego IDE do robienia gier na platformę NES, z własnym, prostym językiem programowania (ze składnią wzorowanym na Lua). Środowiska wyposażonego we wszystko co jest potrzebne do budowy kompletnej gry, czyli w edytor kodu, edytor palet kolorów, sprajtów i map, a także edytor dźwięku i całych utworów (pokroju FamiTracker).

Mam już jakieś doświadczenie jeśli chodzi o pisanie komponentów, w tym komponentów będących edytorami, więc nie byłoby żadnego problemu ze stworzeniem wygodnego i funkcjonalnego interfejsu. Przy czym żadnych konsolowych i konfiguracyjnych pierdół – wszystkie opcje do szybkiego wyklikania, tak aby maksymalnie ułatwić i przyspieszyć pracę.

Jednak aby zabrać się za taki projekt, potrzebowałbym masy czasu na naukę, projektowanie i pisanie (dwa, może trzy lata), a także dofinansowania (np. solidnej zbiórki w którymś z serwisów crowdfundingowych), więc póki co ten projekt pozostanie w swerze marzeń. Może kiedyś…


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 12x, ostatnio: flowCRANE
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Poznań
  • Postów:8774
0

http://itaprogaming.free.fr/index.php?x=p&pag=50

Tylko w sumie to jakoś przeskoczylismy z lazarusa na "gołego" FPC. Po przejrzeniu linku od ciebie (oraz tego wklejonego powyżej) mam mocne wrażenie, że pisanie kodu dla gameboya przypomina obsługę trybu graficznego w Turbo Pascalu :D


KA
TP miał 9 trybów graficznych VGA łącznie z potęgą 13h bajer 256 kolorów i w tym naprawdę kiedyś dało się pisać gry :D
cerrato
13h... Poczułem się przez ciebie jak dinozaur. Pewnie bardzo duża część osób, które to czytają nie ma zielonego pojęcia, o co chodzi.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Tuchów
  • Postów:12167
1
cerrato napisał(a):

Po przejrzeniu linku od ciebie (oraz tego wklejonego powyżej) mam mocne wrażenie, że pisanie kodu dla gameboya przypomina obsługę trybu graficznego w Turbo Pascalu :D

A to źle? Obsługa trybu graficznego w TP była tak prosta jak malowanie po PaintBox z LCL. Zawsze lepiej jest skorzystać z czytelnych, wysokopoziomowych instrukcji, niż rzeźbić w assembly. ;)


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Poznań
  • Postów:8774
0

Nie napisałem, że to źle tylko zwyczajnie się zdziwiłem. Po prostu - ten wątek zaczął się i dotyczy Lazarusa, więc w zakresie gameboya liczyłem na coś innego ;)


Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:3 minuty
0
furious programming napisał(a):

A to źle? Obsługa trybu graficznego w TP była tak prosta jak malowanie po PaintBox z LCL. Zawsze lepiej jest skorzystać z czytelnych, wysokopoziomowych instrukcji, niż rzeźbić w assembly. ;)

Jednak z tego co pamiętam wbudowanu unit graph był dość powolny, zwłaszcza w „wyższych” rozdzielczościach (czyli np. 640x480).
Dostępne były różne alternatywne rozwiązania, szybsze.

KR
  • Rejestracja:ponad 6 lat
  • Ostatnio:około rok
  • Postów:174
2

Aplikacja randkowa(!) w Delphi ;-)

LA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 13 godzin
  • Postów:470
1

Apka ładna i schludna, a że w Delphi? TO nie ma żadnego znaczenia. Można ją zrobić w czymś darmowym i uzyskać ten sam efekt. Dodatkowo taki rodzaj aplikacji musi mieć solidny backend serwerowy, a my tutaj widzimy tak naprawdę możliwości GUI. Podsumowując cieszę się, że ktoś się bawi tym, ja bym sam w to nie szedł.

edytowany 1x, ostatnio: lampasss
TD
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:9
2

KisKis jest napisany w Delphi, ale nie przy użyciu gołego FireMonkey (FMX), który jest do kitu i nie pozwala uzyskać takiego dobrego GUI out of the box jak Flutter. Ta apka używa biblioteki Alcinoe (https://github.com/Zeus64/alcinoe), ktróre mocno poprawia to co EMBA spratoliła w FMX plus wiele rzeczy jest tam robione natywnie poprzez iOS API/Android API.

Samo Delphi jest OK, też mam na produkcji iOS oraz Androida napisane w Delphi plus cały back-end w Azure i działa to pięknie, ale my np. użyliśmy FMX i żeby apka miała jako taki performance i dobrze wyglądała, trzeba robić całą masę work-around'ów. Generalnie koszmar, bo za tak gruby hajs zamiast po prostu pisać w FMX, najpierw trzeba nauczyć się jak ominąć masę głupot i ograniczeń.

Jeśli ktoś chce pisać mobilne apki w Delphi, to być może lepszy będzie FGX od byłego pracownika EMBA (Yaroslav Brovin) :) Póki co w wersji beta, ale wygląda to bardzo dobrze, to samodzielny framework (bez FMX), który daje to co FMX tylko obiecuje, ale nie potrafi zrobić :)

stivens
Jaki byl powod postawienia tej apki na Delphi? Nieznajomosc innych jezykow /do mobile/ przez zespol?
KR
Heh, teraz to wygląda na to, że trzeba udowadniać że nie jest się wielbłądem, skoro pisze się aplikacje w Delphi / Pascalu ;-)
TD
@stivens: nie, rozważaliśmy Xamarina oraz ReactNative. Na pewno nie chcieliśmy robić natywnie, bo zespół jest za mały żeby holować osobno Javę i Swift, więc padło na cross-platform. Mając już doświadczenie z VCL, zaryzykowaliśmy FMX, tu bardziej chodziło o framework, a nie o język (tym bardziej że Delphi jest proste). Do tego liczył się time-to-market, miało być szybko, więc wybór padł na FMX. Dziś decyzja była by prawie taka sama... tyle, że zamiast FMX byłby Flutter, do którego teraz przechodzimy.
stivens
@Kristof: to nie bylo pytanie retoryczne ani zlosliwe. Chyba warto wiedziec skad taka decyzja? W koncu zgodzisz sie ze to nie jest taki naturalny wybor?
KR
Oj pewnie, że się zgadzam:) tym bardziej wyjaśnienie kolegi TommyDev są ciekawe!
stivens
No to nie musisz od razu takiej defensywnej postawy przyjmowac :p
somedev
@TommyDev: ja z kolei mając doświadczenie z VCL zawsze odradzam FMX ;) Xamarin nie jest zły, aczkolwiek nieco inne podejście. A myśleliście o Cordova?
TD
@somedev: nie, Cordova nie była brana pod uwagę.
XO
  • Rejestracja:ponad 7 lat
  • Ostatnio:14 dni
  • Postów:17
0

Jakie przykładowe problemy napotkaliście podczas developmentu w Firemonkey ? Jak je obeszliście ? Czy w kontekście zdobytych doświadczeń rozważylibyście Firemonkey do kolejnej aplikacji pisanej od 0 ? Pytam, bo jestem zainteresowany tą technologią.

SK
  • Rejestracja:około 7 lat
  • Ostatnio:około 9 godzin
  • Postów:98
1

Ja po zrobieniu swojej pierwszej apki na Androida, zauważyłem, że podczas przewijania palcem scrollboxa uruchamiam akcje spod przycisków znajdujących się na tym scrollboxie. Okazało się, że jak dam zdarzenie OnClick, tak właśnie się dzieje. Trzeba używać OnTap :) Szkoda, że OnClick nie jest uniwersalne dla różnych platform i działa prawidłowo tylko w zakresie klikania/przyciskania, ale już źle dla przewijania itp.
Drugi problem napotkałem z TEdit, gdy dałem w nim element TClearEditButton (czyli znak X po prawej stronie pola, służący do wyczyszczenia pola), to po jego naciśnięciu apka się wykrzaczała z jakimś błędem. Było to wersji 10.3.0 lub 10.3.1 (już nie pamiętam). Nie sprawdzałem czy tak samo jest w najnowszej 10.3.2.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Tuchów
  • Postów:12167
0

Ale co to ma wspólnego z tematem tego wątku, czyli z tworzeniem aplikacji dla Androida w Lazarusie…? :/

Jeśli chcecie podyskutować o tworzeniu programów w Delphi to załóżcie osobny wątek.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
TD
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:9
1
XailonOZ napisał(a):

Jakie przykładowe problemy napotkaliście podczas developmentu w Firemonkey ? Jak je obeszliście ? Czy w kontekście zdobytych doświadczeń rozważylibyście Firemonkey do kolejnej aplikacji pisanej od 0 ? Pytam, bo jestem zainteresowany tą technologią.

  1. Start aplikacji przy dużej ilość widoków - trzeba pamiętać aby ze startu usunąć wszystko zostawiając jeden ekran robiący za splash screen z ładną animacją (nie, nie używamy statycznego obrazka, który standardowo jest dla iOS i Android), reszta widoków to już lazy creation. Apka startuje błyskawicznie (iOS + Android), a poszczególne widoki na zawołanie zwykle poniżej 0,6 s. (oczywiście zależy też od tego jak ciężki widok zbudowaliśmy i czy w OnCreate nie ma jakiegoś potworka).

  2. Brak płynnych animacji, zacinanie się widoków np. jeśli scroll-box ma po 10 i więcej elementów, nie będzie się płynnie przesuwał, dlatego że każdy element jest rysowany ponownie podczas przesuwania, czyli jedna klatka i repaint wszystkich elementów, płynna animacja nie jest możliwa w FMX by design (brzmi kozacko!). Należy własnoręcznie zaimplementować cache dla widoków, żeby podczas przesuwania nie przerysowywać milion razy wszystkich elementów.

  3. TAniIndicator - zło straszne, potrafi wywalać apkę. Zamiast tego używamy TBitmapListAnimation dla naszych własnych wskaźników zajętości. Działa pięknie.

skrzat napisał(a):

Drugi problem napotkałem z TEdit, gdy dałem w nim element TClearEditButton (czyli znak X po prawej stronie pola, służący do wyczyszczenia pola), to po jego naciśnięciu apka się wykrzaczała z jakimś błędem. Było to wersji 10.3.0 lub 10.3.1 (już nie pamiętam). Nie sprawdzałem czy tak samo jest w najnowszej 10.3.2.

Ja do TEdit po prostu dostawiam własnego "X-a" i rzucam akcję typu Edit.Text:=''; działa zawsze :) Generalnie, w FMX sprawdza się zasada, im prościej tym lepiej, jak się da, nie używać komponentów, tylko ręcznie wyklepać itp. itd. No i używać asynchronów, a nie wszystko pakować do głównego wątku :)

Jak znajdę czas to wrzucę jakiś artykuł o FMX i doświadczeniach z tym tworem. Flutter nieststy lepszy, ale dla fanów Delphi zostaje jeszcze FGX, którego będę także testował, może być ciekawie :)

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)