2009-08-21 16 views
6

Zastanawiam się, co ludzie za pomocą prawidłowo wykorzystać angielski ciągi ponieważ „” wykorzystać „” nie zrobi pracy:Jak wykorzystać angielski ciąg w Emacs

(capitalize "can't") 
=> "Can'T" 

Chociaż pisanie tej funkcji jest trywialna, I zastanawiam się, czy jest to preferowany wbudowany sposób na zrobienie tego.

Odpowiedz

8

Może jeśli chwilowo dodać ' do bieżącego słowa składowego tabeli składni:

(modify-syntax-entry ?' "w") 

(capitalize "can't") 
=> "Can't" 
+2

+1, jedna uwaga z tym jednak: (zamień "to jest" test "") "To jest test" " – cobbal

5

mam M-c związany wykorzystać słowo, i to działa wykorzystać can't poprawnie.

+0

jest pisane wielkimi literami, ponieważ widzi" nie może "jako dwa słowa, może i t. To dlatego pierwotnie powiedział ciągi zamiast słów. Używając słowa pisanego wielką literą, musiałbym zapętlić wszystkie słowa w łańcuchu i skończyłoby się kapitalizacją "t". –

+1

Nie, to nie w porządku. wielkie litery nie mogą być jednym słowem. To nie kapitalizuje t. Ale jest to interaktywna funkcja, która kapitalizuje następujące słowo (lub N awords) w bieżącym buforze. Nie jest to funkcja, która ma zastosowanie do przekazanego łańcucha. Więc i tak to by nie zadziałało. – Cheeso

+0

Pomyślałem o tym samym, ale jeśli uruchomisz 'M-2 M-x wielkie litery" na "nie", dostaniesz "Can not". Tak więc widzi "nie może" jako dwa słowa. – seth

1

Bieżące odpowiedzi są w porządku, ale jeśli pracujesz z ciągami w kodzie, możesz użyć biblioteki manipulacji ciągami s. s-capitalize kapitalizuje pierwsze słowo w zdaniu.

ELISP> (s-capitalize "can't win the war on drugs in a prison, where the hell you gonna win it?") 
"Can't win the war on drugs in a prison, where the hell you gonna win it?" 
ELISP> (s-join " " (-map 's-capitalize (s-split " " "can't win the war on drugs in a prison, where the hell you gonna win it?"))) 
"Can't Win The War On Drugs In A Prison, Where The Hell You Gonna Win It?" 

s-titleize aktywuje każde słowo w ciąg, ale jest to proste otoki wokół wbudowanej capitalize, dlatego stosuje Karl Voigtland's workaround.

ELISP> (s-titleize "Girl, you can't even think of calling this shit a war.") 
"Girl, You Can'T Even Think Of Calling This Shit A War." 
ELISP> (progn (modify-syntax-entry ?' "w") (s-titleize "Girl, you can't even think of calling this shit a war.")) 
"Girl, You Can't Even Think Of Calling This Shit A War." 
1

Zachowanie zależy oczywiście od używanej tabeli składni, tj. Zależy od trybu głównego. Jeśli znak ' ma składnię "w p", powinien działać poprawnie. Jest tak w przypadku trybu tekstowego, ale nie w większości trybów programowania.

Powiązane problemy