Information

3. Mai 2013 Tag 104 des fünften Jahres - Geschichte


9.15 Uhr DER PRÄSIDENT hält Bemerkungen
Anthropologisches Museum, Mexiko-Stadt, Mexiko

11:25 DER PRÄSIDENT trifft sich mit mexikanischen Unternehmern
Anthropologisches Museum, Mexiko-Stadt, Mexiko

12:25 Uhr DER PRÄSIDENT verlässt Mexiko-Stadt, Mexiko auf dem Weg nach San Jose, Costa Rica
Internationaler Flughafen Benito Juarez, Mexiko-Stadt, Mexiko

CST

14:00 DER PRÄSIDENT kommt in San Jose, Costa Rica an
Internationaler Flughafen Juan Santamaria

14:35 Uhr DER PRÄSIDENT trifft sich mit dem Personal der US-Botschaft
InterContinental Real Hotel, San Jose, Costa Rica

15:40 UHR DER PRÄSIDENT und Präsident Chinchilla halten ein eingeschränktes bilaterales Treffen ab
Casa Amarilla

15:55 Uhr DER PRÄSIDENT und Präsident Chinchilla halten ein erweitertes bilaterales Treffen ab
Casa Amarilla

16:30 Uhr DER PRÄSIDENT und Präsident Chinchilla veranstalten eine kulturelle Veranstaltung mit costaricanischen Jugendlichen
Casa Amarilla

17:15 Uhr DER PRÄSIDENT und Präsident Chinchilla halten eine Pressekonferenz ab
Nationales Zentrum für Kunst und Kultur

18:35 Uhr DER PRÄSIDENT nimmt an einem Foto mit den Führern des zentralamerikanischen Integrationssystems teil
Nationaltheater

19:00 Uhr DER PRÄSIDENT, Präsident Chinchilla und die Führer des Zentralamerikanischen Integrationssystems treffen sich zu einem Arbeitsessen
Nationaltheater


Redefreiheit

Redefreiheit �s Recht, Meinungen ohne staatliche Zurückhaltung zu äußern—ist ein demokratisches Ideal, das bis ins antike Griechenland zurückreicht. In den Vereinigten Staaten garantiert der Erste Verfassungszusatz die freie Meinungsäußerung, obwohl die Vereinigten Staaten, wie alle modernen Demokratien, dieser Freiheit Grenzen setzen. In einer Reihe von wegweisenden Fällen hat der Oberste Gerichtshof der USA im Laufe der Jahre dazu beigetragen, zu definieren, welche Arten von Rede nach US-Recht geschützt sind und welche nicht.

Die alten Griechen waren Pioniere der Meinungsfreiheit als demokratisches Prinzip. Das altgriechische Wort “parrhesia” bedeutet 𠇏reie Rede,” oder 𠇊ufrichtig sprechen.” Der Begriff tauchte erstmals gegen Ende des 5. Jahrhunderts v. Chr. in der griechischen Literatur auf.

In der klassischen Zeit wurde die Parrhesia zu einem grundlegenden Bestandteil der Demokratie Athens. Führern, Philosophen, Dramatikern und Athenern stand es frei, offen über Politik und Religion zu diskutieren und in manchen Situationen die Regierung zu kritisieren.


3. Mai 2013 Tag 104 des fünften Jahres - Geschichte

Neue internationale Version
So wurde die Mauer am fünfundzwanzigsten von Elul in zweiundfünfzig Tagen fertiggestellt.

New Living Übersetzung
Am 2. Oktober war die Mauer fertig – gerade mal 52 Tage nachdem wir begonnen hatten.

Englische Standardversion
So war die Mauer am fünfundzwanzigsten Tag des Monats Elul, in zweiundfünfzig Tagen, fertig.

Berean Studienbibel
So wurde die Mauer in zweiundfünfzig Tagen, am fünfundzwanzigsten von Elul, fertiggestellt.

King James Bibel
Also war die Mauer im fünfundzwanzigsten fertig Tag von der Monat Elul, in zweiundfünfzig Tagen.

Neue King James-Version
Also war die Mauer am fünfundzwanzigsten fertig Tag von Elul, in zweiundfünfzig Tagen.

Neue amerikanische Standardbibel
Die Mauer wurde also am fünfundzwanzigsten fertiggestellt der Monat Elul, in zweiundfünfzig Tagen.

NASB 1995
So wurde die Mauer am fünfundzwanzigsten des Monats Elul in zweiundfünfzig Tagen fertiggestellt.

NASB 1977
Die Mauer wurde also am fünfundzwanzigsten fertiggestellt der Monat Elul, in zweiundfünfzig Tagen.

Verstärkte Bibel
So war die Mauer am fünfundzwanzigsten [des Monats] Elul in zweiundfünfzig Tagen fertig.

Christliche Standardbibel
Die Mauer wurde in zweiundfünfzig Tagen fertiggestellt, am fünfundzwanzigsten Tag des Monats Elul.

Holman Christliche Standardbibel
Die Mauer wurde in 52 Tagen fertiggestellt, am fünfundzwanzigsten Tag des Monats Elul.

Amerikanische Standardversion
So war die Mauer am fünfundzwanzigsten Tag des Monats Elul, in zweiundfünfzig Tagen, fertig.

Aramäische Bibel in einfachem Englisch
Und er vollendete die Mauer am fünfundzwanzigsten von Elul, in zweiundfünfzig Tagen.

Brenton Septuaginta Übersetzung
So war die Mauer am fünfundzwanzigsten Tag des Monat Elul, in zweiundfünfzig Tagen.

Zeitgenössische englische Version
Am fünfundzwanzigsten Tag des Monats Elul wurde die Mauer komplett neu aufgebaut. Es hatte 52 Tage gedauert.

Douay-Rheims Bibel
Aber die Mauer war am fünfundzwanzigsten des Monats Elul in zweiundfünfzig Tagen fertig.

Englische überarbeitete Version
So war die Mauer am fünfundzwanzigsten Tag des Monats Elul, in zweiundfünfzig Tagen, fertig.

Gute Nachrichten-Übersetzung
Nach 52 Arbeitstagen war die gesamte Mauer am fünfundzwanzigsten Tag des Monats Elul fertig.

GOTTES WORT® Übersetzung
Die Mauer wurde am fünfundzwanzigsten Tag des Monats Elul fertiggestellt. Es dauerte 52 Tage, bis die Mauer fertig war.

Internationale Standardversion
So wurde die Mauer am fünfundzwanzigsten Tag von Elul in 52 Tagen fertiggestellt.

JPS Tanakh 1917
So war die Mauer am fünfundzwanzigsten Tag des Monats Elul, in zweiundfünfzig Tagen, fertig.

Wörtliche Standardversion
Und die Mauer wird am fünfundzwanzigsten von Elul, am zweiundfünfzigsten Tag, fertiggestellt

NET-Bibel
So wurde die Mauer am fünfundzwanzigsten Tag von Elul in nur zweiundfünfzig Tagen fertiggestellt.

Neues Herz Englische Bibel
So war die Mauer am fünfundzwanzigsten Tag von Elul in zweiundfünfzig Tagen fertig.

Weltenglische Bibel
So war die Mauer am fünfundzwanzigsten [Tag] des [Monats] Elul, in zweiundfünfzig Tagen, fertig.

Youngs wörtliche Übersetzung
Und die Mauer wird am fünfundzwanzigsten von Elul, am zweiundfünfzigsten Tag, vollendet

Nehemia 4:1
Als Sanballat nun hörte, dass wir die Mauer wieder aufbauen, war er wütend und empört. Er verspottete die Juden

Nehemia 4:2
vor seinen Gefährten und dem Heer von Samaria und sprachen: "Was tun diese schwachen Juden? Können sie die Mauer selbst erneuern? Werden sie Opfer bringen? Werden sie es an einem Tag vollenden? Können sie diese verbrannten Steine ​​wieder zum Leben erwecken von" die Trümmerhaufen?"

Nehemia 7:1
Als die Mauer wieder aufgebaut war und ich die Türen angebracht hatte, wurden die Pförtner, Sänger und Leviten ernannt.

So war die Mauer am fünfundzwanzigsten Tag des Monats Elul, in zweiundfünfzig Tagen, fertig.

Esra 6:15 Und dieses Haus wurde am dritten Tag des Monats Adar fertig, das war im sechsten Regierungsjahr des Königs Darius.

Psalm 1:3 Und er wird wie ein Baum sein, gepflanzt an den Wasserbächen, der seine Frucht bringt zu seiner Zeit, auch sein Blatt wird nicht verwelken, und alles, was er tut, wird gedeihen.

Daniel 9:25 Erkenne daher und verstehe, das vom Ausgehen des Gebots, Jerusalem wiederherzustellen und zu bauen, dem Messias, dem Fürsten muss sieben Wochen und dreiundzwanzig und zwei Wochen: die Straße soll wieder gebaut werden und die Mauer auch in schweren Zeiten.

Nehemia 4:1,2 Aber es begab sich: Als Sanballat hörte, dass wir die Mauer bauten, war er zornig und empörte sich sehr und verspottete die Juden

(15) In zweiundfünfzig Tagen. – Der fünfundzwanzigste Tag von Elul entspricht ungefähr unserem 15. September und die Mauer begann in der zweiten Julihälfte, kurz nach Nehemias Ankunft. Bedenkt man, dass die Mauer nur teilweise umgestürzt war, die Materialien für die Restaurierung vorhanden waren und die Arbeitertruppen mit größter Geschicklichkeit organisiert wurden, so wird die Zeit nicht zu kurz erscheinen. Dem Vorschlag von Josephus, dass der Wiederaufbau zwei Jahre und vier Monate in Anspruch nahm, braucht man sich nicht zu eigen zu machen.

Sie erkannten, dass dieses Werk von unserem Gott gewirkt wurde. – Nicht auf wundersame Weise, sondern unter der göttlichen Zustimmung und Hilfe. Mit diesem Ausdruck triumphiert Nehemia sofort über seine Feinde und gibt die Ehre, wo sie gebührt. Sein eigener heroischer Anteil an der Arbeit ist völlig vergessen.

Vers 15. - So war die Mauer am fünfundzwanzigsten Tag des Monats Elul, in zweiundfünfzig Tagen, fertig. Nach Josephus ('Ant. Jud.' 11,5, & Abschnitt 8) dauerte das Werk der Wiederherstellung statt 52 zwei Jahre und vier Monate oder 840 Tage. Und diese Periode wurde für so viel wahrscheinlicher gehalten als die kleinere, dass die Moderne sie im Allgemeinen akzeptiert hat, während einige sogar vorgeschlagen haben, unseren gegenwärtigen Text von Nehemia durch die Einfügung von u-shnathayim, „und zwei Jahren“, zu ändern Ende dieses Verses (Ewald). Aber die Autorität des Josephus in Angelegenheiten der fernen Geschichte ist so gering, und der ganze Bericht über Nehemia ist so harmonisch und in sich stimmig, dass eine Änderung ganz unnötig erscheint. Nehemia verlässt Susa in Nisan, wahrscheinlich gegen Mitte oder Ende des Monats, denn seine Vorbereitungen müssen einige Zeit in Anspruch genommen haben. Er würde wahrscheinlich fast drei Monate auf seiner Reise sein und würde somit Mitte Juli – sagen wir am 15. Juli – Jerusalem erreichen. und an die Arbeit machen. Es war sein Ziel, die Angelegenheit so schnell wie möglich zu beschleunigen, und er könnte durchaus innerhalb von zehn Tagen nach seiner Ankunft mit dem Wiederaufbau begonnen haben. Zweiundfünfzig Tage ab dem 25. Juli würden ihn zum 15. September bringen, was so gut wie dem 25. Elul entspricht. Es liegt keine Schwierigkeit anzunehmen, dass die Wand in diesem Raum hätte repariert werden können. Die Materialien waren griffbereit, die Arbeitsgruppen waren zahlreich, die Arbeiter voller Eifer. Wenn wir den Umfang der Mauer auf vier Meilen schätzen, was wahrscheinlich die Wahrheit übertrifft, und die Arbeitsgruppen auf zweiundvierzig (Ewald), so folgt, dass jede Partei im Durchschnitt 168 Yards reparieren musste, oder bei zwischen drei und vier Metern pro Tag. An den Sabbaten wurde wahrscheinlich keine Arbeit verrichtet, und es mag ein oder zwei Tage Unterbrechung gegeben haben, als ein Angriff unmittelbar bevorzustehen schien (Nehemia 4,13-15), aber ansonsten wurde die Arbeit ohne Pause vom frühen Morgen bis zur Dunkelheit fortgesetzt (ebd . Ver. 21). Die Mauer erreichte in kürzester Zeit die Hälfte ihrer Höhe (ebd. Ver. 6), - dann gab es eine kurze Unterbrechung, - danach kam die Hauptarbeit, den ganzen Rundgang zu seiner vollen Höhe zu vollenden. Es ist möglich, dass die zweiundfünfzig Tage ab der „Rückkehr zur Arbeit“ gezählt werden (ebd. Ver. 15).

wurde abgeschlossen
וַתִּשְׁלַם֙ (wat·tiš·lam)
Konjunktiv waw | Verb - Qal - Konsekutiv Imperfekt - dritte Person weiblich Singular
Strong's 7999: Sicher sein, abgeschlossen sein, freundlich sein, sich erwidern


3. Amerika wollte ursprünglich einen Kanal in Nicaragua bauen, nicht in Panama.

