Forum: FPGA, VHDL & Co. XEmacs suchen/markieren


von Philip (Gast)


Lesenswert?

Hallo,

ich weiß nicht ob ich hier im richtigen Forum bin, aber da viele FPGA 
Entwickler XEmacs nutzen, kann mir bestimmt jemand helfen.

Wenn ich in einen VHDL-file den cursor z.B. vor einen Signalnamen setze 
und C-s C-w drücke, wird das Signal markiert, allerdings nur bis zum 
ersten Unterstrich. Ich möchte aber gern den gesamten Namen mit einem 
Mal markieren. Ich weiß auch, dass das geht, aber leider nicht, wo ich 
das in XEmacs einstelle.

Gruß Philip

von P. K. (pek)


Lesenswert?

Warum willst Du Dich einschränken?

C-s C-w C-w

und es ist bis zum nächsten Underscore markiert (braucht den Bruchteil 
einer Sekunde, und kann beliebig oft aneinander gereiht werden...)

von Philip (Gast)


Lesenswert?

Weil ich es so gewohnt bin :-)
Und weil ich in der Regel Ports oder Signale suche und die bei mir oft 
mehrere _ enthalten. Das mit dem mehrmals C-w finde ich lästig...

von P. K. (pek)


Lesenswert?

OK, probiers mit

C-s M-y

(wobei bei mir M die "Alt"-Taste ist...)

von Philip (Gast)


Lesenswert?

Das ist auch nicht ganz das was ich suche. Auf einem anderen Rechner 
habe ich das auch mit C-w gemacht, nur dass das Markieren dann bis zum 
ersten Leerzeichen oder ( etc. ging. Muss man also irgendwo 
konfigurieren können. Aber konfigurieren von XEmacs ist halt sone Sache 
:-)

von Klaus W. (mfgkw)


Lesenswert?

Habe es eben im GNU-EMACS probiert, aber im XEmacs sollte es hoffentlich 
ähnlich gehen (wenn nicht, dann nimm halt den GNU-EMACS :-)

In der Startup-Datei (bei mir .emacs im Homeverzeichnis) einfügen:

1
(defun meine-ergaenzungen-zu-vhdl-mode()
2
  "Ergaenzungen zu VHDL-mode 06.07.2012 kw"
3
  (modify-syntax-entry ?_ "w")
4
  )
5
6
(add-hook 'vhdl-mode-hook 'meine-ergaenzungen-zu-vhdl-mode)

Damit gehört (wenn man im VHDL-Modus ist) ein Unterstrich zu den 
Zeichen, die ein Wort ausmachen.

Natürlich bei einem dann neu gestarteten EMACS, für einen bereits 
offenen Buffer müsste man das modify-syntax-entry nach einem M-x von 
Hand eingeben (M-x, dann modify-syntax-entry, dann Return, dann _, dann 
w)

von berndl (Gast)


Lesenswert?

Tja, EMACS iss schon 'n klasse Betriebssystem. Schade dass kein 
gescheiter Editor dabei ist :o)

von Klaus W. (mfgkw)


Lesenswert?

Trotz meines schlechten Gedächtnisses kannte ich den schon.
Trotzdem danke für den wertvollen Beitrag.

von Klaus W. (mfgkw)


Lesenswert?

Klaus Wachtler schrieb:
> Natürlich bei einem dann neu gestarteten EMACS, für einen bereits
> offenen Buffer müsste man das modify-syntax-entry nach einem M-x von
> Hand eingeben (M-x, dann modify-syntax-entry, dann Return, dann _, dann
> w)

Ich wollte es noch korrigieren, aber dank des wichtigen Interrupts durch 
berndl ging es nicht mehr.
Es soll heißen:

Natürlich bei einem dann neu gestarteten EMACS, für einen bereits
offenen Buffer müsste man das modify-syntax-entry nach einem M-x von
Hand eingeben (M-x, dann modify-syntax-entry, dann Return, dann _, dann 
Return, dann
w)

von Philip (Gast)


Lesenswert?

@Klaus Danke, funtioniert!
Weißt Du zufällig auch noch woran es liegen kann, wenn man die Speedbar 
nicht öffnen kann? Meldung - "WARNING: An error occured while opening 
speedbar"

von Klaus W. (mfgkw)


Lesenswert?

Sorry, keine Ahnung.

Steht im *Messages*-Buffer mehr?

von Philip (Gast)


Lesenswert?

Leider nicht...
Aber ich hätt da noch ne andere Frage :-)

Bein "Auto-Vervollständige" einer IF-Abfrage möchte ich die Bedingung 
gerne automatisch in einer Klammer haben. Per default macht XEmacs das 
nicht so...

von Klaus W. (mfgkw)


Lesenswert?

Ich habemit VHDL nix am Hut, deshalb weiß ich nicht mal, wie da ein if 
aussieht :-)
In C/C++ habe ich mir das so gebastelt:

