Add syntax highlighting for code blocks
diff --git a/docs/field_presence.md b/docs/field_presence.md
index b208c95..7c0e7bf 100644
--- a/docs/field_presence.md
+++ b/docs/field_presence.md
@@ -66,7 +66,7 @@
Similar to singular fields, `oneof` fields explicitly track which one of the members, if any, contains a value. For example, consider this example `oneof`:
-```
+```protobuf
oneof foo {
int32 a = 1;
float b = 2;
@@ -144,7 +144,7 @@
Client A uses this definition of the message, which follows the _explicit presence_ serialization discipline for field `foo`:
-```
+```protobuf
syntax = "proto3";
message Msg {
optional int32 foo = 1;
@@ -153,7 +153,7 @@
Client B uses a definition of the same message, except that it follows the _no presence_ discipline:
-```
+```protobuf
syntax = "proto3";
message Msg {
int32 foo = 1;
@@ -162,7 +162,7 @@
Now, consider a scenario where client A observes `foo`'s presence as the clients repeatedly exchange the "same" message by deserializing and reserializing:
-```
+```protobuf
// Client A:
Msg m_a;
m_a.set_foo(1); // non-default value
@@ -208,7 +208,7 @@
This is an example of a proto3 message with fields which follow both _no presence_ and _explicit presence_ semantics:
-```
+```protobuf
syntax = "proto3";
package example;
@@ -231,7 +231,7 @@
This is the definition used in the "no presence" examples below:
-```
+```protobuf
syntax = "proto3";
package example;
message Msg {
@@ -241,7 +241,7 @@
This is the definition used in the "explicit presence" examples below:
-```
+```protobuf
syntax = "proto3";
package example;
message Msg {
@@ -255,7 +255,7 @@
No presence:
-```
+```C++
Msg m = GetProto();
if (m.foo() != 0) {
// "Clear" the field:
@@ -268,7 +268,7 @@
Explicit presence:
-```
+```C++
Msg m = GetProto();
if (m.has_foo()) {
// Clear the field:
@@ -283,7 +283,7 @@
No presence:
-```
+```C#
var m = GetProto();
if (m.Foo != 0) {
// "Clear" the field:
@@ -296,7 +296,7 @@
Explicit presence:
-```
+```C#
var m = GetProto();
if (m.HasFoo) {
// Clear the field:
@@ -311,7 +311,7 @@
No presence:
-```
+```go
m := GetProto()
if m.Foo != 0 {
// "Clear" the field:
@@ -324,7 +324,7 @@
Explicit presence:
-```
+```go
m := GetProto()
if m.Foo != nil {
// Clear the field:
@@ -341,7 +341,7 @@
No presence:
-```
+```java
Msg.Builder m = GetProto().toBuilder();
if (m.getFoo() != 0) {
// "Clear" the field:
@@ -354,7 +354,7 @@
Explicit presence:
-```
+```java
Msg.Builder m = GetProto().toBuilder();
if (m.hasFoo()) {
// Clear the field:
@@ -369,7 +369,7 @@
No presence:
-```
+```python
m = example.Msg()
if m.foo != 0:
// "Clear" the field:
@@ -381,7 +381,7 @@
Explicit presence:
-```
+```python
m = example.Msg()
if m.HasField('foo'):
// Clear the field:
@@ -395,7 +395,7 @@
No presence:
-```
+```ruby
m = Msg.new
if m.foo != 0
// "Clear" the field:
@@ -408,7 +408,7 @@
Explicit presence:
-```
+```ruby
m = Msg.new
if m.has_foo?
// Clear the field:
@@ -423,7 +423,7 @@
No presence:
-```
+```js
var m = new Msg();
if (m.getFoo() != 0) {
// "Clear" the field:
@@ -436,7 +436,7 @@
Explicit presence:
-```
+```js
var m = new Msg();
if (m.hasFoo()) {
// Clear the field:
@@ -451,7 +451,7 @@
No presence:
-```
+```Objective-C
Msg *m = [[Msg alloc] init];
if (m.foo != 0) {
// "Clear" the field:
@@ -464,7 +464,7 @@
Explicit presence:
-```
+```Objective-C
Msg *m = [[Msg alloc] init];
if (m.hasFoo()) {
// Clear the field: