BBEdit 9.3 och non-breaking spaces

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1

(Varning för en massa text som förmodligen inte är intressant för någon annan än mig... )

Sedan flera år tillbaka råkar jag då och då ut för följande problem vid PHP-programmering:

Jag kopierar exempelkod (PHP) från en webbsida i Safari och klistrar in i BBEdit för användning, sparar sidan mot en (S)FTP-server och testar sidan i en webbläsare och får error. Och så svär jag än en gång över att ha råkat ut för samma fel.

Problemet är att när man kopierar text i Safari som är märkt med fast bredd, som kod ofta är, får man "non-breaking spaces" istället för vanliga mellanslag. Det är osynliga tecken och man ser inte dom i vanligt redigeringsläge i BBEdit (eller någon annan textredigerare för den delen), det ser ut som vanliga mellanslag om man inte aktiverar show inivsible characters.

Så varje gång man kopierar sådan text från Safari måste jag:
1) Slå på osynliga tecken för att se om det kommit med några sådana
2) Kopiera tecknet och söka och ersätta det med vanligt mellanslag.
Ibland glömmer jag ovanstående och det är då jag svär (se ovan).

I förrgår skickade jag ett mejl till BBEdits support:

Is there an option in BBEdit to never paste non-breaking spaces from Safari?

When copying text with fixed width (like code examples) from web pages in Safari the spaces unfortunately are not ordinary spaces but non-breaking spaces. These are invisible characters in BBEdit but causes error in PHP scripts.

I've search for this issue and seen support staff from BBEdit suggesting "Convert to ASCII" and "Zap Gremlins" but non of those commands are any good if you want to preserve other non-ASCII characters like Swedish characters å ä ö.

This is what I would like:

An option in BBEdit to ALWAYS convert these non-breaking spaces from Safari to ordinary spaces. No other characters should be touched, just those pesky non-breaking spaces.

That would save me a lot of time and errors because of this. (One could argue that Safari should do be doing that, but I have greater hope in you fixing this in BBEdit then Apple changing Safari.)

Samma dag fick jag svar:

Hi Adrian,

Thanks for writing in with your feature request.

Our product development team is considering this feature for a future version of BBEdit (though we cannot speculate as to the timing).

Idag släpptes BBEdit 9.3 och i BBEdit 9.3 Release Notes hittade jag:

When pasting into an editing view, BBEdit will convert non-breaking spaces (Unicode 0x00A0) in the pasted text to ASCII spaces (Unicode 0x0020). To disable this conversion:

defaults write com.barebones.bbedit Clipboard:ConvertNonBreakingSpacesWhenPasting -bool NO

Woo-hoo!

Det var rimligtvis bara ett sammanträffande, jag har svårt att tänka mig att de skulle hinna implementera och testa en sådan funktion så nära en release, men det är ändå kul att leka med tanken...

Samma fel uppstår ofta när jag programmerar. Logiskt OR (eller) är ju alt+7 två gånger ( || ) och på det mellanslag som jag skriver efteråt [ if (detena || detandra) ] så har jag väldigt ofta fortfarande tummen på alt-tangenten, så det blir alt+mellanslag mellan || och detandra.
Med Javascriptfiler så yttrar sig felet så att Safari 2 inte kan ladda filen efteråt (Safari 2 används av Dashboard i Mac OS Tiger). Även Mozillawebläsare modell äldre får samma fel.

Jag brukar köra sök&ersätt (när jag kommer ihåg...). Skriv in alt+mellanslag i sökrutan och bara mellanslag i ersättrutan.
Man behöver alltså inte slå på dolda tecken, bara man vet hur man skriver hårt mellanslag (alt+mellanslag)

Det här är faktiskt en sak som är "bättre" på pc, eftersom OR skrivs som alt-gr och nån tangent, och det är så klumpigt att skriva jämfört med alt+7. Det finns därför dels tillräckligt med tid att lyfta tummen och dels så är inte altgr+mellanslag lika med hårt mellanslag.

Jag använder Eclipse ska tilläggas, men samma fel uppstår förstås i alla textredigerare på mac (det är ju kombinationen alt+7 och alt+mellanslag som är orsaken, inte själva textprogrammet som sådant).

Ursprungligen av gusax840:

Samma fel uppstår ofta när jag programmerar. Logiskt OR (eller) är ju alt+7 två gånger ( || ) och på det mellanslag som jag skriver efteråt [ if (detena || detandra) ] så har jag väldigt ofta fortfarande tummen på alt-tangenten, så det blir alt+mellanslag mellan || och detandra.

Jag känner igen problemet, händer mig då och då, speciellt med []. Men det är svårare att veta om när det sker (till skillnad från klistra in som jag iaf kunde förutse om jag tänkte efter), och när det skett så märks det inte förrän jag testkör koden.

Ursprungligen av gusax840:

Man behöver alltså inte slå på dolda tecken, bara man vet hur man skriver hårt mellanslag (alt+mellanslag)

Ah, bra tips, tackar!

Ja den där typen av osynliga skräptecken har ju verkligen drivit en till vansinne ibland, innan man fattar vad det är frågan om. Själv brukar jag köra "ZAP Gremlins" eftersom jag mest skriver CLI-PHP, eller databasdriven php, där jag således inte lider av "åäö"-problematiken.

En annan grej jag skulle vilja föreslå att du testar är funktionen "Text Factory", som i princip är små sparade makron som kan byggas ihop till större makron. Med dessa kan du alltså göra egna sök- och ersätt-sekvenser som rensar upp saker på det sätt du önskar.

Ursprungligen av Richard Rönnbäck:

Ja den där typen av osynliga skräptecken har ju verkligen drivit en till vansinne ibland, innan man fattar vad det är frågan om. Själv brukar jag köra "ZAP Gremlins" eftersom jag mest skriver CLI-PHP, eller databasdriven php, där jag således inte lider av "åäö"-problematiken.

Ja då kan det ju vara användbart. Det är sällan jag har åäö i själva koden, men ibland kan det finnas i strängar som felmeddelanden på svenska eller liknande. (Och så gillar jag inte tanken på att en massa saker ändras på ett lite "magiskt" sätt, när det är en speciell ändring jag vill åt.)

Ursprungligen av Richard Rönnbäck:

En annan grej jag skulle vilja föreslå att du testar är funktionen "Text Factory", som i princip är små sparade makron som kan byggas ihop till större makron. Med dessa kan du alltså göra egna sök- och ersätt-sekvenser som rensar upp saker på det sätt du önskar.

Ah, just det, bra tips! Jag hade i bakhuvudet att något sådant fanns, tror till och med jag använt det någon gång i tiden, men inte tänkt på det i detta sammanhang.

1
Bevaka tråden