1
(defun kw-ergaenzungen-zu-c-c++-mode()
2
  "Ergaenzungen zu c-mode..."
3
  ( setq abbrev-mode t )
4
   ...
5
)
6
(add-hook 'c-mode-common-hook 'kw-ergaenzungen-zu-c-c++-mode)
7
(add-hook 'cc-mode-hook 'kw-ergaenzungen-zu-c-c++-mode)
8
...
9
(defun abbrev-korrekt-if() "Korrektur fuer if-Abkuerzung"
10
  (push-mark)
11
  (set-mark (point))
12
  (previous-line 3)
13
  (beginning-of-line nil)
14
  (indent-region (point) (mark) nil)
15
  (pop-mark)
16
  (end-of-line nil)
17
  (backward-char 2)
18
  )
19
...
20
(quietly-read-abbrev-file "~/.abbrev")
21
...

In meiner .abbrev wiederum steht dann:
1
(define-abbrev-table 'c++-mode-abbrev-table '(
2
...
3
    ("if" "if( )
4
{
5
6
}" abbrev-korrekt-if 9)
7
... ggf. weitere Abkürzungen ...
8
))
9
... analog mit c-mode-abbrev-table...

Wenn der EMACS startet, liest er die .abbrev (wegen 
quietly-read-abbrev-file) und merkt sich die Abkürzung für if.

Wenn ich dann in einem C-Buffer if tippe und ein Leerzeichen, dann wird 
if ersetzt durch
1
if( )
2
{
3
4
}
und danach die Funktion abbrev-korrekt-if aufgerufen.
Die rückt alles sauber ein und positioniert dann den Cursor in der 
Bedingungsklammer, damit ich dort weiterschreiben kann.

von BorisM (Gast)


Lesenswert?

Hallo zusammen,
ich sehe hier ist ein Kenner was (X)Emacs angeht. Ich wollte mich schon 
lange mal mit dem Editor auseinander setzen. Ich habe zwar jetzt den 
Sigasi zum testen, aber ich bin dann doch eher der OpenSource Nutzer.
Jetzt aber mal zu meiner Frage:
Gibt es ein gutes Tutorial oder Buch zu (X)Emacs? welches ihr empfehlen 
könnt? Die Doku auf deren Homepage habe ich mir bis jetzt noch nicht 
angeschaut, hoffe aber am Wochenende vielleicht mal dazu zu kommen.
Gruß Boris

von Klaus W. (mfgkw)


Angehängte Dateien:

Lesenswert?

Es gibt viel, aber mir hilft es am ehesten, wenn man von anderen 
Konfigurationsdateien abkupfern kann.

Ich hänge meine beiden mal an (geht unter Unix/Linux etc. ebenso wie 
unter Windows).
Die beiden müssen .emacs bzw. .abbrev heißen; ich glaube aus dem . wird 
im Anhang hier ein _; dann bitte umbenennen.

von BorisM (Gast)


Lesenswert?

Vielen Dank, werde mich am Wochenende mal intensiver damit beschäftigen.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Klaus Wachtler schrieb:
> Damit gehört (wenn man im VHDL-Modus ist) ein Unterstrich zu den
> Zeichen, die ein Wort ausmachen.

Geschmackssache, ob das gewünscht ist. Bei Sprachen ohne Namespaces 
benutzt man ja gerne den Unterstrich, um Namenshierarchien zu erzeugen. 
Will man dann ein "Wort" manipulieren, dann kann es sinnvoll sein, dass 
der Unterstrich die Aktion begrenzt.
Ich empfehle dem OP, zunächst folgenden workaround:
M-C-Space M-w C-s M-y

(sexp markieren, in den kill-ring kopieren, suche starten, kill-ring 
einfügen)

Gruß
Marcus

von Klaus W. (mfgkw)


Lesenswert?

Marcus Harnisch schrieb:
> Geschmackssache, ob das gewünscht ist.

War ja nicht mein Wunsch :-)

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Klaus Wachtler schrieb:
> War ja nicht mein Wunsch :-)

Das geht aber in der Tat vielen so (mich eingeschlossen), dass man das 
in den Emacsen vorgesehene Verhalten erstmal komisch findet. Versteht 
man den Hintergrund und hat sich nach einiger Zeit daran gewöhnt, dann 
findet man das andere Verhalten komisch.

Mich nervt es zum Beispiel beim Verilog mode und, heute seltener 
genutzt, Specman mode, dass der Autor beider modes den Unterstrich als 
"word constituent" definiert hat. Ich hatte deswegen schon vor Jahren 
eine Diskussion mit dem Autor, die leider fruchtlos war.

Gruß
Marcus

von Klaus W. (mfgkw)


Lesenswert?

Das ist m.E. kein Grund zum Unglücklichsein, solange man sich alles 
umkonfigurieren kann, wie man will.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.