Während des 19. Jahrhunderts hielten die Vereinigten Staaten, die aus wirtschaftlichen und militärischen Gründen einen Kanal zwischen Atlantik und Pazifik wünschten, Nicaragua für einen praktikableren Standort als Panama. Diese Ansicht änderte sich jedoch teilweise dank der Bemühungen von Philippe-Jean Bunau-Varilla, einem französischen Ingenieur, der an beiden Kanalprojekten in Frankreich beteiligt war. In den späten 1890er Jahren begann Bunau-Varilla, amerikanische Gesetzgeber dazu zu bewegen, die französischen Kanalanlagen in Panama zu kaufen, und überzeugte schließlich eine Reihe von ihnen, dass Nicaragua gefährliche Vulkane hatte, was Panama zur sichereren Wahl machte.

1902 genehmigte der Kongress den Kauf der französischen Vermögenswerte. Als Kolumbien, zu dem Panama damals gehörte, sich jedoch im folgenden Jahr weigerte, ein Abkommen zu ratifizieren, das den Vereinigten Staaten den Bau eines Kanals erlaubte, revoltierten die Panamaer mit der Ermutigung von Bunau-Varilla und der stillschweigenden Zustimmung von Präsident Theodore Roosevelt dagegen Kolumbien und erklärte Panamas Unabhängigkeit. Kurz darauf verhandelten US-Außenminister John Hay und Bunau-Varilla als Vertreter der provisorischen Regierung Panamas den Hay-Bunau-Varilla-Vertrag, der Amerika das Recht auf eine Zone von mehr als 500 Quadratmeilen in dass sie einen Kanal bauen konnte, sollte die Kanalzone auf Dauer von den Amerikanern kontrolliert werden. Alles in allem würden die Vereinigten Staaten rund 375 Millionen Dollar für den Bau des Kanals ausgeben, darunter eine Zahlung von 10 Millionen Dollar an Panama als Bedingung des Vertrags von 1903 und 40 Millionen Dollar für den Kauf der französischen Vermögenswerte.

Ein Jahrhundert nach der Fertigstellung des Panamakanals durch die USA bleibt eine schiffbare Verbindung durch Nicaragua möglich: 2013 gab ein chinesisches Unternehmen bekannt, mit der nicaraguanischen Regierung einen 40-Milliarden-Dollar-Deal über die Rechte zum Bau einer solchen Wasserstraße abgeschlossen zu haben.


Oder Psalmen 33:4-5, 6-7, 12-13, 20 und 22

R. (5b) Die Erde ist voll der Güte des Herrn.

4 Aufrecht ist das Wort des Herrn,
und alle seine Werke sind vertrauenswürdig.
5 Er liebt Gerechtigkeit und Recht
von der Güte des HERRN ist die Erde voll.
R. Die Erde ist voll der Güte des Herrn.

6 Durch das Wort des Herrn wurden die Himmel gemacht
durch den Hauch seines Mundes alle ihre Heerscharen.
7 Er sammelt das Wasser des Meeres wie in einer Flasche
in Kellern schließt er die Tiefe ein.
R. Die Erde ist voll der Güte des Herrn.

12 Selig die Nation, deren Gott der HERR ist,
die Menschen, die er für sein eigenes Erbe auserwählt hat.
13 Vom Himmel schaut der Herr herab
er sieht die ganze Menschheit.
R. Die Erde ist voll der Güte des Herrn.

20 Unsere Seele wartet auf den Herrn,
wer ist unsere Hilfe und unser Schild.
22 Möge deine Güte, o HERR, auf uns sein
die unsere Hoffnung auf dich gesetzt haben.
R. Die Erde ist voll der Güte des Herrn.


Veröffentlichte Tests und Artikelsets

Freigegebene Tests sind repräsentativ für den Inhalt und die Fähigkeiten der Virginia SOL-Tests und werden bereitgestellt, um das Verständnis des Formats der Tests und Fragen zu erleichtern. Für einige SOL-Kurse werden Testitem-Sets statt vollständig freigegebener Tests bereitgestellt, da die Testitem-Bank für diese Kurse eine vollständige Veröffentlichung nicht unterstützen kann. Für die Testaufgabensätze können keine Rohbewertungstabellen für skalierte Bewertungstabellen bereitgestellt werden, da sie keine vollständigen Testformulare darstellen. Ebenso kann für die MC/TEI-Komponente des Tests zum Schreiben am Ende des Kurses keine Tabelle mit Rohergebnis zu skalierter Punktzahl bereitgestellt werden, da es sich nicht um eine vollständige Testform handelt.

Die Online-Version der Tests oder Testitem-Sets ist nicht mehr verfügbar, da die Testliefersoftware geändert wurde. Die PDF-Version enthält den Antwortschlüssel für alle Items im Test oder Testitemset.

Die im Frühjahr 2015 und Frühjahr 2014 veröffentlichten PDF-Dokumente für Tests und Testitems-Sets zeigen Bilder der Testitems, wie sie in einem Online-Testformat erschienen sind. Aufgrund der Variabilität bei Computermonitoren kann die Farbe eines Artikels auf einem Monitor anders erscheinen als auf einem anderen.


Einschlägige Regeln und Vorschriften des NY State Board of Elections

&Abschnitt 6201.2 Nutzung von Meinungsumfragen

Kein Kandidat, keine politische Partei oder kein Ausschuss darf versuchen, den Erfolg oder die Niederlage eines Kandidaten durch direkte oder indirekte Offenlegung oder Offenlegung der Ergebnisse einer Abstimmung in Bezug auf einen Kandidaten für ein solches Amt oder eine solche Position zu fördern, es sei denn, es erfolgt innerhalb von 48 Stunden danach Offenlegung geben sie dem Vorstand oder Amtsträger, bei dem von dem Kandidaten, auf den sich diese Umfrage bezieht, Erklärungen oder Kopien von Erklärungen über die Einnahmen und Ausgaben des Wahlkampfs die folgenden Informationen über die Abstimmung mit:

  1. Der Name der Person, Partei oder Organisation, die die Umfrage unter Vertrag genommen oder in Auftrag gegeben und/oder bezahlt hat.
  2. Der Name und die Adresse der Organisation, die die Umfrage durchgeführt hat.
  3. Die numerische Größe der gesamten Umfragestichprobe, das von der Umfrage abgedeckte geografische Gebiet und alle besonderen Merkmale der in die Umfragestichprobe einbezogenen Bevölkerung.
  4. Der genaue Wortlaut der in der Umfrage gestellten Fragen und die Reihenfolge dieser Fragen, soweit Ergebnisse solcher Fragen offengelegt wurden oder soweit diese Fragen vorbereitend für die gestellten Fragen waren, die veröffentlicht wurden und die Antworten der Umfrageteilnehmer auf die Umfragefragen veröffentlicht.
  5. Die Art der Umfrage – ob per persönlichem Interview, Telefon, Mail oder sonstiges.
  6. Der Zeitraum, in dem die Umfrage durchgeführt wurde.
  7. Die Anzahl der Personen in der Umfragestichprobe: die Anzahl der kontaktierten Personen, die auf jede spezifische Umfragefrage geantwortet haben Die Anzahl der kontaktierten Personen, die nicht reagiert haben.
  8. Die Ergebnisse der Umfrage zu den Fragen, die gemäß Unterabschnitt (d) dieses Abschnitts offengelegt werden müssen.

§ 6204.1 Spezifizierung von Einwänden gegen die Benennung und unabhängige Nominierung von Petitionen.

  1. Jede Person, die allgemeine Einwände gegen einen beim Staatswahlausschuss eingereichten Benennungs- oder unabhängigen Nominierungsantrag einreicht, der anschließend bei diesem Ausschuss genaue Angaben zu seinen Einwänden gegen einen solchen Antrag einreicht, muss dies in Übereinstimmung mit den Bestimmungen von Abschnitt 6-154 des Wahlgesetzes tun . Alle diese Spezifikationen müssen im Wesentlichen die folgenden Anforderungen erfüllen:
    1. Die Bandnummer, die Seitennummer und die Zeilennummer jeder Unterschrift, gegen die bei einer Petition Einspruch erhoben wird, müssen detailliert angegeben werden. Darüber hinaus muss jeder Teil einer Petition oder einer Unterschriftszeile oder einer Zeugenaussage, gegen die Einspruch erhoben wird, speziell gekennzeichnet und für einen solchen Einwand begründet werden
    2. Die Gesamtzahl der beanstandeten Unterschriften ist anzugeben und alle Einwendungen, die sich auf eine einzelne Unterschriftszeile beziehen, sind zusammenzufassen
    3. Zur Darlegung von Einwänden können Symbole und/oder Abkürzungen verwendet werden, sofern den Spezifikationen ein Merkblatt beigefügt ist, in dem die Bedeutung solcher Symbole und/oder Abkürzungen erläutert wird.

    §6215.1 Regeln für die Einreichung von Benennungs- und Nominierungsanträgen.

    1. Die Blätter einer Petition werden am Ende jedes Blattes fortlaufend nummeriert.
    2. Allen Petitionen mit zehn oder mehr Blättern ist ein Deckblatt beizufügen.
    3. Beliebige zwei oder mehr Petitionsblätter müssen mit allen Mitteln, die die Seiten in numerischer Reihenfolge zusammenhalten, sicher aneinander befestigt werden.
    4. Petitionsblätter können zu einem oder mehreren Bänden zusammengefügt werden.
    5. Einzelne Petitionsbände sind wie folgt einzureichen:
      1. In Bezug auf Petitionen, die beim Wahlausschuss in der Stadt New York eingereicht werden, oder Petitionen, die bei anderen Wahlausschüssen eingereicht werden, die Kandidaten für mehr als ein öffentliches Amt oder Parteiamt enthalten, die nicht identisch sind, muss jeder Teil jeder Petition eine Identifikationsnummer tragen, die gemäß Abschnitt 6215.3, infra, einzuholen ist. Die zugeteilte Identifikationsnummer ist auf der Vorderseite des Bandes anzubringen. Ist von dem oder den Petitionsstellern keine Identifikationsnummer eingetragen und besteht die Petition aus mehreren Bänden, so ist jeder Petitionsband auf der Vorderseite separat zu nummerieren. Zur Identifizierung eines Petitionsvolumens darf nur eine Identifikationsnummer verwendet werden.
      2. Jeder Wahlvorstand außerhalb der Stadt New York kann ein Petitionssystem für alle Petitionen einführen, das Identifikationsnummern verwendet, wie in Abschnitt 6215.3 vorgesehen. Der Vorstand kann ein solches System durch die Annahme einer Regel mindestens zwei Monate vor dem ersten Tag für die Verbreitung von Petitionen annehmen. Die Regel ist beim Kreiswahlausschuss und beim Landeswahlausschuss einzureichen.
      3. Bei allen anderen Petitionen, die zehn oder mehr Blätter enthalten, wird jedem Petitionsband ein Deckblatt an der Vorderseite dieses Bandes befestigt.

      §6215.2 Deckblätter

      1. Ein Deckblatt muss folgende Angaben enthalten:
        1. Die Amts- und Bezirksnummer (sofern zutreffend), für die jede Benennung und Nominierung vorgenommen wird, den Namen und die Wohnadresse jedes Kandidaten und die Anzahl der Bände, die die Petition enthalten.Die Namen und Adressen der Kandidaten für den Bezirksausschuss können nach Versammlungsbezirk (oder in der Stadt New York nach Wahlbezirk) in einem dem Deckblatt beizufügenden Plan aufgeführt werden. Deckblätter für die Ämter des Bezirksausschusses in der Stadt New York müssen zusätzlich zu diesem Plan eine Liste nach Wahlbezirken der Identifikationsnummern (sofern bekannt) oder der Bandnummer und der Seitenzahl enthalten, auf der diese Unterschriften für jede Wahl erscheinen Kreis.
        2. eine Identifizierung der Bände, aus denen die Petition besteht. Wenn mehrere Bände gemäß Abschnitt 6215.1(e)(1) oder (2) dieser Regeln eingereicht werden, kann ein einzelnes Deckblatt mit Bänden eingereicht werden, die durch Auflisten der Identifikationsnummer jedes Bandes einzeln oder kumulativ und der Gesamtzahl identifiziert werden der Bände in der Petition. In Bezug auf alle anderen Petitionen, die in mehreren Bänden eingereicht werden, muss jeder Band ein Deckblatt haben, auf dem die Bandnummer angegeben ist, diese Bände sind fortlaufend zu nummerieren und das Deckblatt des ersten Bandes muss die Gesamtzahl der Petitionsbände enthalten.
        3. eine Erklärung, dass die Petition die Anzahl oder mehr gültige Unterschriften enthält, die nach dem Wahlgesetz erforderlich sind.
        4. Ein Ort für die optionale Benennung einer anderen Kontaktperson als des/der zu benachrichtigenden Kandidaten, um die Nichteinhaltung dieser Vorschriften zu korrigieren.
        5. Wenn eine Benennungs- oder unabhängige Nominierungspetition das Amt des Gouverneurs, Vizegouverneurs, Generalstaatsanwalt, Staatsrechnungsprüfer, Mitglied des Staatssenats oder Mitglied der Staatsversammlung betrifft, muss das Deckblatt einen Platz für die optionale Benennung der offiziellen Kampagnen-Website enthalten Adressinformationen zur Veröffentlichung auf der Website des Landeswahlausschusses gemäß Wahlgesetz §§ 4–123. Jeder Wahlvorstand, der ein solches Deckblatt oder eine gesonderte schriftliche Benachrichtigung gemäß Abschnitt 6215.9(b) dieses Teils erhält, mit Ausnahme des Landeswahlausschusses, übermittelt eine Kopie dieses Deckblatts oder einer gesonderten schriftlichen Benachrichtigung an den Landeswahlausschuss innerhalb von drei Werktagen nach ihrer Einreichung und diese Website-Adressen werden vom State Board so bald wie möglich auf seiner Website veröffentlicht.

        §6215.3 Identifikationsnummern, Anwendung, Verteilung und Verwendung

        1. Identifikationsnummern werden von den Wahlkommissionen der Bundesstaaten und der Kreise kostenlos zur Identifizierung des Petitionsvolumens vergeben.
        2. Der State Board weist jedem County Board eine Reihe von Identifikationscodes zu.
        3. Jede Person oder Personen können einzeln oder gemeinsam beim Wahlvorstand auf schriftlichen Antrag eine oder mehrere Identifikationsnummern erhalten. Personen, die diese Nummern nicht im Voraus beantragen möchten, werden diese ihren Anträgen bei der Einreichung an den Wahlvorstand gemäß Abschnitt 6215.6 (b) dieser Regeln zugewiesen. Identifikationsnummern dürfen nur innerhalb des Kalenderjahres verwendet werden, für das sie ausgestellt wurden.
        4. Der staatliche Wahlausschuss veröffentlicht ein Antragsformular für eine Identifikationsnummer, das von jedem Wahlausschuss verwendet wird. Der Antrag muss enthalten:
          1. Name und Wohnadresse jedes Antragstellers für die Identifikationsnummer
          2. die Telefonnummern tagsüber und abends für diesen Antragsteller
          3. die Art des unter der Identifikationsnummer einzureichenden Antrags (d. h. Benennung, Nominierung, Gelegenheit zur Abstimmung)
          4. das Datum der Wahl
          5. der Name der Partei oder der unabhängigen Stelle und (6) die Anzahl der angeforderten Identifikationsnummern. Jeder Antrag ist von jedem Antragsteller zu unterschreiben und zu datieren.

          §6215.4 Mehrere Kandidaten in einer Petition genannt

          1. Alle in einem Petitionsband erscheinenden Unterschriften gelten für alle in diesem Band genannten Kandidaten, sofern das Deckblatt nichts anderes bestimmt.
          2. Erscheinen nicht auf jedem Blatt der Petition dieselben Kandidaten, so ist auf dem Deckblatt anzugeben, welche Unterschriften für welchen Kandidaten gelten, indem der Name des Kandidaten, die Identifikationsnummer oder die Nummer des Bandes und die Seitenzahl der entsprechenden Unterschriften. Signaturen auf solchen Seiten können durch spezifizierte Zahlenbereiche identifiziert werden (z. B. Seiten 1 bis 15, Seiten 15-45).

          §6215.5 Einreichung von Petitionen

          1. Weder die Beantragung noch die Erteilung einer Identifikationsnummer gilt als Antragstellung.
          2. Petitionen sind bei der zuständigen Wahlkommission nach Maßgabe des Wahlgesetzes einzureichen. Der Beamte oder Vorstand muss den Tag, die Stunde und die Minute des Eingangs solcher Anträge bestätigen. Dieser Beamte oder Vorstand führt ein öffentlich zugängliches Buch, in das der Name des Kandidaten, die Nummern- oder Identifikationsnummern der eingereichten Petitionen und der Zeitpunkt ihrer Einreichung eingetragen werden.

          §6215.6 Erstellung von Regeln wesentliche Konformität

          1. Sofern nicht ausdrücklich hierin festgelegt, sind diese Regeln großzügig auszulegen und technische Mängel werden nicht berücksichtigt, wenn eine wesentliche Einhaltung erfolgt ist und eine strenge Konstruktion zur Verhinderung von Betrug nicht erforderlich ist.
          2. Das Versäumnis, auf einer oder mehreren Petitionen oder Petitionsbänden eine Identifikationsnummer zu erhalten oder eine Identifikationsnummer einzutragen, macht eine solche Petition oder einen Petitionsband nicht ungültig. Der Beamte oder Vorstand, der eine solche Petition oder einen solchen Petitionsband erhält, weist diesen Petitionen oder Petitionsbänden Identifikationsnummern zu, trägt die Identifikationsnummer in die Petition oder den Band ein und trägt die Identifikationsnummer einer solchen Petition oder eines solchen Bandes auf. In diesen Fällen gelten als Antragsteller für die Identifikationsnummer die Person(en), die die Petition bzw Petition oder Petitionsvolumen gelten als Antragsteller oder Antragsteller.

          §6215.7 Feststellungen heilen gemäß § 6-134 Abs. 2 des Wahlgesetzes

          1. Innerhalb von zwei (2) Werktagen nach Eingang des Antrags prüft der Vorstand, bei dem der Antrag eingereicht wurde, den Antrag, um festzustellen, ob der Antrag dem Deckblatt und den verbindlichen Anforderungen dieser Ordnung entspricht. Diese Überprüfung beschränkt sich auf Dinge, die aus den Dokumenten ersichtlich sind. Eine solche Überprüfung und Feststellung gilt unbeschadet der Feststellung von Einwänden durch den Ausschuss und der Festlegung von Einwänden, die gemäß den Bestimmungen des Wahlgesetzes eingereicht werden.
          2. Für den Fall, dass der Vorstand bei der gemäß Absatz (a) durchgeführten Überprüfung feststellt, dass ein Antrag diesen Vorschriften nicht entspricht, teilt der Vorstand dem oder den auf dem Antrag genannten Kandidaten unverzüglich seine Entscheidung und die Gründe dafür mit .
          3. Die Mitteilung über die Feststellung der Nichterfüllung erfolgt durch schriftliche Mitteilung durch Hinterlegung der Mitteilung am Tag der Feststellung bei einem Nachtzustelldienst, bei Übernachtzustellung am nächsten Werktag oder durch persönliche Übergabe am Tag nach der Feststellung an die Bewerber oder die Kontaktperson, falls angegeben, an die in der Petition angegebene Adresse. Die Benachrichtigung erfolgt nur per Nachtzustellung oder persönlicher Zustellung, es sei denn, der Kandidat hat dem Vorstand eine vom Kandidaten unterzeichnete schriftliche Vollmacht zur Benachrichtigung per Telefax übermittelt. Für den Fall, dass der Kandidat die Zustellung per Telefax autorisiert hat, benachrichtigt der Vorstand den Kandidaten oder die Kontaktperson, sofern benannt, am Tag der Feststellung per Telefax an die vom Kandidaten angegebene Nummer und wird Senden Sie dem Kandidaten zusätzlich eine Kopie der Feststellung.
          4. Ein Kandidat kann innerhalb von drei (3) Werktagen ab dem Datum der Feststellung, dass die Petition diesen Vorschriften nicht entspricht, den Verstoß gegen diese Vorschriften abstellen. Deckblattmängel können durch Einreichung eines geänderten Deckblatts behoben werden. Eine solche Heilung oder Berichtigung muss spätestens am dritten Geschäftstag nach dieser Feststellung beim Wahlvorstand eingehen.
          5. Handelt es sich bei der Petition um eine Möglichkeit zur Stimmabgabe, so gilt die zuerst genannte Person im Ausschuss, die Mitteilungen entgegennimmt, oder der/die Antragsteller für die Identifikationsnummer(n), unter denen die Petition eingereicht wurde, als „Kandidat“ im Sinne der Unterabsätze (b), (c) und (d) oben.

          Wilsons erster Zusammenstoß mit den Disziplinaren der NHL betraf einen Treffer des Brayden Schenn der Flyers am 17. Dezember, als Wilson von der blauen Linie hereinstürmte und Schenn in die Endbretter nivellierte. Wilson wurde ausgeworfen, und das Stück zog eine Telefonanhörung beim DoPS nach sich. Die Liga entschied sich letztendlich gegen eine Suspendierung und veröffentlichte stattdessen ein langatmiges Video, in dem ihre Entscheidung erklärt wird, Wilson zu schonen.

          Dieser Artikel wurde gegenüber seiner ursprünglichen Veröffentlichung aktualisiert, um Wilsons vollständige disziplinarische Informationen wiederzugeben.


          Die Rede wurde ursprünglich 1978 gehalten, mitten in der Carter-Ära, und mit ihrem volkstümlichen Timbre und der Rede von Gott stachen Paul Harveys Worte aus dem Strom von Anzeigen hervor, die im 21. Jahrhundert von anzüglich über lächerlich bis sentimental reichten CBS.

          Dies New York Times Nachruf positioniert Harvey politisch gut und beschreibt die Rolle, die er im amerikanischen Leben spielte:

          In seiner Blütezeit, die von den 1950er bis in die 1990er Jahre dauerte, war Mr. Harveys zweimal täglich ausgestrahlte Seifenkiste eine der beliebtesten Radiosendungen. Das Publikum von bis zu 22 Millionen Menschen lauschte auf 1.300 Sendern einer Stimme, die eine amerikanische Institution war, seit die meisten von ihnen sich erinnern können.

          Wie Walter Winchell und Gabriel Heatter vor ihm personalisiert er die Radionachrichten mit seinen rechten Meinungen, versieht sie aber mit seinen eigenen Markenzeichen: hypnotisches Timbre, ausgedehnte Wirkungspausen, herzerwärmende Geschichten von Durchschnittsamerikanern und volkstümliche Beobachtungen, die evozieren das Landesinnere, Familienwerte und das altmodische Klartext, das man am Sonntag am Esstisch hörte.

          „Hallo, Amerikaner“, bellte er. "Hier ist Paul Harvey! Bereite dich auf Newwws vor!"

          Er wetterte gegen Sozialbetrüger und verteidigte die Todesstrafe. Er machte sich Sorgen über die Staatsverschuldung, die große Regierung, Bürokraten ohne gesunden Menschenverstand, freizügige Eltern, linke Radikale und Amerika, das dem moralischen Verfall erlag. Er setzte sich für den rauen Individualismus, die Liebe zu Gott und zum Land und den grundlegenden Anstand der einfachen Leute ein.

          Hier ist der Text seiner Rede, die während des Super Bowls neu berühmt wurde:

          Und am 8. Tag schaute Gott auf sein geplantes Paradies herab und sagte: "Ich brauche einen Hausmeister." Also hat Gott einen Bauern geschaffen.

          Gott sagte: "Ich brauche jemanden, der bereit ist, vor Sonnenaufgang aufzustehen, Kühe zu melken, den ganzen Tag auf den Feldern zu arbeiten, wieder Kühe zu melken, zu Abend zu essen und dann in die Stadt zu gehen und bis Mitternacht bei einer Sitzung der Schulbehörde zu bleiben." Also hat Gott einen Bauern geschaffen.

          "Ich brauche jemanden mit Armen, die stark genug sind, um ein Kalb zu rascheln, und dennoch sanft genug, um sein eigenes Enkelkind zur Welt zu bringen. Jemanden, der Schweine ruft, stürmische Maschinen zähmt, hungrig nach Hause kommt, mit dem Mittagessen warten muss, bis seine Frau mit dem Füttern von Besuchsdamen fertig ist, und es den Damen erzählen." um sicher zu sein, und komm bald wieder - und es ernst." Also hat Gott einen Bauern geschaffen.

          Gott sagte: „Ich brauche jemanden, der bereit ist, die ganze Nacht mit einem neugeborenen Hengstfohlen zu sitzen. Und zuzusehen, wie es stirbt. Dann trockne seine Augen und sage: ‚Vielleicht nächstes Jahr.' Ich brauche jemanden, der aus einem Kakispross einen Axtstiel formen kann, ein Pferd mit einem Stück Autoreifen beschlagen kann, der aus Drahtgeflecht Geschirr basteln, Säcke und Schuhabfälle füttern kann und der seine Pflanzzeit und Erntezeit beenden kann Vierzig-Stunden-Woche bis Dienstagmittag also, Schmerzen vom 'Traktor-Rücken', weitere zweiundsiebzig Stunden." Also hat Gott einen Bauern geschaffen.

          Gott musste jemanden haben, der bereit war, die Spurrillen mit doppelter Geschwindigkeit zu durchqueren, um das Heu vor den Regenwolken einzubringen und dennoch im Mittelfeld stehen zu bleiben und zu helfen, als er den ersten Rauch von einem Nachbarn sieht. Also hat Gott einen Bauern geschaffen.

          Gott sagte: "Ich brauche jemanden, der stark genug ist, um Bäume zu räumen und Kautionen zu heben, aber sanft genug, um Lämmer und Absetzschweine zu zähmen und die rosa gekämmten Junghennen zu hüten, der seinen Mäher eine Stunde lang anhält, um das gebrochene Bein einer Wiesenlerche zu schienen" Es musste jemand sein, der tief und gerade pflügt und keine Ecken schneidet. Jemand zum Säen, Unkraut, Füttern, Züchten und Rechen und Scheiben und Pflügen und Pflanzen und Binden des Vlieses und Sieben der Milch und Nachfüllen des Selbstfütterers und Beenden Sie die Arbeit einer harten Woche mit einer fünf Meilen langen Fahrt zur Kirche.

          "Jemand, der eine Familie mit den weichen, starken Bindungen des Teilens zusammenballt, der lacht und dann seufzt und dann mit lächelnden Augen antwortet, wenn sein Sohn sagt, er wolle sein Leben damit verbringen, das zu tun, was Papa tut." Also hat Gott einen Bauern geschaffen.

          Seine vollständige Darstellung dieser Bemerkungen vor dem Hintergrund von Bildern, die Landwirte ehren:


          3. Mai 2013 Tag 104 des fünften Jahres - Geschichte

          '[ ]' fortsetzen endif let l:k_v = split(l:g) if l:k_v[0] == ':foreground' let l:gui_color = '' let l:found_gui_color = 0 for l:color in split(l:k_v[1], ',') if l:color =

          '^#' let l:found_gui_color = 1 let l:res_faces = l:res_faces . 'guifg=' . l:color elseif l:color != '' let l:gui_color = l:color let l:res_faces = l:res_faces . 'ctermfg=' . l:Farbe endif endfor if ! l:found_gui_color && l:gui_color != '' let l:res_faces = l:res_faces . 'guifg=' . l:gui_color endif elseif l:k_v[0] == ':background' let l:gui_color = '' let l:found_gui_color = 0 für l:color in split(l:k_v[1], ',') if l :Farbe =

          '^#' let l:found_gui_color = 1 let l:res_faces = l:res_faces . 'guibg=' . l:color elseif l:color != '' let l:gui_color = l:color let l:res_faces = l:res_faces . 'ctermbg=' . l:Farbe endif endfor if ! l:found_gui_color && l:gui_color != '' let l:res_faces = l:res_faces . 'guibg=' . l:gui_color endif elseif l:k_v[0] == ':Gewicht' || l:k_v[0] == ':schräg' || l:k_v[0] == ':decoration' if index(l:style, l:k_v[1]) == -1 call add(l:style, l:k_v[1]) endif endif elseif type(l :g) == 1 " TODO emacs interpretiert die Farbe und bestimmt automatisch " ob sie als Vorder- oder Hintergrundfarbe eingestellt werden soll let l:res_faces = l:res_faces . 'ctermfg=' . l:k_v[1] . 'guifg=' . l:k_v[1] endif endfor endfor let l:s = '' for l:i in l:style if l:s == '' let l:s = l:i else let l:s = l:s . ','. l:i endif endfor if l:s != '' let l:res_faces = l:res_faces . 'Begriff=' . l:s. 'cterm=' . l:s. 'gui=' . l:s endif elseif type(a:faces) == 1 " TODO emacs interpretiert die Farbe und bestimmt automatisch " ob sie als Vordergrund- oder Hintergrundfarbe gesetzt werden soll let l:res_faces = l:res_faces . 'ctermfg=' . a: Gesichter. 'guifg=' . a:faces endif return l:res_faces endfunction Funktion! s:ReadTodoKeywords(keywords, todo_headings) let l:default_group = 'Todo' für l:i in a:keywords if type(l:i) == 3 call s:ReadTodoKeywords(l:i, a:todo_headings) weiter endif if l:i == '|' let l:default_group = 'Frage' continue endif " Zugangsschlüssel entfernen let l:_i = replace(l:i, "(.*$", "", "") let l:group = l:default_group for l: j in g:org_todo_keyword_faces if l:j[0] == l:_i let l:group = 'org_todo_keyword_face_' . l:_i call OrgExtendHighlightingGroup(l:default_group, l:group, OrgInterpretFaces(l:j[1])) break endif endfor exec 'Syntaxübereinstimmung org_todo_keyword_' . l:_i . ' /*<1,>s<1,>zs' . l:_i .'/ ' . a:todo_headings exec 'hi def link org_todo_keyword_' . l:_i . ' ' . l:group endfor endfunction endif call s:ReadTodoKeywords(g:org_todo_keywords, s:todo_headings) unlet! *:PROPERTIES:s*$/ end=/^s*:END:s*$/ enthält=org_property keepend syn match org_property /^s*:[^ :]+:s+ [^ ]/ enthalten enthält=org_property_value syn match org_property_value /:szs.*/ enthalten hi def link org_properties_delimiter PreProc hi def link org_property Statement hi def link org_pro perty_value Konstante " Timestamps " syn match org_timestamp /( )/ " syn match org_timestamp /( )/ " syn match org_timestamp /( )/ " -- syn match org_timestamp /( -- )/ " - - syn match org_timestamp /( -- )/ syn match org_timestamp /( )/ "[2003-09-16 Di] syn match org_timestamp_inactive /([dddd-d d-dd aaa])/ "[2003-09-16 Di 12:00] syn match org_timestamp_inactive /([dddd-dd -dd aaa dd:dd])/ "[2003-09-16 Di]--[2003-09-16 Di] syn match org_timestamp_inactive /( [dddd-dd-dd aaa]--[dddd-dd-dd aaa])/ "[2003-09-16 Di 12:00]--[2003-09-16 Di 12:00] syn match org_timestamp_inactive /([ddd d-dd-dd aaa dd:dd]--[dddd-dd-d d aaa dd:dd])/ syn match org_timestamp_inactive /([%%(diary-float.+])/ hi def link org_timestamp PreProc hi def link org_timestamp_inactive Kommentar " Listen let s:listLeader = "^s*[+*-]s*" exec "syn match org_list_description /".s:listLeader."zs.<-> ze ::/" hi def link org_list_description Identifier " Deadline/Schedule syn match org_deadline_scheduled /^s*(DEADLINE|SCHEDULED):/ hi def link org_deadline_scheduled PreProc " Tables syn match org_table /^s*|.*/ enthält=org_timestamp, org_timestamp_inactive,hyperlink,org_table_separator,org_table_horizontal_line syn match org_table_separator /(^s*|[-+]+|?||)/ enthalten hi def link org_table_separator Typ " Hyperlinks Syntax match hyperlink "[<2 >[^][]*(][[^][]*)?]<2>" enthält=hyperlinkBracketsLeft,hyperlinkURL,hyperlinkBracketsRight enthaltenin=ALL Syntaxübereinstimmung hyperlinkBracketsLeft enthält "[<2 >" Syntax-Übereinstimmung mit Hyperlink-URL verbergen "[^][]*][" Syntax-Übereinstimmung mit HyperlinkBracketsRechte enthalten "]<2>" Hi-Def-Link-Hyperlink verbergen Unterstrichen " Kommentare Syntax-Übereinstimmung mit org_comment /^#.*/ hi def link org_comment Kommentarsyntax/orgtodo.vim [[[1 47 syn match org_todo_key /[zs[^]]*ze]/ hi def link org_todo_key Bezeichner let s:todo_headings = '' let s:i = 1while s:i = 7.3 mit Python-Unterstützung erfüllt." finish endif if ! exist("b:did_ftplugin") " Standard-Emacs-Einstellungen setlocal comments-=s1:/*,mb:*,ex:*/ verbergenlevel=2 verbergencursor=nc tabstop=8 shiftwidth=8 commentstring=# %s " Tastenkombinationen registrieren falls sie noch nicht registriert wurden if exist("g:loaded_org") python ORGMODE.register_keybindings() endif endif " Plugin nur einmal laden if &cp || exist("g:loaded_org") fertig endif let g:loaded_org = 1 " Allgemeine Einstellung Plugins die geladen werden sollen und deren Reihenfolge wenn ! existiert('g:org_plugins') && ! exist('b:org_plugins') let g:org_plugins = ['ShowHide', '|', 'Navigator', 'EditStructure', '|', 'Hyperlinks', '|', 'Todo', 'TagsProperties', 'Datum', 'Agenda', 'Sonstiges', '|','Exportieren'] endif if ! existiert('g:org_syntax_highlight_leading_stars') && ! exist('b:org_syntax_highlight_leading_stars') let g:org_syntax_highlight_leading_stars = 1 endif " Stellen Sie sicher, dass das Repeat-Plugin geladen ist (oder nicht) try call repeat#set() catch endtry function! OrgRegisterMenu() python ORGMODE.register_menu() endfunction function! OrgUnregisterMenu () python ORGMODE.unregister_menu() endfunction function! OrgDeleteUnusedDocument(bufnr) python OrgRegisterMenu() | endif au BufLeave * :if &filetype == "org" | call OrgUnregisterMenu() | endif au BufDelete * :expcall OrgDeleteUn )) augroup END " Erweitern Sie unseren Pfad python :p:h') . '/org.cnf' > " Taglist-Unterstützung für Org-Modus if !exists('g:Tlist_Ctags_Cmd') finish endif " Parameter an Taglist übergeben let g:tlist_org_settings = 'orgs:sectionh:hyperlinks' let g:Tlist_Ctags_Cmd .= ' --options=' . expand(' :p:h') . '/org.cnf ' ftplugin/orgmode/plugins/Agenda.py [[[1 255 # -*- Codierung: utf-8 -*- from datetime import date import os from orgmode import ORGMODE, settings from orgmode import get_bufnumber from orgmode import get_bufname from orgmode import echoe from orgmode.keybinding import Keybinding, Plug from orgmode.menu import Submenu, ActionEntry import vim class Agenda(object): u""" Das Agenda Plugin verwendet liborgmode.agenda um die Agendaansichten anzuzeigen. Die Hauptaufgabe ist es, die Agenda von liborgmode.agenda zu formatieren. Auch alle Mappings: von Agenda zu Todo springen usw. werden hier realisiert. """ def __init__(self): u""" Plugin initialisieren """ object.__init__(self) # Menüeinträge, die dieses Plugin erstellen soll self.menu = ORGMODE.orgmenu + Submenu(u'Agenda') # Tastenzuordnungen für dieses Plugin # Tastenzuordnungen werden auch über das Menü registriert, daher sollten nur zusätzliche # Zuweisungen in diese Variable self eingefügt werden. keybindings = [] # Befehle für dieses Plugin self.commands = [] @classmethod def _switch_to(cls, bufname, v im_commands=None): u""" Wechseln Sie zum Puffer mit bufname. Eine Liste von vim.commands (sofern angegeben) wird ebenfalls ausgeführt. TODO: Dies sollte extrahiert und verbessert werden, um eine einfach zu verwendende Methode zum Erstellen von Puffern / Springen zu Puffern zu erstellen. Ansonsten gibt es im vimorgmode einige Möglichkeiten, Puffer zu öffnen. """ cmds = [u'botright split org:%s' % bufname, u'setlocal buftype=nofile', u'setlocal modifiable', u'setlocal nonumber', # call opendoc() beim Eingeben des ursprünglichen ToDo-Elements u 'nnoremap :exec "py ORGMODE.plugins[u'Agenda'].opendoc()" ', u'nnoremap :exec "py ORGMODE.plugins[u'Agenda'].opendoc(switch=True)" ', u'nnoremap :exec "py ORGMODE.plugins[u'Agenda'].opendoc(split=True)" ', # statusline u'setlocal statusline=Org %s' % bufname ] if vim_commands: cmds .extend(vim_commands) for cmd in cmds: vim.command(cmd.encode(u'utf-8')) @classmethod def _get_agendadocuments(self): u""" Gibt die Org-Dokumente der Agenda-Dateien zurück Tagesordnungspunkte werden definiert. TODO: Vielleicht einen Dekorateur daraus machen? """ # org-Dateien der Agenda laden Agenda_files = settings.get(u'org_agenda_files', u',') if not agenda_files or agenda_files == ',': echoe((u"Keine org_agenda_files definiert. Verwenden Sie :let " u "g:org_agenda_files=['

          /org/index.org'], um " u"Dateien zur Tagesordnungsansicht hinzuzufügen.")) return agenda_files = [os.path.expanduser(f) für f in Agenda_Dateien] für Agenda_Datei in Agenda_Dateien: vim.command((u 'badd %s' % agenda_file).encode(u'utf-8')) # die Puffer-Nr der Agenda-Dateien ermitteln Agenda_nums = [get_bufnumber(fn) für fn in Agenda_files] # alle Dokumente der Agenda-Dateien sammeln und erstellen die Agenda zurück [ORGMODE.get_document(i) für i in der Agenda_nums, wenn i nicht None ist] @classmethod def opendoc(cls, split=False, switch=False): u""" Wenn Sie sich in der Agenda-Ansicht befinden, springen Sie zum Dokument, zu dem das Element in der aktuellen Zeile gehört. Dazu wird cls.line2doc verwendet. :split: Wenn True, öffnet das Dokument in einem neuen geteilten Fenster. :switch: Wenn True, in ein anderes Fenster wechseln und das Dokument dort öffnen. Zeile """, _ = vim.current.window.cursor try: bufname, bufnr, destrow = cls.line2doc[row] außer: return # Quelldatei neu laden, wenn sie nicht geladen ist, wenn get_bufname(bufnr) None: vim. command((u'badd %s' % bufname).encode(u'utf-8')) bufnr = get_bufnumber(bufname) tmp = cls.line2doc[row] cls.line2doc[bufnr] = tmp # delete old endry del cls.line2doc[row] if split: vim.command((u"sbuffer %s" % bufnr).encode(u'utf-8')) elif switch: vim.command(u"wincmd w".encode(u 'utf-8')) vim.command((u"Puffer %d" % bufnr).encode(u'utf-8')) sonst: vim.command((u"Puffer %s" % bufnr).encode (u'utf-8')) vim.command((u"normal! %dgg " % (destrow + 1)).encode(u'utf-8')) @classmethod def list_next_week(cls): agenda_documents = cls ._get_agendadocuments() falls nicht agenda_documents: return raw_agenda = ORGMODE.agenda_manager.get_next_week_and_active_todo(agenda_documents) # Puffer unten erstellen cmd = [u'setlocal filetype=orgagenda', ] cls._switch_to(u'AGENDA', cmd .) ein Dic mit dem Mapping: # Zeile in der Agenda Puffer --> Quelldokument # Auf diese Weise kann man leicht zum richtigen Dokument springen cls.line2doc = <> # Text für die Agenda formatieren last_date = raw_agenda[0].active_date final_agenda = [u'Wochenprogramm:', unicode(last_date) ] for i, h in enumerate(raw_agenda): # Datumsinformationen für jedes neue Datum einfügen (nicht datetime) if unicode(h.active_date)[1:11] != unicode(last_date)[1:11]: today = date .today() # zusätzlichen "TODAY"-String einfügen if h.active_date.year == today.year und h.active_date.month == today.month und h.active_date.day == today.day: section = unicode (h.active_date) + u" TODAY" today_row = len(final_agenda) + 1 else: section = unicode(h.active_date) final_agenda.append(section) # update last_date last_date = h.active_date bufname = os.path.basename( vim.buffers[h.document.bufnr-1].name) bufname = bufname[:-4] if bufname.endswith(u'.org') else bufname formated = u" %(bufname)s (%(bufnr) d) %(todo)s %(title)s" % < 'bufname': bufname, 'bufnr': h.document.bufnr, 'todo': h.todo, 'title': h.tit le >final_agenda.append(formated) cls.line2doc[len(final_agenda)] = (get_bufname(h.document.bufnr), h.document.bufnr, h.start) # Agenda anzeigen vim.current.buffer[:] = [ i.encode(u'utf-8') for i in final_agenda ] vim.command(u'setlocal nomodifizierable verbergenlevel=2 verbergencursor=nc'.encode(u'utf-8')) # versuchen, zur Position zu springen von heute versuchen: vim.command((u'normal! %sgg ' % today_row).encode(u'utf-8')) außer: pass @classmethod def list_all_todos(cls): u""" Listet alle Aufgaben in allen Agendadateien in einem Puffer auf. """ agenda_documents = cls. _get_agendadocuments() falls nicht agenda_documents: return raw_agenda = ORGMODE.agenda_manager.get_todo(agenda_documents) cls.line2doc = <> # Puffer unten erstellen cmd = [u'setlocal filetype=orgagenda'] cls._switch_to(u'AGENDA', cmd ) # Formattext der Agenda final_agenda = [] for i, h in enumerate(raw_agenda): tmp = u"%s %s" % (h.todo, h.title) final_agenda.append(tmp) cls.line2doc[len (final_agenda)] = (get_bufname(h.document.bufnr), h.document.bufnr, h.start) # Agenda anzeigen vim.current.buffer[:] = [ i.encode(u'utf-8') for i in final_agenda ] vim.command(u'setlocal nomodifizierable verbergenlevel=2 verbergencursor=nc'.encode(u'utf-8')) @classmethod def list_timeline(cls): """ Listet eine Zeitachse des aktuellen Puffers auf eine Übersicht über die aktuelle Datei. """ raw_agenda = ORGMODE.agenda_manager.get_timestamped_items( [ORGMODE.get_do cument()]) # Puffer unten erstellen cmd = [u'setlocal filetype=orgagenda'] cls._switch_to(u'AGENDA', cmd) cls.line2doc = <> # Text der Agenda formatieren final_agenda = [] für i, h in enumerate(raw_agenda): tmp = u"%s %s" % (h.todo, h.title) final_agenda.append(tmp) cls.line2doc[len(final_agenda)] = (get_bufname(h.document.bufnr ), h.document.bufnr, h.start) # zeige Agenda vim.current.buffer[:] = [ i.encode(u'utf-8') for i in final_agenda ] vim.command(u'setlocal nomodifiable hidelevel =2 verbergencursor=nc'.encode(u'utf-8')) def register(self): u""" Registrierung des Plugins. Tastenkombinationen und andere Initialisierungen sollten hier durchgeführt werden. """ self.keybindings.append(Keybinding(u' cat', Plug(u'OrgAgendaTodo', u':py ORGMODE.plugins[u"Agenda"].list_all_todos() '))) self.menu + ActionEntry( u'Agenda für alle TODOs', self.keybindings[-1]) self.keybindings.append(Keybinding(u' caa', Plug(u'OrgAgendaWeek', u':py ORGMODE.plugins[u"Agenda"]. list_next_week() '))) self.menu + ActionEntry(u'Agenda für die Woche', self.keybindings[-1]) self.keybindings.append(Keybinding(u' caL', Plug(u'OrgAgendaTimeline', u ':py ORGMODE.plugins[u"Agenda"].list_timeline() '))) self.menu + ActionEntry(u'Zeitleiste für diesen Puffer', self.keybindings[-1]) # vim: set noexpandtab: ftplugin/ orgmode/plugins/Hyperlinks.py [[[1 169 # -*- Coding: utf-8 -*- from orgmode import echom, ORGMODE, realign_tags from orgmode.menu import Submenu, Separator, ActionEntry from orgmode.keybinding import Keybinding, Plug , Befehl import vim import re class Hyperlinks(object): u""" Hyperlinks plugin """ def __init__(self): u""" Plugin initialisieren """ object.__init__(self) # menu de versucht dieses Plugin sollte self.menu = ORGMODE.orgmenu + Submenu(u'Hyperlinks') # Tastenzuordnungen für dieses Plugin erstellen # Tastenzuordnungen werden auch über das Menü registriert, daher sollten nur zusätzliche # Zuweisungen in diese Variable eingefügt werden self.keybindings = [] # Befehle für dieses Plugin self.commands = [] uri_match = re.compile(r'^[<2>(?P [^][]*)(][(?P [^][] *))?]<2>') @classmethod def _get_link(cls, cursor=None): u""" Ruft den Link ab, auf dem sich der Cursor befindet und gibt dessen URI und Beschreibung zurück :cursor: None or (Line, Column) :returns: None wenn kein Link gefunden wurde, sonst oder uri und Beschreibung könnten None sein, wenn nicht gesetzt """ Cursor = Cursor wenn Cursor sonst vim.current.window.cursor line = vim.current.buffer[cursor[0] - 1].decode(u'utf-8' ) # wenn der Cursor in der letzten Klammer steht, wird er nicht als Hyperlink erkannt start = line.rfind(u'[[', 0, cursor[1]) if start == -1: start = line.rfind(u '[[', 0, Cursor[1] + 2) end = line.find(u']]', Cursor[1]) if end == -1: end = line.find(u']]', Cursor[1] - 1) # Link extrahieren wenn start != -1 und end != -1: end += 2 match = Hyperlinks.uri_match.match(line[start:end]) res = if match: res.update(match.groupdict()) return res @classmethod def follow(cls, action=u'openLink', visual=u''): u""" Hyperlink folgen. Bei Aufruf einer regulären Zeichenfolge UTL bestimmt das Ergebnis. Normalerweise wird eine Datei mit diesem Namen geöffnet. :action: "copy", wenn der Link in die Zwischenablage kopiert werden soll, ansonsten wird der Link geöffnet :visual: "visual", wenn Universal Text Linking in visual ausgelöst werden soll mode :returns: URI oder None """ if not int(vim.eval(u'exists(":Utl")')): echom(u'Universal Text Linking Plugin nicht installiert, kann nicht fortgesetzt werden.') Aktion zurückgeben = u'copyLink' if action und action.startswith(u'copy') else u'openLink' visual = u'visual' if visual und visual.startswith(u'visual') else u'' link = Hyperlinks._get_link( ) if link and link[u'uri'] is not None: # call UTL mit der URI vim.command((u'Utl %s %s %s' % (action, visual, link[u'uri']) ).encode(u'utf-8')) return link[u'uri'] else: # UTL aufrufen und entscheiden lassen, was zu tun ist vim.command((u'Utl %s %s' % (action, visual )).enco de(u'utf-8')) @classmethod @realign_tags def insert(cls, uri=None, description=None): u""" Fügt einen Hyperlink ein. Wenn keine Argumente angegeben werden, wird eine interaktive Abfrage gestartet. :uri: Die URI, die geöffnet wird :description: Eine optionale Beschreibung, die anstelle der URI angezeigt wird :returns: (URI, description) """ link = Hyperlinks._get_link() if link: if uri ist None und link [u'uri'] ist nicht None: uri = link[u'uri'] wenn Beschreibung None ist und link[u'description'] nicht None ist: description = link[u'description'] wenn uri None ist: uri = vim.eval(u'input("Link: ", "", "Datei")') elif-Link: uri = vim.eval(u'input("Link: ", "%s", "Datei") ' % link[u'uri']) wenn uri None ist: Rückgabe else: uri = uri.decode(u'utf-8') wenn Beschreibung None ist: description = vim.eval(u'input("Description: " )').decode(u'utf-8') elif link: description = vim.eval(u'input("Beschreibung: ", "%s")' % link[u'beschreibung']).decode(u 'utf-8'), wenn die Beschreibung None ist: return cursor = vim.current.window.cursor cl = vim.current.buffer[cursor[0] - 1].decode(u'utf-8') head = cl[ :cursor[1] + 1] if not link else cl[:link[u'start']] tail = cl[cursor[1] + 1:] if not link else cl[link[u'end']:] Trennzeichen = u'' if description: separator = u'][' if uri or description: vim.current.buffer[cursor[0] - 1] = (u''.join((head, u'[[%s%s%s] ]' % (uri, separator, description), tail))).encode(u'utf-8') elif link: vim.current.buffer[cursor[0] - 1] = (u''.join(( Kopf, Schwanz))).encode(u'utf-8') def register(self): u""" Registrierung des Plugins. Tastenkombinationen und andere Initialisierungen sollten durchgeführt werden. """ self.commands.append(Command(u'OrgHyperlinkFollow', u':py ORGMODE.plugins[u"Hyperlinks"].follow()')) self.keybindings.append(Keybinding(u'gl', Plug (u'OrgHyperlinkFollow', self.commands[-1]))) self.menu + ActionEntry(u'&Follow Link', self.keybindings[-1]) self.commands.append(Command(u'OrgHyperlinkCopy', u ':py ORGMODE.plugins[u"Hyperlinks"].follow(action=u"copy")')) self.keybindings.append(Keybinding(u'gyl', Plug(u'OrgHyperlinkCopy', self.commands[- 1]))) self.menu + ActionEntry(u'&Copy Link', self.keybindings[-1]) self.commands.append(Command(u'OrgHyperlinkInsert', u':py ORGMODE.plugins[u"Hyperlinks" ].insert( )', arguments=u'*')) self.keybindings.append(Keybinding(u'gil', Plug(u'OrgHyperlinkInsert', self.commands[-1]))) self.menu + ActionEntry (u'&Link einfügen', self.keybindings[-1]) self.menu + Separator() # nächsten Link finden self.commands.append(Command(u'OrgHyperlinkNextLink', u":if search('[< 2>zs[^][]*(][[^][]*)?ze]<2>', 's') == 0 | echo 'Kein weiterer Link gefunden .' | endif")) self.keybindings.append(Keybinding(u'gn', Plug(u'OrgHyperlinkNextLink', self.commands[-1]))) self.menu + ActionEntry(u'&Next Link', self.keybindings[-1]) # Vorherigen Link finden self.commands.append(Command(u'OrgHyperlinkPreviousLink', u":if search('[<2>zs[^][]*(][[^][]* )?ze]<2>', 'bs') == 0 | echo 'Kein weiterer Link gefunden.' | endif")) self.keybindings.append(Keybinding(u'go', Plug(u'OrgHyperlinkPreviousLink', self.commands[-1]))) self.menu + ActionEntry(u'&Vorheriger Link', self.keybindings[ -1]) self.menu + Separator() # Beschreibende Links self.commands.append(Command(u'OrgHyperlinkDescriptiveLinks', u':setlocal cole=2')) self.menu + ActionEntry(u'&Beschreibende Links', self .commands[-1]) # Literal Links self.commands.append(Command(u'OrgHyperlinkLiteralLinks', u':setlocal cole=0')) self.menu + ActionEntry(u'&Literal Links', self.commands[- 1]) ftplugin/orgmode/plugins/Misc.py [[[1 170 # -*- Coding: utf-8 -*- from orgmode import ORGMODE, apply_count from orgmode.menu import Submenu from orgmode.keybinding import Keybinding, Plug, MODE_VISUAL, MODE_OPERATOR vim-Klasse importieren Misc(object): u""" Diverse Funktionen """ def __init__(self): u""" Plugin initialisieren """ object.__init__(self) # Menüeinträge dieses Plugin soll selbst erstellen. menu = ORGMODE.orgmenu + Submenu(u'Misc') # Tastenbelegung für dieses Plugin # key Bindungen werden auch über das Menü registriert, daher sollten nur zusätzliche # Bindungen in diese Variable eingefügt werden self.keybindings = [] @classmethod def jump_to_first_character(cls): header = ORGMODE.get_document().current_heading() wenn nicht header: vim.eval (u'feedkeys("^", "n")'.encode(u'utf-8')) return vim.current.window.cursor = (vim.current.window.cursor[0], header.level + 1) @classmethod def edit_at_first_character(cls): header = ORGMODE.get_document().current_heading() wenn nicht header.start_vim != vim.current.window.cursor[0]: vim.eval(u'feedkeys(" I", "n")'.encode(u'utf-8')) return vim.current.window.cursor = (vim.current.window.cursor[0], header.level + 1) vim.command( u'startinsert'.encode(u'utf-8')) #@repeat @classmethod @apply_count def i_heading(cls, mode=u'visual', selection=u'inner', skip_children=False): u""" innere Überschrift Textobjekt """ Überschrift = ORGMODE.get_document().current_heading() if Überschrift: wenn Auswahl != u'inner': Überschrift = Überschrift wenn nicht Überschrift.parent else header.parent line_start, col_start = [ int(i) for i in vim.eval(u'getpos("' ")'.encode(u'utf-8'))[1:3] ] if mode ! = u'visual': line_start = vim.current.window.cursor[0] line_end = line_start start = line_start end = line_end move_one_character_back = u'' if mode == u'visual' else u'h' if header.start_vim line_end and not skip_children: end = header.end_vim elif header.end_of_last_child_vim > line_end und skip_children: end = header.end_of_last_child_vim if mode != u'visual' und nicht vim.current.buffer[end - 1]: end -= 1 move_one_character_back = u'' swap_cursor = u'o' if vim.current.window.cursor[0] == line_start else u'' if selection == u'inner' and vim.current.window.cursor[0] != line_start: h = ORGMODE.get_document().current_heading() if h: header = h visualmode = vim.eval(u'visualmode()').decode(u'utf-8') if mode == u'visual' else u 'v' if line_start == start und line_start != header.start_vim: if col_start in (0, 1): vim.command((u'normal! %dgg0%s%dgg$%s%s' % (start, visualmode, end, move_one_character_back, swap_cursor)).encode(u'utf-8')) else: vim.command((u'normal! %dgg0 %dl%s%dgg$%s%s' % (Start,col_start - 1, visualmode, end, move_one_character_back, swap_cursor)).encode(u'utf-8')) else: vim.command((u'normal! %dgg0%dl%s%dgg$%s%s' % (start, header.level + 1, visualmode, end, move_one_character_back, swap_cursor)).encode(u'utf-8')) if selection == u'inner': if mode == u'visual': return u 'OrgInnerHeadingVisual' if not skip_children else u'OrgInnerTreeVisual' else: return u'OrgInnerHeadingOperator' if not skip_children else u'OrgInnerTreeOperator' else: if mode == u'visual': return u'OrgOuterHeadingVisual' else u'OrgOuterHeadingVisualT else u'OrgOuterHeadingVisualT else u'OrgOuterHeadingVisual' if not'Orgskid else: Rückgabe von u'OrgOuterHeadingOperator' wenn nicht skip_children else u'OrgOuterTreeOperator' elif mode == u'visual': vim.command(u'normal! gv'.encode(u'utf-8')) #@repeat @classmethod @apply_count def a_heading(cls, selection=u'inner', skip_children=False): u""" ein Überschriftstextobjekt """ header = ORGMODE.get_document().current_heading() if header: if selection != u' inner': Überschrift = Überschrift wenn nicht Überschrift.parent else Überschrift.par ent line_start, col_start = [ int(i) for i in vim.eval(u'getpos("' ")'.encode(u'utf-8'))[1:3] ] start = line_start end = line_end if header.start_vim line_end und nicht skip_children: end = header.end_vim elif header.end_of_last_child_vim > line_end und skip_children: end = header.end_of_last_child_vim swap_cursor = u'o' if vim.current.window.cursor[0] == line_start else u '' vim.command((u'normal! %dgg%s%dgg$%s' % (start, vim.eval(u'visualmode()'.encode(u'utf-8')), end, swap_cursor)).encode(u'utf-8 ')) if selection == u'inner': Rückgabe von u'OrgAInnerHeadingVisual' wenn nicht skip_children else u'OrgAInnerTreeVisual' else: Rückgabe von u'OrgAOuterHeadingVisual' wenn nicht skip_children else u'OrgAOuterTreeVisual' else: vim.command(u'normal! gv'.encode(u'utf-8')) def register(self): u""" Registrierung des Plugins. Tastenkombinationen und andere Initialisierungen sollten durchgeführt werden. """ self.keybindings.append(Keybinding(u'^ ', Plug(u'OrgJumpToFirstCharacter', u':py ORGMODE.plugins[u"Misc"].jump_to_first_character() '))) self.keybindings.append(Keybinding(u'I', Plug(u'OrgEditAtFirstCharacter', u':py ORGMODE.plugins[u"Misc"].edit_at_first_character() '))) self.keybindings.append(Keybinding(u'ih', Plug(u'OrgInnerHeadingVisual', u': py ORGMODE.plugins[u "Misc"].i_heading() ', mode=MODE_VISUAL))) self.keybindings.append(Keybinding(u'ah', Plug(u'OrgAInnerHeadingVisual', u': py ORGMODE.plugins[u"Misc"]. a_heading() ', mode=M ODE_VISUAL))) self.keybindings.append(Keybinding(u'Oh', Plug(u'OrgOuterHeadingVisual', u': py ORGMODE.plugins[u"Misc"].i_heading(selection=u"outer") ', mode =MODE_VISUAL))) self.keybindings.append(Keybinding(u'OH', Plug(u'OrgAOuterHeadingVisual', u': py ORGMODE.plugins[u"Misc"].a_heading(selection=u"outer") ', mode=MODE_VISUAL))) self.keybindings.append(Keybinding(u'ih', Plug(u'OrgInnerHeadingOperator', u': py ORGMODE.plugins[u"Misc"].i_heading(mode=u"operator") ' , mode=MODE_OPERATOR))) self.keybindings.append(Keybinding(u'ah', u':normal Vah ', mode=MODE_OPERATOR)) self.keybindings.append(Keybinding(u'Oh', Plug(u'OrgOuterHeadingOperator ', ': py ORGMODE.plugins[u"Misc"].i_heading(mode=u"operator", selection=u"outer") ', mode=MODE_OPERATOR))) self.keybindings.append(Keybinding(u'OH ', u':normal VOH ', mode=MODE_OPERATOR)) self.keybindings.append(Keybinding(u'ir', Plug(u'OrgInnerTreeVisual', u': py ORGMODE.plugins[u"Misc"].i_heading( skip_children=True) ', mode=MODE_VISUAL))) self.keybinding s.append(Keybinding(u'ar', Plug(u'OrgAInnerTreeVisual', u': py ORGMODE.plugins[u"Misc"].a_heading(skip_children=True) ', mode=MODE_VISUAL))) self.keybindings. append(Keybinding(u'Or', Plug(u'OrgOuterTreeVisual', u' py ORGMODE.plugins[u"Misc"].i_heading(selection=u"outer", skip_children=True) ', mode=MODE_VISUAL))) self.keybindings.append(Keybinding(u'OR', Plug(u'OrgAOuterTreeVisual', u': py ORGMODE.plugins[u"Misc"].a_heading(selection=u"outer", skip_children=True) ', mode =MODE_VISUAL))) self.keybindings.append(Keybinding(u'ir', Plug(u'OrgInnerTreeOperator', u': py ORGMODE.plugins[u"Misc"].i_heading(mode=u"operator") ', mode=MODE_OPERATOR))) self.keybindings.append(Keybinding(u'ar', u':normal Var ', mode=MODE_OPERATOR)) self.keybindings.append(Keybinding(u'Or', Plug(u'OrgOuterTreeOperator' , u': py ORGMODE.plugins[u"Misc"].i_heading(mode=u"operator", selection=u"outer", skip_children=True) ', mode=MODE_OPERATOR))) self.keybindings.append(Keybinding (u'OR', u':normaler VOR ', mode=MODE_OPERAT ODER)) ftplugin/orgmode/plugins/__init__.py [[[1 1 # -*- Kodierung: utf-8 -*- ftplugin/orgmode/plugins/Navigator.py [[[1 313 # -*- Kodierung: utf -8 -*- from orgmode import echo, ORGMODE, apply_count from orgmode.menu import Submenu, ActionEntry from orgmode.keybinding import Keybinding, MODE_VISUAL, MODE_OPERATOR, Plug from orgmode.liborgmode.documents import Direction import vim class Navigator(object): u """ Navigation in Org-Mode-Dokumenten implementieren """ def __init__(self): object.__init__(self) self.menu = ORGMODE.orgmenu + Submenu(u'&Navigate Headings') self.keybindings = [] @classmethod @ apply_count def parent(cls, mode): u""" Fokus übergeordnete Überschrift :liefert: übergeordnete Überschrift oder Keine """ Überschrift = ORGMODE.get_document().current_heading() wenn nicht Überschrift: if mode == u'visual': vim.command(u'normal! gv'.encode(u'utf-8')) else: echo(u'Keine Überschrift gefunden') return if not header.parent: if mode == u'visual': vim.command(u'normal! gv' .encode(u'utf-8')) else: echo(u'Keine übergeordnete Überschrift gefunden') return p = Überschrift.Überschrift if mode == u'visual': cls._change_visual_selection(Überschrift, p, Richtung=Richtung. BACKWARD, parent=True) else: vim.current.window.cursor = (p.start_vim, p.level + 1) return p @classmethod @apply_count def parent_next_sibling(cls, mode): u""" Fokus auf das nächste Geschwister des Elternteils :returns: Überschrift der nächsten Geschwister des Elternteils oder Keine """ Überschrift = ORGMODE.get_document().current_heading() wenn keine Überschrift: if mode == u'visual': vim.command(u'normal! gv'.encode(u 'utf-8')) else: echo(u'Keine Überschrift gefunden') return if notüberschrift.parent oder nichtüberschrift.parent.next_sibling: if mode == u'visual': vim.command(u'normal! gv '.encode(u'utf-8')) else: echo(u'Keine übergeordnete Überschrift gefunden') return ns = header.parent.next_sibling if mode == u'visual': cls._change_visual_selection(heading, ns, direction =Richtung .FORWARD, parent=False) elif mode == u'operator': vim.current.window.cursor = (ns.start_vim, 0) else: vim.current.window.cursor = (ns.start_vim, ns.level + 1) return ns @classmethod def _change_visual_selection(cls, current_heading, header, direction=Direction.FORWARD, noheadingfound=False, parent=False): current = vim.current.window.cursor[0] line_start, col_start = [ int(i ) für i in vim.eval(u'getpos("'")'.encode(u'utf-8'))[1:3] ] f_start = header.start_vim f_end = header.end_vim swap_cursor = True # > if current == line_start: if (direction == Direction.FORWARD und line_end > # > if f_start > # Fokusüberschrift HERE else: if direction == Direction.FORWARD: if line_end > else: # Fokusüberschrift HIER # > if line_start > f_start und line_end > f_end und nicht parent: line_end = f_end swap_cursor = Falsch elif (line_start > f_start oder line_start == f_start) und line_end > # > # > # Fokusüberschrift HIER else: if direction == Direction.FORWARD: if line_end 0 und (col_start - 1) 0 und (col_en d - 1) ")'.encode(u'utf-8'))[1:3] ] if line_start >= header.start_vim and line_end > header.start_vim: focus_heading = header else: focus_heading = header # bisher nein Es wurde festgestellt, dass der nächste Fokus darauf liegen sollte, wenn nicht focus_heading: wenn nicht skip_children und Richtung == Direction.FORWARD und header.children: focus_heading = header.children[0] elif Direction == Direction.FORWARD und header.next_sibling: focus_heading = header.next_sibling elif Direction == Direction.BACKWARD und header.vorher_sibling: focus_heading = header.vorher_sibling wenn nicht skip_children: while focus_heading.children: focus_heading = focus_heading.children[-1] else: if direction == Direction.FORWARD: focus_heading = current_heading.next_heading else: focus_heading = current_heading.vorherige_heading noheadingfound = False if not focus_heading: if mode in (u'visual', u'operator'): # der Cursor scheint sich auf der letzten oder ersten Überschrift dieses # Dokuments zu befinden und führt eine weitere nächste/vorherige Ope aus ration focus_heading = Überschrift noheadingfound = True else: if direction == Direction.FORWARD: echo(u'Bereits Fokussierung auf letzte Überschrift') else: echo(u'Bereits Fokussierung auf erste Überschrift') return if mode == u'visual': cls ._change_visual_selection(current_heading, focus_heading, direction=direction, noheadingfound=noheadingfound) elif mode == u'operator': if direction == Direction.FORWARD und vim.current.window.cursor[0] >= focus_heading.start_vim: vim. current.window.cursor = (focus_heading.end_vim, len(vim.current.buffer[focus_heading.end].decode(u'utf-8'))) else: vim.current.window.cursor = (focus_heading.start_vim, 0) else: vim.current.window.cursor = (focus_heading.start_vim, focus_heading.level + 1) if noheadingfound: Rückgabe zurück focus_heading @classmethod @apply_count def previous(cls, mode, skip_children=False): u""" Focus vorherige Überschrift """ return cls._focus_heading(mode, direction=Direction.BACKWARD, skip_children=skip_children) @classmethod @apply_count def next(cls, mode, skip_ch ildren=False): u""" Fokus nächste Überschrift """ return cls._focus_heading(mode, direction=Direction.FORWARD, skip_children=skip_children) def register(self): # normal mode self.keybindings.append(Keybinding(u 'g<', Plug('OrgJumpToParentNormal', u':py ORGMODE.plugins[u"Navigator"].parent(mode=u"normal") '))) self.menu + ActionEntry(u'&Up', self .keybindings[-1]) self.keybindings.append(Keybinding(u'g>', Plug('OrgJumpToParentsSiblingNormal', u':py ORGMODE.plugins[u"Navigator"].parent_next_sibling(mode=u"normal") '))) self.menu + ActionEntry(u'&Down', self.keybindings[-1]) self.keybindings.append(Keybinding(u'<', Plug(u'OrgJumpToPreviousNormal', u':py ORGMODE.plugins [u"Navigator"]. previous(mode=u"normal") '))) self.menu + ActionEntry(u'&Previous', self.keybindings[-1]) self.keybindings.append(Keybinding(u'> ', Plug(u'OrgJumpToNextNormal', u':py ORGMODE.plugins[u"Navigator"].next(mode=u"normal") '))) self.menu + ActionEntry(u'&Next', self.keybindings [-1]) # visueller Modus self.keybindings.append(Keyb inding(u'g<', Plug(u'OrgJumpToParentVisual', u' : py ORGMODE.plugins[u"Navigator"].parent(mode=u"visual") ', mode=MODE_VISUAL))) self.keybindings. append(Keybinding(u'g>', Plug('OrgJumpToParentsSiblingVisual', u' : py ORGMODE.plugins[u"Navigator"].parent_next_sibling(mode=u"visual") ', mode=MODE_VISUAL))) self.keybindings .append(Keybinding(u'<', Plug(u'OrgJumpToPreviousVisual', u' : py ORGMODE.plugins[u"Navigator"].vorherige(mode=u"visual") ', mode=MODE_VISUAL))) self. keybindings.append(Keybinding(u'>', Plug(u'OrgJumpToNextVisual', u' : py ORGMODE.plugins[u"Navigator"].next(mode=u"visual") ', mode=MODE_VISUAL))) # Operator-pending mode self.keybindings.append(Keybinding(u'g<', Plug(u'OrgJumpToParentOperator', u': py ORGMODE.plugins[u"Navigator"].parent(mode=u"operator") ', mode=MODE_OPERATOR))) self.keybindings.append(Keybinding(u'g>', Plug('OrgJumpToParentsSiblingOperator', u': py ORGMODE.plugins[u"Navigator"].parent_next_sibling(mode=u"operator") ' , mode=MODE_OPERATOR))) self.keybindin gs.append(Keybinding(u'<', Plug(u'OrgJumpToPreviousOperator', u': py ORGMODE.plugins[u"Navigator"]. previous(mode=u"operator") ', mode=MODE_OPERATOR))) self .keybindings.append(Keybinding(u'>', Plug(u'OrgJumpToNextOperator', u': py ORGMODE.plugins[u"Navigator"].next(mode=u"operator") ', mode=MODE_OPERATOR))) # abschnittsweise Bewegung (Kinder überspringen) # normaler Modus self.keybindings.append(Keybinding(u'[[', Plug(u'OrgJumpToPreviousSkipChildrenNormal', u':py ORGMODE.plugins[u"Navigator"].vorherige(mode= u"normal", skip_children=True) '))) self.menu + ActionEntry(u'Ne&xt Same Level', self.keybindings[-1]) self.keybindings.append(Keybinding(u']]', Plug( u'OrgJumpToNextSkipChildrenNormal', u':py ORGMODE.plugins[u"Navigator"].next(mode=u"normal", skip_children=True) '))) self.menu + ActionEntry(u'Pre&vious Same Level', self .keybindings[-1]) # visueller Modus self.keybindings.append(Keybinding(u'[[', Plug(u'OrgJumpToPreviousSkipChildrenVisual', u' : py ORGMODE.plugins[u"Navigator"].vorherige(mode=u "visuell" , skip_children=True) ', mode=MODE_VISUAL))) self.keybindings.append(Keybinding(u']]', Plug(u'OrgJumpToNextSkipChildrenVisual', u' : py ORGMODE.plugins[u"Navigator"].next( mode=u"visual", skip_children=True) ', mode=MODE_VISUAL))) # Operator-ausstehender Modus self.keybindings.append(Keybinding(u'[[', Plug(u'OrgJumpToPreviousSkipChildrenOperator', u': py ORGMODE .plugins[u"Navigator"]. previous(mode=u"operator", skip_children=True) ', mode=MODE_OPERATOR))) self.keybindings.append(Keybinding(u']]', Plug(u'OrgJumpToNextSkipChildrenOperator' , u': py ORGMODE.plugins[u"Navigator"].next(mode=u"operator", skip_children=True) ', mode=MODE_OPERATOR))) ftplugin/orgmode/plugins/LoggingWork.py [[[1 40 # -*- Codierung: utf-8 -*- from orgmode import echo, echom, echoe, ORGMODE, apply_count, repeat from orgmode.menu import Submenu, Separator, ActionEntry from orgmode.keybinding import Keybinding, Plug, Command import vim class LoggingWork (Objekt): u""" LoggingWork-Plugin """ def __init__(self): u""" Initialisieren p lugin """ object.__init__(self) # Menüeinträge, die dieses Plugin erstellen soll self.menu = ORGMODE.orgmenu + Submenu(u'&Logging work') # Tastenkombinationen für dieses Plugin # Tastenkombinationen werden auch über das Menü registriert, also nur zusätzliche # Bindungen sollten in diese Variable eingefügt werden self.keybindings = [] # Befehle für dieses Plugin self.commands = [] @classmethod def action(cls): u""" Eine Art von Aktion :returns: TODO """ pass def register(self): u""" Registrierung des Plugins. Tastenkombinationen und andere Initialisierungen sollten durchgeführt werden. """ # ein Aktionsmenüeintrag, der "keybinding" an die Aktion ":action" bindet self.commands.append(Command(u'OrgLoggingRecordDoneTime', u':py ORGMODE.plugins[u"LoggingWork"].action()' )) self.menu + ActionEntry(u'&Record DONE time', self.commands[-1]) ftplugin/orgmode/plugins/Todo.py [[[1 345 # -*- Kodierung: utf-8 -*- from orgmode import echom, ORGMODE, apply_count, repeat, realign_tags, settings from orgmode.liborgmode.base import Direction from orgmode.menu import Submenu, ActionEntry from orgmode.keybinding import Keybinding, Plug import vim # Temporäre todo-Zustände für verschiedene orgmode-Puffer ORGTODOSTATES = < > def split_access_key(t): u""" :t: todo state :return: todo state und access key getrennt (TODO, ACCESS_KEY) """ if type(t) != unicode: return (None, None) idx = t.find(u'(') v, k = ((t[:idx], t[idx + 1:-1]) if t[idx + 1:-1] else (t, None)) if idx != -1 else (t, None) return (v, k) class Todo(object): u""" Todo-Plugin. Beschreibung von orgmode.org: Sie können TODO-Schlüsselwörter verwenden t o verschiedene sequentielle Zustände während der Bearbeitung eines Elements angeben, zum Beispiel: ["TODO", "FEEDBACK", "VERIFY", "|", "DONE", "DELEGATED"] Der vertikale Balken trennt die TODO-Schlüsselwörter ( Zustände, die eine Aktion erfordern) von den DONE-Zuständen (die keine weiteren Aktionen erfordern). Wenn Sie keinen Trennstrich angeben, wird der letzte Status als DONE-Status verwendet. Bei diesem Setup führt der Befehl ``,d`` einen Eintrag von TODO zu FEEDBACK, dann zu VERIFY und schließlich zu DONE und DELEGATED. """ def __init__(self): u""" Plugin initialisieren """ object.__init__(self) # Menüeinträge, die dieses Plugin erstellen soll self.menu = ORGMODE.orgmenu + Submenu(u'&TODO Lists') # Tastenbelegung für dieses Plugin werden # Tastenzuordnungen auch über das Menü registriert, daher sollten nur zusätzliche # Zuweisungen in diese Variable eingefügt werden self.keybindings = [] @classmethod def _get_next_state(cls, current_state, all_states, direction=Direction.FORWARD, interactive=False, next_set=False): u""" :current_state: der aktuelle todo-Zustand :all_states: eine Liste mit allen todo-States innerhalb von Unterlisten. Die Todo-Zustände können Zugriffsschlüssel enthalten :direction: Richtung des Zustands oder Schlüsselwortsatzwechsel (vorwärts/rückwärts) :interaktiv: wenn interaktiv und mehr als eine Todo-Sequenz angegeben ist, öffnen Sie ein Auswahlfenster :next_set: Weiter zum nächsten Schlüsselwortsatz in definierte Richtung :return: Gibt den nächsten Zustand als String zurück, oder NONE, wenn der nächste Zustand kein Zustand ist.""" if not all_states: return def find_current_todo_state(c, a, stop=0): u""" :c: aktueller Todo-Zustand :a: Liste der Todo-Zustände :stop: interner Parameter zum Parsen von nur zwei Ebenen von Listen : return: erste Position des todo-Zustands in der Liste in der Form (IDX_TOPLEVEL, IDX_SECOND_LEVEL (0|1), IDX_OF_ITEM) """ für i in xrange(0, len(a)): if type(a[i]) in ( tuple, list) und stop = 0: echom(u'Schlüsselwortgruppe: %s | %s' % (u', '.join(all_states[ci[0] - 1][0]), u', '. join(all_states[ci[0] - 1][1]))) return split_access_key(all_states[ci[0] - 1][0][0] if all_states[ci[0] - 1][0] else all_states[ci[0] - 1][1][0])[0] else: echom(u'Bereits beim %s Schlüsselwortsatz' % (u'first' if direction == Direction.BACKWARD else u'last ')) return current_state else: next_pos = ci[2] + 1 if direction == Direction.FORWARD else ci[2] - 1 if direction == Direction.FORWARD: if next_pos = 0: # Vorherigen Zustand innerhalb von done oder todo auswählen Zustände geben split_access_key(all_states[ci[0]][ci[1]][next_pos])[0] elif ci[1] und len(all_sta tes[ci[0]][ci[1] - 1]) + next_pos header.level: if current_state ist nicht None und colno :if ! exist("g:org_sav_timeoutlen")|let g:org_sav_timeoutlen=&timeoutlen|set timeoutlen=1|endif'.encode(u'utf-8')) vim.command(u'au orgmode BufLeave :if exist("g: org_sav_timeoutlen")|let &timeoutlen=g:org_sav_timeoutlen|unlet g:org_sav_timeoutlen|endif'.encode(u'utf-8')) # Fenster zu einem Scratch-Fenster machen und die Statuszeile anders setzen vim.command(u'setlocal tabstop=16 buftype=nofile timeout timeoutlen=1 winfixheight'.encode(u'utf-8')) vim.command((u'setlocal statusline=Org todo (%s)' % vim.eval((u'fnameescape (fnamemodify(bufname(%d), ":t"))' % bufnr).encode(u'utf-8'))).encode(u'utf-8')) vim.command((u'nnoremap :%sbw ' % (vim.eval(u'bufnr("%")'.encode(u'utf-8')), )).encode(u'utf-8')) vim.command(u' nnoremap :let g:org_state = fnameescape(expand(" ")) bw exec "py ORGMODE.plugins[u'Todo'].set_todo_state('".g:org_state."')" unlet! g: org_state '.encode(u'utf-8')) wenn all_states None ist: vim.command(u'bw'.encode(u'utf-8')) echom(u'Keine Todo-Zustände für Puffer %s verfügbar' % vim.current.buffe r.name) für l in xrange(0, len(all_states)): res = u'' did_done = False für j in xrange(0, 2): if j %s :bw py ORGMODE.plugins[u"Todo" ].set_todo_state("%s".decode(u"utf-8")) ' % (k, v)).encode(u'utf-8') ) elif v: res += (u' ' if res else u'') + v if res: if l == 0: # ABHILFE: Der Cursor kann nicht richtig auf # der ersten Zeile positioniert werden. Eine weitere Zeile wird gerade eingefügt und # funktioniert super vim.current.buffer[0] = u''.encode(u'utf-8') vim.current.buffer.append(res.encode(u'utf-8' )) # den Cursor des aktuellen To-Do-Elements positionieren vim.command(u'normal! G'.encode(u'utf-8')) current_state = settings.unset(u'org_current_state_%d' % bufnr) found = False if current_state ist nicht None und current_state != '': for i in xrange(0, len(vim.current.buffer)): idx = vim.current.buffer[i].find(current_state) if idx != -1 : vim.current.window.cursor = (i + 1, idx) found = True Break, wenn nicht gefunden: vim.current.window.cursor = (2, 4) # endlich Buffer nicht modifizierbar machen vim.command(u'setfiletype orgtodo'.encode(u'utf-8')) vim.command(u'setlocal nomodifiable'.encode(u'utf-8')) # temporäre Todo-Zustände für den aktuellen Puffer entfernen del ORGTODOSTATES[bufnr] def register( self): u""" Registrierung des Plugins. Tastenzuordnungen und andere Initialisierungen sollten durchgeführt werden. """ self.keybindings.append(Keybinding(u' ct', Plug( u'OrgTodoToggle', u':py ORGMODE.plugin s[u"Todo"].toggle_todo_state(interactive=False) '))) self.menu + ActionEntry(u'&TODO/DONE/-', self.keybindings[-1]) self.keybindings.append(Keybinding(u ' d', Plug( u'OrgTodoToggleInteractive', u':py ORGMODE.plugins[u"Todo"].toggle_todo_state(interactive=True) '))) self.menu + ActionEntry(u'&TODO/DONE/- (interaktiv )', self.keybindings[-1]) # submenu hinzufügen submenu = self.menu + Submenu(u'Select &keyword') self.keybindings.append(Keybinding(u' ', Plug( u'OrgTodoForward', u': py ORGMODE.plugins[u"Todo"].toggle_todo_state() '))) Untermenü + ActionEntry(u'&Next keyword', self.keybindings[-1]) self.keybindings.append(Keybinding(u' ', Plug( u'OrgTodoBackward', u':py ORGMODE.plugins[u"Todo"].toggle_todo_state(direction=2) '))) Untermenü + ActionEntry(u'&Vorheriges Schlüsselwort', self.keybindings[-1]) self.keybindings .append(Keybinding(u' ', Plug( u'OrgTodoSetForward', u':py ORGMODE.plugins[u"Todo"].toggle_todo_state(next_set=True) '))) Untermenü + ActionEntry(u'Nächstes Schlüsselwort &set' , self.keybindings[-1]) self.ke ybindings.append(Keybinding(u' ', Plug( u'OrgTodoSetBackward', u':py ORGMODE.plugins[u"Todo"].toggle_todo_state(direction=2, next_set=True) '))) Untermenü + ActionEntry(u 'Vorheriger &Keyword-Satz', self.keybindings[-1]) settings.set(u'org_todo_keywords', [u'TODO'.encode(u'utf-8'), u'|'.encode(u'utf- 8'), u'DONE'.encode(u'utf-8')]) settings.set(u'org_todo_prompt_position', u'botright') vim.command(u'au orgmode BufReadCmd org:todo/* :py ORGMODE.plugins[u"Todo"].init_org_todo()'.encode(u'utf-8')) # vim: set noexpandtab: ftplugin/orgmode/plugins/ShowHide.py [[[1 125 # -*- Kodierung : utf-8 -*- aus orgmode importiere Einstellungen aus orgmode importiere ORGMODE, apply_count aus orgmode.menu import Submenu, ActionEntry from orgmode.keybinding import Keybinding, Plug, MODE_NORMAL import vim class ShowHide(object): u""" Show Hide plugin """ def __init__(self): u""" Plugin initialisieren """ object.__init__(self) # Menüeinträge, die dieses Plugin erstellen soll self.menu = ORGMODE.orgmenu + Submenu(u'&Show Hide') # key bindin gs für dieses Plugin # Tastenzuordnungen werden auch über das Menü registriert, daher sollten nur zusätzliche # Zuweisungen in diese Variable eingefügt werden self.keybindings = [] @classmethod @apply_count def toggle_folding(cls, reverse=False): u""" Togglefolding ähnlich wie bei orgmode Dies ist nur eine praktische Funktion, zögern Sie nicht, die z*-Tastenkombinationen zu verwenden, die vim bietet, um mit dem Falten fertig zu werden! :reverse: Wenn False Open Folding um eine Ebene, ansonsten um eine Ebene schließen. """ d = ORGMODE.get_document() Überschrift = d.current_heading() wenn nicht Überschrift: vim.eval(u'feedkeys(" ", "n")'.encode(u'utf-8')) return cursor = vim.current.window.cursor[:] if int(vim.eval((u'foldclosed(%d)' % header.start_vim).encode(u'utf-8'))) != -1: if not reverse: # open closed fold p = header.number_of_parents if not p: p = header.level vim.command((u'normal! %dzo' % p).encode(u'utf-8')) else: # Rückwärtsfalten öffnet alle Falten unter dem Cursor vim.command((u'%d,%dfoldopen!' % (heading.start_vim, header.end_of_last_child_vim)).encode(u'utf-8')) vim.current.window. Cursor = Cursor Return Überschrift def fold_depth(h): if int(vim.eval((u'foldclosed(%d)' % h.start_vim).encode(u'utf-8'))) != -1: return (h.number_of_parents, True) else: res = [h.number_of_parents + 1] found = False für c in h.children: d, f = fold_depth(c) res.append(d) gefunden |= f return (max( res), gefunden) def open_fold(h): if h.number_of_parents = open_depth - 1 and int(vim.eval((u'foldclosed(%d)' % h.start_vim).encode( u'utf-8'))) == -1: vim.command((u'normal! %dggzc' % (h.start_vim, )).encode(u'utf-8')) # tiefste Falte finden open_depth, found_fold = fold_depth(heading) wenn nicht umgekehrt: # Falten rekursiv öffnen if found_fold: für Kind in der Überschrift. children: open_fold(child) else: vim.command((u'%d,%dfoldclose!' % (heading.start_vim, header.end_of_last_child_vim)).encode(u'utf-8')) if header.number_of_parents: # Cursorposition wiederherstellen, könnte durch open_fold geändert worden sein vim.current.window.cursor = Cursor p = header.number_of_parents wenn nicht p: p = header.level # Fold wieder öffnen, da das vorherige Schließen des Folds alle Ebenen geschlossen hat, einschließlich Eltern! vim.command((u'normal! %dzo' % (p, )).encode(u'utf-8')) else: # letzte Faltebene schließen close_fold(heading) # Cursorposition wiederherstellen vim.current. window.cursor = Cursor Return Heading def register(self): u""" Registrierung des Plugins. Tastenkombinationen und andere Initialisierungen sollten durchgeführt werden. """ # register plug self.keybindings.append(Keybinding(u' ', Plug( u'OrgToggleFoldingNormal', u':py ORGMODE.plugins[u"ShowHide"].toggle_folding() '))) self.menu + ActionEntry(u'&Cycle Visibility', self.keybindings[-1]) self.keybindings. append(Keybinding(u' ', Plug(u'OrgToggleFoldingReverse', u':py ORGMODE.plugins[u"ShowHide"].toggle_folding(reverse=True) '))) self.menu + ActionEntry(u'Cycle Visibility &Reverse ', self.keybindings[-1]) self.keybindings.append(Keybinding(u' ,', u'zr', mode=MODE_NORMAL)) self.keybindings.append(Keybinding(u' .', u'zm' , mode=MODE_NORMAL)) für i in xrange(0, 10): self.keybindings.append(Keybinding(u' %d' % (i, ), u'zM:set fdl=%d ' % i, mode= MODE_NORMAL)) ftplugin/orgmode/ plugins/TagsProperties.py [[[1 155 # -*- Kodierung: utf-8 -*- from orgmode import ORGMODE, repeat from orgmode.menu import Submenu, ActionEntry from orgmode.keybinding import Keybinding, Plug, Command from orgmode import settings import vim class TagsProperties(object): u""" TagsProperties plugin """ def __init__(self): u""" Plugin initialisieren """ object.__init__(self) # Menüeinträge dieses Plugin soll self.menu = ORGMODE .orgmenu + Submenu(u'&TAGS and Properties') # Tastenkombinationen für dieses Plugin # Tastenkombinationen werden auch über das Menü registriert, daher sollten nur zusätzliche # Tastenkombinationen in diese Variable eingefügt werden self.keybindings = [] # Befehle für dieses Plugin self .commands = [] @classmethod def complete_tags(cls): u""" Erstellen Sie eine Liste von Tags und speichern Sie sie in der Variablen b:org_tag_completion """ d = ORGMODE.get_document() header = d.current_heading() wenn nicht header : return Leading_portion = vim.eval(u'a:ArgLead').decode(u'utf-8') cursor = int(vim.eval(u'a:CursorPos')) # Extraktion aktuell abgeschlossen ted tag idx_orig = führende_portion.rfind(u':', 0, Cursor) if idx_orig == -1: idx = 0 else: idx = idx_orig current_tag = führende_portion[idx: Cursor].lstrip(u':') head = Leading_portion[:idx + 1] if idx_orig == -1: head = u'' tail = Leading_portion[cursor:] # alle Tags der aktuellen Datei extrahieren all_tags = set() for h in d.all_headings(): for t in h.tags: all_tags.add(t) ignorecase = bool(int(settings.get(u'org_tag_completion_ignorecase', int(vim.eval(u'&ignorecase'))))) possible_tags = [] current_tags = header.tags for t in all_tags: if ignorecase: if t.lower().startswith(current_tag.lower()): Possible_tags.append(t) elif t.startswith(current_tag): Possible_tags.append(t) vim.command((u 'let b:org_complete_tags = [%s]' % u', '.join([u'"%s%s:%s"' % (head, i, tail) for i in possible_tags])).encode( u'utf-8')) @classmethod @repeat def set_tags(cls): u""" Tags für die aktuelle Überschrift setzen """ d = ORGMODE.get_document() header = d.current_heading() wenn keine Überschrift: return # Tags abrufen res = Nein ne if header.tags: res = vim.eval(u'input("Tags: ", ":%s:", "customlist,Org_complete_tags")' % u':'.join(heading.tags)) else: res = vim.eval(u'input("Tags: ", "", "customlist,Org_complete_tags")') if res ist None: # Benutzer hat gedrückt jede weitere Verarbeitung abbrechen return # leere Tags entfernen header.tags = filter(lambda x: x.strip() != u'', res.decode(u'utf-8').strip().strip(u':').split(u':')) d.write() return u'OrgSetTags' @classmethod def realign_tags(cls): u""" Aktualisiert Tags, wenn der Benutzer mit der Bearbeitung einer Überschrift fertig ist """ d = ORGMODE.get_document(allow_dirty=True) header = d.find_current_heading() wenn keine Überschrift: return if vim.current.window.cursor[0] == header.start_vim: header.set_dirty_heading() d.write_heading(heading, include_children=False) @classmethod def realign_all_tags(cls): u""" Aktualisiert Tags, wenn der Benutzer die Bearbeitung beendet a Überschrift """ d = ORGMODE.get_document() für Überschrift in d.all_headings(): header.set_dirty_heading() d.write() def register(self): u""" Registrierung des Plugins. Tastenkombinationen und andere Initialisierungen sollten durchgeführt werden. """ # ein Aktionsmenüeintrag, der "keybinding" an die Aktion ":action" bindet settings.set(u'org_tag_column', u'77') settings.set(u'org_tag_completion_ignorecase', int(vim.eval(u' &ignorecase'))) self.keybindings.append(Keybinding(u' st', Plug(u'OrgSetTags', u':py ORGMODE.plugins[u"TagsProperties"].set_tags() '))) self.menu + ActionEntry(u'Set &Tags', self.keybindings[-1]) self.commands.append(Command(u'OrgTagsRealign', u":py ORGMODE.plugins[u'TagsProperties'].realign_all_tags()")) # Problemumgehung zum Ausrichten von Tags, wenn der Benutzer den Einfügemodus verlässt vim.command(u"""function Org_complete_tags(ArgLead, CmdLine, CursorPos) python :py ORGMODE.plugins[u'TagsProperties'].realign_tags()".encode(u'utf -8')) # dies ist für die aktuelle Datei vim.command(u"au orgmode InsertLeave :py ORGMODE.plugins[u'TagsProperties'].realign_tags()".encode(u'utf-8')) ftplugin/ orgmode/plugins/Date.py [[[1 260 # -*- Kodierung: utf-8 -*- Import re von datetime import timedelta, date, datetime import vim from orgmode import ORGMODE, sett ings, echom, insert_at_cursor, get_user_input from orgmode.keybinding import Keybinding, Plug from orgmode.menu import Untermenü, ActionEntry-Klasse Date(object): u""" Behandelt alle datums- und zeitstempelbezogenen Aufgaben. TODO: Funktionalität erweitern (Kalender, Wiederholungen, Bereiche). Siehe http://orgmode.org/guide/Dates-and-Times.html#Dates-and-Times """ date_regex = r"dddd-dd-dd" datetime_regex = r"[AZ]ww dddd-dd-dd dd:dd>" month_mapping = def __init__(self): u""" Plugin """ Objekt initialisieren.__init__(self) # Menüeinträge dieses Plugin soll erstellen self.menu = ORGMODE.orgmenu + Submenu(u'Dates and Scheduling') # Tastenbelegung dafür Plugin # Tastenzuordnungen werden auch über das Menü registriert, daher sollten nur zusätzliche # Zuweisungen in diese Variable eingefügt werden self.keybindings = [] # Befehle für dieses Plugin self.commands = [] # Speeddating Format einstellen, das mit Orgmode kompatibel ist try: if int(vim.eval(u'exists(":SpeedDatingFormat")'.encode(u'utf-8'))): vim.command(u':1SpeedDatingFormat %Y-%m-%d %a'.encode (u'utf-8')) vim.command(u':1SpeedDatingFormat %Y-%m-%d %a %H:%M'.encode(u'utf-8')) else: echom(u' Speeddating-Plugin nicht installiert. Bitte installieren.') außer: echom(u'Speeddating-Plugin nicht installiert. Bitte installieren.') @classmethod def _modify_time(cls, startdate, modifier): u"""Ändere das angegebene Startdatum entsprechend Modifikator. Geben Sie das neue Datum oder die neue Datumszeit zurück. Siehe http://orgmode.org/manual/The-date_002ftime-prompt.html """ i f modifier is None or modifier == '' or modifier == '.': return startdate # rm crap from modifier modifier = modifier.strip() # check real date date_regex = r"(dddd) -(dd)-(dd)" match = re.search(date_regex, modifier) ​​if match: year, month, day = match.groups() newdate = date(int(year), int( Monat), int(Tag)) # Check abgekürztes Datum, getrennt mit '-' date_regex = u"(d<1,2>)-(d+)-(d+)" match = re.search(date_regex, Modifikator) bei Übereinstimmung: Jahr, Monat, Tag = match.groups() newdate = date(2000 + int(year), int(month), int(day)) # Check abgekürztes Datum, getrennt durch '/' # Monat/ Tag date_regex = u"(d<1,2>)/(d<1,2>)" match = re.search(date_regex, modifier) ​​if match: month, day = match.groups() newdate = date (startdate.year, int(month), int(day)) # Datum sollte immer in der Zukunft liegen if newdate 2009 9 12 date_regex = u"(www) (d<1,2>) ( d<1,2>)" match = re.search(date_regex, modifier) ​​if match: gr = match.groups() day = int(gr[1]) month = int(cls.month_mapping[gr[0] ]) Jahr = 2 000 + int(gr[2]) newdate = date(year, int(month), int(day)) # Tage als ganze Zahlen prüfen date_regex = u"^(d<1,2>)$" match = re. search(date_regex, modifier) ​​if match: newday, = match.groups() newday = int(newday) if newday > startdate.day: newdate = date(startdate.year, startdate.month, newday) else: # TODO: DIRTY , behebe dies # dies deckt NICHT alle Randfälle ab newdate = startdate + timedelta(days=28) newdate = date(newdate.year, newdate.month, newday) # auf volle Tage prüfen: Mo, Di, Mi, Do, Fr , Sa, So modifier_lc = modifier.lower() match = re.search(u'mon|tue|wed|dhu|fri|sa|sun', modifier_lc) if match: weekday_mapping = diff = (weekday_mapping[modifier_lc] - startdate.weekday()) % 7 # Verwenden Sie den Wochentag der nächsten Woche, wenn der aktuelle Wochentag mit dem Modifikator identisch ist if diff == 0: diff = 7 newdate = startdate + timedelta(days=diff) # check for days Modifier mit angehängtem d match = re.search(u'+(d*)d', modifier) ​​if match: days = int(match.groups()[0]) newdate = startdate + timedelta(days= Tage) # auf Tage-Modifizierer ohne angehängtes d-Match prüfen = re.search(u'+(d*) |+(d*)


          Schau das Video: Tibia. Knight level 103 skills 109104 mass PK Smoked (Januar 2022).